gooderp18绿色标准版
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

132 行
4.8KB

  1. # Part of Odoo. See LICENSE file for full copyright and licensing details.
  2. """
  3. In ubuntu noble, some timezone where removed leading to errors when trying to assign/access them.
  4. This was partially fixed in the code by removing all references to old timezones but one issue remains:
  5. if a database contains timezones that are not defined in the os, the resolution will fail and break
  6. at runtime.
  7. This patches proposes to alter timezone to fallback on the new canonical timezone if the timezone was removed.
  8. This list was generated by checking all symlink in /usr/share/zoneinfo in ubuntu 22.04 that disapeared in ubuntu 24.04
  9. This solutions will work when moving a database from one server to another, even without migration.
  10. This list could be improved for other purposes.
  11. """
  12. import pytz
  13. _tz_mapping = {
  14. "Africa/Asmera": "Africa/Nairobi",
  15. "America/Argentina/ComodRivadavia": "America/Argentina/Catamarca",
  16. "America/Buenos_Aires": "America/Argentina/Buenos_Aires",
  17. "America/Cordoba": "America/Argentina/Cordoba",
  18. "America/Fort_Wayne": "America/Indiana/Indianapolis",
  19. "America/Indianapolis": "America/Indiana/Indianapolis",
  20. "America/Jujuy": "America/Argentina/Jujuy",
  21. "America/Knox_IN": "America/Indiana/Knox",
  22. "America/Louisville": "America/Kentucky/Louisville",
  23. "America/Mendoza": "America/Argentina/Mendoza",
  24. "America/Rosario": "America/Argentina/Cordoba",
  25. "Antarctica/South_Pole": "Pacific/Auckland",
  26. "Asia/Ashkhabad": "Asia/Ashgabat",
  27. "Asia/Calcutta": "Asia/Kolkata",
  28. "Asia/Chungking": "Asia/Shanghai",
  29. "Asia/Dacca": "Asia/Dhaka",
  30. "Asia/Katmandu": "Asia/Kathmandu",
  31. "Asia/Macao": "Asia/Macau",
  32. "Asia/Rangoon": "Asia/Yangon",
  33. "Asia/Saigon": "Asia/Ho_Chi_Minh",
  34. "Asia/Thimbu": "Asia/Thimphu",
  35. "Asia/Ujung_Pandang": "Asia/Makassar",
  36. "Asia/Ulan_Bator": "Asia/Ulaanbaatar",
  37. "Atlantic/Faeroe": "Atlantic/Faroe",
  38. "Australia/ACT": "Australia/Sydney",
  39. "Australia/LHI": "Australia/Lord_Howe",
  40. "Australia/North": "Australia/Darwin",
  41. "Australia/NSW": "Australia/Sydney",
  42. "Australia/Queensland": "Australia/Brisbane",
  43. "Australia/South": "Australia/Adelaide",
  44. "Australia/Tasmania": "Australia/Hobart",
  45. "Australia/Victoria": "Australia/Melbourne",
  46. "Australia/West": "Australia/Perth",
  47. "Brazil/Acre": "America/Rio_Branco",
  48. "Brazil/DeNoronha": "America/Noronha",
  49. "Brazil/East": "America/Sao_Paulo",
  50. "Brazil/West": "America/Manaus",
  51. "Canada/Atlantic": "America/Halifax",
  52. "Canada/Central": "America/Winnipeg",
  53. "Canada/Eastern": "America/Toronto",
  54. "Canada/Mountain": "America/Edmonton",
  55. "Canada/Newfoundland": "America/St_Johns",
  56. "Canada/Pacific": "America/Vancouver",
  57. "Canada/Saskatchewan": "America/Regina",
  58. "Canada/Yukon": "America/Whitehorse",
  59. "Chile/Continental": "America/Santiago",
  60. "Chile/EasterIsland": "Pacific/Easter",
  61. "Cuba": "America/Havana",
  62. "Egypt": "Africa/Cairo",
  63. "Eire": "Europe/Dublin",
  64. "Europe/Kiev": "Europe/Kyiv",
  65. "Europe/Uzhgorod": "Europe/Kyiv",
  66. "Europe/Zaporozhye": "Europe/Kyiv",
  67. "GB": "Europe/London",
  68. "GB-Eire": "Europe/London",
  69. "GMT+0": "Etc/GMT",
  70. "GMT-0": "Etc/GMT",
  71. "GMT0": "Etc/GMT",
  72. "Greenwich": "Etc/GMT",
  73. "Hongkong": "Asia/Hong_Kong",
  74. "Iceland": "Africa/Abidjan",
  75. "Iran": "Asia/Tehran",
  76. "Israel": "Asia/Jerusalem",
  77. "Jamaica": "America/Jamaica",
  78. "Japan": "Asia/Tokyo",
  79. "Kwajalein": "Pacific/Kwajalein",
  80. "Libya": "Africa/Tripoli",
  81. "Mexico/BajaNorte": "America/Tijuana",
  82. "Mexico/BajaSur": "America/Mazatlan",
  83. "Mexico/General": "America/Mexico_City",
  84. "Navajo": "America/Denver",
  85. "NZ": "Pacific/Auckland",
  86. "NZ-CHAT": "Pacific/Chatham",
  87. "Pacific/Enderbury": "Pacific/Kanton",
  88. "Pacific/Ponape": "Pacific/Guadalcanal",
  89. "Pacific/Truk": "Pacific/Port_Moresby",
  90. "Poland": "Europe/Warsaw",
  91. "Portugal": "Europe/Lisbon",
  92. "PRC": "Asia/Shanghai",
  93. "ROC": "Asia/Taipei",
  94. "ROK": "Asia/Seoul",
  95. "Singapore": "Asia/Singapore",
  96. "Türkiye": "Europe/Istanbul",
  97. "UCT": "Etc/UTC",
  98. "Universal": "Etc/UTC",
  99. "US/Alaska": "America/Anchorage",
  100. "US/Aleutian": "America/Adak",
  101. "US/Arizona": "America/Phoenix",
  102. "US/Central": "America/Chicago",
  103. "US/Eastern": "America/New_York",
  104. "US/East-Indiana": "America/Indiana/Indianapolis",
  105. "US/Hawaii": "Pacific/Honolulu",
  106. "US/Indiana-Starke": "America/Indiana/Knox",
  107. "US/Michigan": "America/Detroit",
  108. "US/Mountain": "America/Denver",
  109. "US/Pacific": "America/Los_Angeles",
  110. "US/Samoa": "Pacific/Pago_Pago",
  111. "W-SU": "Europe/Moscow",
  112. "Zulu": "Etc/UTC",
  113. }
  114. original_pytz_timezone = pytz.timezone
  115. def patch_pytz():
  116. def timezone(name):
  117. if name not in pytz.all_timezones_set and name in _tz_mapping:
  118. name = _tz_mapping[name]
  119. return original_pytz_timezone(name)
  120. pytz.timezone = timezone
上海开阖软件有限公司 沪ICP备12045867号-1