Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
d7256abe
提交
d7256abe
authored
12月 09, 2024
作者:
刘擎阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.增加附件识别
上级
51805629
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
702 行增加
和
3 行删除
+702
-3
common_common.py
ccs_base/models/common_common.py
+597
-0
fetch_mail.py
ccs_base/models/fetch_mail.py
+20
-2
order_state_change_rule.py
ccs_base/models/order_state_change_rule.py
+85
-1
没有找到文件。
ccs_base/models/common_common.py
浏览文件 @
d7256abe
...
...
@@ -29,3 +29,599 @@ class CommonCommon(models.Model):
:return:
"""
return
r
def
init_timezone_data
(
self
,
name
):
timezone_data
=
{}
timezone_data
[
'Africa/Abidjan'
]
=
0
timezone_data
[
'Africa/Accra'
]
=
0
timezone_data
[
'Africa/Addis_Ababa'
]
=
3
timezone_data
[
'Africa/Algiers'
]
=
1
timezone_data
[
'Africa/Asmara'
]
=
3
timezone_data
[
'Africa/Asmera'
]
=
3
timezone_data
[
'Africa/Bamako'
]
=
0
timezone_data
[
'Africa/Bangui'
]
=
1
timezone_data
[
'Africa/Banjul'
]
=
0
timezone_data
[
'Africa/Bissau'
]
=
0
timezone_data
[
'Africa/Blantyre'
]
=
2
timezone_data
[
'Africa/Brazzaville'
]
=
1
timezone_data
[
'Africa/Bujumbura'
]
=
2
timezone_data
[
'Africa/Cairo'
]
=
2
timezone_data
[
'Africa/Casablanca'
]
=
1
timezone_data
[
'Africa/Ceuta'
]
=
2
timezone_data
[
'Africa/Conakry'
]
=
0
timezone_data
[
'Africa/Dakar'
]
=
0
timezone_data
[
'Africa/Dar_es_Salaam'
]
=
3
timezone_data
[
'Africa/Djibouti'
]
=
3
timezone_data
[
'Africa/Douala'
]
=
1
timezone_data
[
'Africa/El_Aaiun'
]
=
1
timezone_data
[
'Africa/Freetown'
]
=
0
timezone_data
[
'Africa/Gaborone'
]
=
2
timezone_data
[
'Africa/Harare'
]
=
2
timezone_data
[
'Africa/Johannesburg'
]
=
2
timezone_data
[
'Africa/Juba'
]
=
3
timezone_data
[
'Africa/Kampala'
]
=
3
timezone_data
[
'Africa/Khartoum'
]
=
2
timezone_data
[
'Africa/Kigali'
]
=
2
timezone_data
[
'Africa/Kinshasa'
]
=
1
timezone_data
[
'Africa/Lagos'
]
=
1
timezone_data
[
'Africa/Libreville'
]
=
1
timezone_data
[
'Africa/Lome'
]
=
0
timezone_data
[
'Africa/Luanda'
]
=
1
timezone_data
[
'Africa/Lubumbashi'
]
=
2
timezone_data
[
'Africa/Lusaka'
]
=
2
timezone_data
[
'Africa/Malabo'
]
=
1
timezone_data
[
'Africa/Maputo'
]
=
2
timezone_data
[
'Africa/Maseru'
]
=
2
timezone_data
[
'Africa/Mbabane'
]
=
2
timezone_data
[
'Africa/Mogadishu'
]
=
3
timezone_data
[
'Africa/Monrovia'
]
=
0
timezone_data
[
'Africa/Nairobi'
]
=
3
timezone_data
[
'Africa/Ndjamena'
]
=
1
timezone_data
[
'Africa/Niamey'
]
=
1
timezone_data
[
'Africa/Nouakchott'
]
=
0
timezone_data
[
'Africa/Ouagadougou'
]
=
0
timezone_data
[
'Africa/Porto-Novo'
]
=
1
timezone_data
[
'Africa/Sao_Tome'
]
=
0
timezone_data
[
'Africa/Timbuktu'
]
=
0
timezone_data
[
'Africa/Tripoli'
]
=
2
timezone_data
[
'Africa/Tunis'
]
=
1
timezone_data
[
'Africa/Windhoek'
]
=
2
timezone_data
[
'America/Adak'
]
=
-
9
timezone_data
[
'America/Anchorage'
]
=
-
8
timezone_data
[
'America/Anguilla'
]
=
-
4
timezone_data
[
'America/Antigua'
]
=
-
4
timezone_data
[
'America/Araguaina'
]
=
-
3
timezone_data
[
'America/Argentina/Buenos_Aires'
]
=
-
3
timezone_data
[
'America/Argentina/Catamarca'
]
=
-
3
timezone_data
[
'America/Argentina/ComodRivadavia'
]
=
-
3
timezone_data
[
'America/Argentina/Cordoba'
]
=
-
3
timezone_data
[
'America/Argentina/Jujuy'
]
=
-
3
timezone_data
[
'America/Argentina/La_Rioja'
]
=
-
3
timezone_data
[
'America/Argentina/Mendoza'
]
=
-
3
timezone_data
[
'America/Argentina/Rio_Gallegos'
]
=
-
3
timezone_data
[
'America/Argentina/Salta'
]
=
-
3
timezone_data
[
'America/Argentina/San_Juan'
]
=
-
3
timezone_data
[
'America/Argentina/San_Luis'
]
=
-
3
timezone_data
[
'America/Argentina/Tucuman'
]
=
-
3
timezone_data
[
'America/Argentina/Ushuaia'
]
=
-
3
timezone_data
[
'America/Aruba'
]
=
-
4
timezone_data
[
'America/Asuncion'
]
=
-
4
timezone_data
[
'America/Atikokan'
]
=
-
5
timezone_data
[
'America/Atka'
]
=
-
9
timezone_data
[
'America/Bahia'
]
=
-
3
timezone_data
[
'America/Bahia_Banderas'
]
=
-
5
timezone_data
[
'America/Barbados'
]
=
-
4
timezone_data
[
'America/Belem'
]
=
-
3
timezone_data
[
'America/Belize'
]
=
-
6
timezone_data
[
'America/Blanc-Sablon'
]
=
-
4
timezone_data
[
'America/Boa_Vista'
]
=
-
4
timezone_data
[
'America/Bogota'
]
=
-
5
timezone_data
[
'America/Boise'
]
=
-
6
timezone_data
[
'America/Buenos_Aires'
]
=
-
3
timezone_data
[
'America/Cambridge_Bay'
]
=
-
6
timezone_data
[
'America/Campo_Grande'
]
=
-
4
timezone_data
[
'America/Cancun'
]
=
-
5
timezone_data
[
'America/Caracas'
]
=
-
4
timezone_data
[
'America/Catamarca'
]
=
-
3
timezone_data
[
'America/Cayenne'
]
=
-
3
timezone_data
[
'America/Cayman'
]
=
-
5
timezone_data
[
'America/Chicago'
]
=
-
5
timezone_data
[
'America/Chihuahua'
]
=
-
6
timezone_data
[
'America/Coral_Harbour'
]
=
-
5
timezone_data
[
'America/Cordoba'
]
=
-
3
timezone_data
[
'America/Costa_Rica'
]
=
-
6
timezone_data
[
'America/Creston'
]
=
-
7
timezone_data
[
'America/Cuiaba'
]
=
-
4
timezone_data
[
'America/Curacao'
]
=
-
4
timezone_data
[
'America/Danmarkshavn'
]
=
0
timezone_data
[
'America/Dawson'
]
=
-
7
timezone_data
[
'America/Dawson_Creek'
]
=
-
7
timezone_data
[
'America/Denver'
]
=
-
6
timezone_data
[
'America/Detroit'
]
=
-
4
timezone_data
[
'America/Dominica'
]
=
-
4
timezone_data
[
'America/Edmonton'
]
=
-
6
timezone_data
[
'America/Eirunepe'
]
=
-
5
timezone_data
[
'America/El_Salvador'
]
=
-
6
timezone_data
[
'America/Ensenada'
]
=
-
7
timezone_data
[
'America/Fort_Nelson'
]
=
-
7
timezone_data
[
'America/Fort_Wayne'
]
=
-
4
timezone_data
[
'America/Fortaleza'
]
=
-
3
timezone_data
[
'America/Glace_Bay'
]
=
-
3
timezone_data
[
'America/Godthab'
]
=
-
2
timezone_data
[
'America/Goose_Bay'
]
=
-
3
timezone_data
[
'America/Grand_Turk'
]
=
-
4
timezone_data
[
'America/Grenada'
]
=
-
4
timezone_data
[
'America/Guadeloupe'
]
=
-
4
timezone_data
[
'America/Guatemala'
]
=
-
6
timezone_data
[
'America/Guayaquil'
]
=
-
5
timezone_data
[
'America/Guyana'
]
=
-
4
timezone_data
[
'America/Halifax'
]
=
-
3
timezone_data
[
'America/Havana'
]
=
-
4
timezone_data
[
'America/Hermosillo'
]
=
-
7
timezone_data
[
'America/Indiana/Indianapolis'
]
=
-
4
timezone_data
[
'America/Indiana/Knox'
]
=
-
5
timezone_data
[
'America/Indiana/Marengo'
]
=
-
4
timezone_data
[
'America/Indiana/Petersburg'
]
=
-
4
timezone_data
[
'America/Indiana/Tell_City'
]
=
-
5
timezone_data
[
'America/Indiana/Vevay'
]
=
-
4
timezone_data
[
'America/Indiana/Vincennes'
]
=
-
4
timezone_data
[
'America/Indiana/Winamac'
]
=
-
4
timezone_data
[
'America/Indianapolis'
]
=
-
4
timezone_data
[
'America/Inuvik'
]
=
-
6
timezone_data
[
'America/Iqaluit'
]
=
-
4
timezone_data
[
'America/Jamaica'
]
=
-
5
timezone_data
[
'America/Jujuy'
]
=
-
3
timezone_data
[
'America/Juneau'
]
=
-
8
timezone_data
[
'America/Kentucky/Louisville'
]
=
-
4
timezone_data
[
'America/Kentucky/Monticello'
]
=
-
4
timezone_data
[
'America/Knox_IN'
]
=
-
5
timezone_data
[
'America/Kralendijk'
]
=
-
4
timezone_data
[
'America/La_Paz'
]
=
-
4
timezone_data
[
'America/Lima'
]
=
-
5
timezone_data
[
'America/Los_Angeles'
]
=
-
7
timezone_data
[
'America/Louisville'
]
=
-
4
timezone_data
[
'America/Lower_Princes'
]
=
-
4
timezone_data
[
'America/Maceio'
]
=
-
3
timezone_data
[
'America/Managua'
]
=
-
6
timezone_data
[
'America/Manaus'
]
=
-
4
timezone_data
[
'America/Marigot'
]
=
-
4
timezone_data
[
'America/Martinique'
]
=
-
4
timezone_data
[
'America/Matamoros'
]
=
-
5
timezone_data
[
'America/Mazatlan'
]
=
-
6
timezone_data
[
'America/Mendoza'
]
=
-
3
timezone_data
[
'America/Menominee'
]
=
-
5
timezone_data
[
'America/Merida'
]
=
-
5
timezone_data
[
'America/Metlakatla'
]
=
-
8
timezone_data
[
'America/Mexico_City'
]
=
-
5
timezone_data
[
'America/Miquelon'
]
=
-
2
timezone_data
[
'America/Moncton'
]
=
-
3
timezone_data
[
'America/Monterrey'
]
=
-
5
timezone_data
[
'America/Montevideo'
]
=
-
3
timezone_data
[
'America/Montreal'
]
=
-
4
timezone_data
[
'America/Montserrat'
]
=
-
4
timezone_data
[
'America/Nassau'
]
=
-
4
timezone_data
[
'America/New_York'
]
=
-
4
timezone_data
[
'America/Nipigon'
]
=
-
4
timezone_data
[
'America/Nome'
]
=
-
8
timezone_data
[
'America/Noronha'
]
=
-
2
timezone_data
[
'America/North_Dakota/Beulah'
]
=
-
5
timezone_data
[
'America/North_Dakota/Center'
]
=
-
5
timezone_data
[
'America/North_Dakota/New_Salem'
]
=
-
5
timezone_data
[
'America/Ojinaga'
]
=
-
6
timezone_data
[
'America/Panama'
]
=
-
5
timezone_data
[
'America/Pangnirtung'
]
=
-
4
timezone_data
[
'America/Paramaribo'
]
=
-
3
timezone_data
[
'America/Phoenix'
]
=
-
7
timezone_data
[
'America/Port-au-Prince'
]
=
-
4
timezone_data
[
'America/Port_of_Spain'
]
=
-
4
timezone_data
[
'America/Porto_Acre'
]
=
-
5
timezone_data
[
'America/Porto_Velho'
]
=
-
4
timezone_data
[
'America/Puerto_Rico'
]
=
-
4
timezone_data
[
'America/Punta_Arenas'
]
=
-
3
timezone_data
[
'America/Rainy_River'
]
=
-
5
timezone_data
[
'America/Rankin_Inlet'
]
=
-
5
timezone_data
[
'America/Recife'
]
=
-
3
timezone_data
[
'America/Regina'
]
=
-
6
timezone_data
[
'America/Resolute'
]
=
-
5
timezone_data
[
'America/Rio_Branco'
]
=
-
5
timezone_data
[
'America/Rosario'
]
=
-
3
timezone_data
[
'America/Santa_Isabel'
]
=
-
7
timezone_data
[
'America/Santarem'
]
=
-
3
timezone_data
[
'America/Santiago'
]
=
-
3
timezone_data
[
'America/Santo_Domingo'
]
=
-
4
timezone_data
[
'America/Sao_Paulo'
]
=
-
3
timezone_data
[
'America/Scoresbysund'
]
=
0
timezone_data
[
'America/Shiprock'
]
=
-
6
timezone_data
[
'America/Sitka'
]
=
-
8
timezone_data
[
'America/St_Barthelemy'
]
=
-
4
timezone_data
[
'America/St_Johns'
]
=
-
3
timezone_data
[
'America/St_Kitts'
]
=
-
4
timezone_data
[
'America/St_Lucia'
]
=
-
4
timezone_data
[
'America/St_Thomas'
]
=
-
4
timezone_data
[
'America/St_Vincent'
]
=
-
4
timezone_data
[
'America/Swift_Current'
]
=
-
6
timezone_data
[
'America/Tegucigalpa'
]
=
-
6
timezone_data
[
'America/Thule'
]
=
-
3
timezone_data
[
'America/Thunder_Bay'
]
=
-
4
timezone_data
[
'America/Tijuana'
]
=
-
7
timezone_data
[
'America/Toronto'
]
=
-
4
timezone_data
[
'America/Tortola'
]
=
-
4
timezone_data
[
'America/Vancouver'
]
=
-
7
timezone_data
[
'America/Virgin'
]
=
-
4
timezone_data
[
'America/Whitehorse'
]
=
-
7
timezone_data
[
'America/Winnipeg'
]
=
-
5
timezone_data
[
'America/Yakutat'
]
=
-
8
timezone_data
[
'America/Yellowknife'
]
=
-
6
timezone_data
[
'Antarctica/Casey'
]
=
8
timezone_data
[
'Antarctica/Davis'
]
=
7
timezone_data
[
'Antarctica/DumontDUrville'
]
=
10
timezone_data
[
'Antarctica/Macquarie'
]
=
11
timezone_data
[
'Antarctica/Mawson'
]
=
5
timezone_data
[
'Antarctica/McMurdo'
]
=
12
timezone_data
[
'Antarctica/Palmer'
]
=
-
3
timezone_data
[
'Antarctica/Rothera'
]
=
-
3
timezone_data
[
'Antarctica/South_Pole'
]
=
12
timezone_data
[
'Antarctica/Syowa'
]
=
3
timezone_data
[
'Antarctica/Troll'
]
=
2
timezone_data
[
'Antarctica/Vostok'
]
=
6
timezone_data
[
'Arctic/Longyearbyen'
]
=
2
timezone_data
[
'Asia/Aden'
]
=
3
timezone_data
[
'Asia/Almaty'
]
=
6
timezone_data
[
'Asia/Amman'
]
=
3
timezone_data
[
'Asia/Anadyr'
]
=
12
timezone_data
[
'Asia/Aqtau'
]
=
5
timezone_data
[
'Asia/Aqtobe'
]
=
5
timezone_data
[
'Asia/Ashgabat'
]
=
5
timezone_data
[
'Asia/Ashkhabad'
]
=
5
timezone_data
[
'Asia/Atyrau'
]
=
5
timezone_data
[
'Asia/Baghdad'
]
=
3
timezone_data
[
'Asia/Bahrain'
]
=
3
timezone_data
[
'Asia/Baku'
]
=
4
timezone_data
[
'Asia/Bangkok'
]
=
7
timezone_data
[
'Asia/Barnaul'
]
=
7
timezone_data
[
'Asia/Beirut'
]
=
3
timezone_data
[
'Asia/Bishkek'
]
=
6
timezone_data
[
'Asia/Brunei'
]
=
8
timezone_data
[
'Asia/Calcutta'
]
=
5
timezone_data
[
'Asia/Chita'
]
=
9
timezone_data
[
'Asia/Choibalsan'
]
=
8
timezone_data
[
'Asia/Chongqing'
]
=
8
timezone_data
[
'Asia/Chungking'
]
=
8
timezone_data
[
'Asia/Colombo'
]
=
5
timezone_data
[
'Asia/Dacca'
]
=
6
timezone_data
[
'Asia/Damascus'
]
=
3
timezone_data
[
'Asia/Dhaka'
]
=
6
timezone_data
[
'Asia/Dili'
]
=
9
timezone_data
[
'Asia/Dubai'
]
=
4
timezone_data
[
'Asia/Dushanbe'
]
=
5
timezone_data
[
'Asia/Famagusta'
]
=
3
timezone_data
[
'Asia/Gaza'
]
=
3
timezone_data
[
'Asia/Harbin'
]
=
8
timezone_data
[
'Asia/Hebron'
]
=
3
timezone_data
[
'Asia/Ho_Chi_Minh'
]
=
7
timezone_data
[
'Asia/Hong_Kong'
]
=
8
timezone_data
[
'Asia/Hovd'
]
=
7
timezone_data
[
'Asia/Irkutsk'
]
=
8
timezone_data
[
'Asia/Istanbul'
]
=
3
timezone_data
[
'Asia/Jakarta'
]
=
7
timezone_data
[
'Asia/Jayapura'
]
=
9
timezone_data
[
'Asia/Jerusalem'
]
=
3
timezone_data
[
'Asia/Kabul'
]
=
4
timezone_data
[
'Asia/Kamchatka'
]
=
12
timezone_data
[
'Asia/Karachi'
]
=
5
timezone_data
[
'Asia/Kashgar'
]
=
6
timezone_data
[
'Asia/Kathmandu'
]
=
5
timezone_data
[
'Asia/Katmandu'
]
=
5
timezone_data
[
'Asia/Khandyga'
]
=
9
timezone_data
[
'Asia/Kolkata'
]
=
5
timezone_data
[
'Asia/Krasnoyarsk'
]
=
7
timezone_data
[
'Asia/Kuala_Lumpur'
]
=
8
timezone_data
[
'Asia/Kuching'
]
=
8
timezone_data
[
'Asia/Kuwait'
]
=
3
timezone_data
[
'Asia/Macao'
]
=
8
timezone_data
[
'Asia/Macau'
]
=
8
timezone_data
[
'Asia/Magadan'
]
=
11
timezone_data
[
'Asia/Makassar'
]
=
8
timezone_data
[
'Asia/Manila'
]
=
8
timezone_data
[
'Asia/Muscat'
]
=
4
timezone_data
[
'Asia/Nicosia'
]
=
3
timezone_data
[
'Asia/Novokuznetsk'
]
=
7
timezone_data
[
'Asia/Novosibirsk'
]
=
7
timezone_data
[
'Asia/Omsk'
]
=
6
timezone_data
[
'Asia/Oral'
]
=
5
timezone_data
[
'Asia/Phnom_Penh'
]
=
7
timezone_data
[
'Asia/Pontianak'
]
=
7
timezone_data
[
'Asia/Pyongyang'
]
=
9
timezone_data
[
'Asia/Qatar'
]
=
3
timezone_data
[
'Asia/Qostanay'
]
=
6
timezone_data
[
'Asia/Qyzylorda'
]
=
5
timezone_data
[
'Asia/Rangoon'
]
=
6
timezone_data
[
'Asia/Riyadh'
]
=
3
timezone_data
[
'Asia/Saigon'
]
=
7
timezone_data
[
'Asia/Sakhalin'
]
=
11
timezone_data
[
'Asia/Samarkand'
]
=
5
timezone_data
[
'Asia/Seoul'
]
=
9
timezone_data
[
'Asia/Shanghai'
]
=
8
timezone_data
[
'Asia/Singapore'
]
=
8
timezone_data
[
'Asia/Srednekolymsk'
]
=
11
timezone_data
[
'Asia/Taipei'
]
=
8
timezone_data
[
'Asia/Tashkent'
]
=
5
timezone_data
[
'Asia/Tbilisi'
]
=
4
timezone_data
[
'Asia/Tehran'
]
=
4
timezone_data
[
'Asia/Tel_Aviv'
]
=
3
timezone_data
[
'Asia/Thimbu'
]
=
6
timezone_data
[
'Asia/Thimphu'
]
=
6
timezone_data
[
'Asia/Tokyo'
]
=
9
timezone_data
[
'Asia/Tomsk'
]
=
7
timezone_data
[
'Asia/Ujung_Pandang'
]
=
8
timezone_data
[
'Asia/Ulaanbaatar'
]
=
8
timezone_data
[
'Asia/Ulan_Bator'
]
=
8
timezone_data
[
'Asia/Urumqi'
]
=
6
timezone_data
[
'Asia/Ust-Nera'
]
=
10
timezone_data
[
'Asia/Vientiane'
]
=
7
timezone_data
[
'Asia/Vladivostok'
]
=
10
timezone_data
[
'Asia/Yakutsk'
]
=
9
timezone_data
[
'Asia/Yangon'
]
=
6
timezone_data
[
'Asia/Yekaterinburg'
]
=
5
timezone_data
[
'Asia/Yerevan'
]
=
4
timezone_data
[
'Atlantic/Azores'
]
=
0
timezone_data
[
'Atlantic/Bermuda'
]
=
-
3
timezone_data
[
'Atlantic/Canary'
]
=
1
timezone_data
[
'Atlantic/Cape_Verde'
]
=
-
1
timezone_data
[
'Atlantic/Faeroe'
]
=
1
timezone_data
[
'Atlantic/Faroe'
]
=
1
timezone_data
[
'Atlantic/Jan_Mayen'
]
=
2
timezone_data
[
'Atlantic/Madeira'
]
=
1
timezone_data
[
'Atlantic/Reykjavik'
]
=
0
timezone_data
[
'Atlantic/South_Georgia'
]
=
-
2
timezone_data
[
'Atlantic/St_Helena'
]
=
0
timezone_data
[
'Atlantic/Stanley'
]
=
-
3
timezone_data
[
'Australia/ACT'
]
=
10
timezone_data
[
'Australia/Adelaide'
]
=
9
timezone_data
[
'Australia/Brisbane'
]
=
10
timezone_data
[
'Australia/Broken_Hill'
]
=
9
timezone_data
[
'Australia/Canberra'
]
=
10
timezone_data
[
'Australia/Currie'
]
=
10
timezone_data
[
'Australia/Darwin'
]
=
9
timezone_data
[
'Australia/Eucla'
]
=
8
timezone_data
[
'Australia/Hobart'
]
=
10
timezone_data
[
'Australia/LHI'
]
=
10
timezone_data
[
'Australia/Lindeman'
]
=
10
timezone_data
[
'Australia/Lord_Howe'
]
=
10
timezone_data
[
'Australia/Melbourne'
]
=
10
timezone_data
[
'Australia/NSW'
]
=
10
timezone_data
[
'Australia/North'
]
=
9
timezone_data
[
'Australia/Perth'
]
=
8
timezone_data
[
'Australia/Queensland'
]
=
10
timezone_data
[
'Australia/South'
]
=
9
timezone_data
[
'Australia/Sydney'
]
=
10
timezone_data
[
'Australia/Tasmania'
]
=
10
timezone_data
[
'Australia/Victoria'
]
=
10
timezone_data
[
'Australia/West'
]
=
8
timezone_data
[
'Australia/Yancowinna'
]
=
9
timezone_data
[
'Brazil/Acre'
]
=
-
5
timezone_data
[
'Brazil/DeNoronha'
]
=
-
2
timezone_data
[
'Brazil/East'
]
=
-
3
timezone_data
[
'Brazil/West'
]
=
-
4
timezone_data
[
'CET'
]
=
2
timezone_data
[
'CST6CDT'
]
=
-
5
timezone_data
[
'Canada/Atlantic'
]
=
-
3
timezone_data
[
'Canada/Central'
]
=
-
5
timezone_data
[
'Canada/Eastern'
]
=
-
4
timezone_data
[
'Canada/Mountain'
]
=
-
6
timezone_data
[
'Canada/Newfoundland'
]
=
-
3
timezone_data
[
'Canada/Pacific'
]
=
-
7
timezone_data
[
'Canada/Saskatchewan'
]
=
-
6
timezone_data
[
'Canada/Yukon'
]
=
-
7
timezone_data
[
'Chile/Continental'
]
=
-
3
timezone_data
[
'Chile/EasterIsland'
]
=
-
5
timezone_data
[
'Cuba'
]
=
-
4
timezone_data
[
'EET'
]
=
3
timezone_data
[
'EST'
]
=
-
5
timezone_data
[
'EST5EDT'
]
=
-
4
timezone_data
[
'Egypt'
]
=
2
timezone_data
[
'Eire'
]
=
1
timezone_data
[
'Europe/Amsterdam'
]
=
2
timezone_data
[
'Europe/Andorra'
]
=
2
timezone_data
[
'Europe/Astrakhan'
]
=
4
timezone_data
[
'Europe/Athens'
]
=
3
timezone_data
[
'Europe/Belfast'
]
=
1
timezone_data
[
'Europe/Belgrade'
]
=
2
timezone_data
[
'Europe/Berlin'
]
=
2
timezone_data
[
'Europe/Bratislava'
]
=
2
timezone_data
[
'Europe/Brussels'
]
=
2
timezone_data
[
'Europe/Bucharest'
]
=
3
timezone_data
[
'Europe/Budapest'
]
=
2
timezone_data
[
'Europe/Busingen'
]
=
2
timezone_data
[
'Europe/Chisinau'
]
=
3
timezone_data
[
'Europe/Copenhagen'
]
=
2
timezone_data
[
'Europe/Dublin'
]
=
1
timezone_data
[
'Europe/Gibraltar'
]
=
2
timezone_data
[
'Europe/Guernsey'
]
=
1
timezone_data
[
'Europe/Helsinki'
]
=
3
timezone_data
[
'Europe/Isle_of_Man'
]
=
1
timezone_data
[
'Europe/Istanbul'
]
=
3
timezone_data
[
'Europe/Jersey'
]
=
1
timezone_data
[
'Europe/Kaliningrad'
]
=
2
timezone_data
[
'Europe/Kiev'
]
=
3
timezone_data
[
'Europe/Kirov'
]
=
3
timezone_data
[
'Europe/Lisbon'
]
=
1
timezone_data
[
'Europe/Ljubljana'
]
=
2
timezone_data
[
'Europe/London'
]
=
1
timezone_data
[
'Europe/Luxembourg'
]
=
2
timezone_data
[
'Europe/Madrid'
]
=
2
timezone_data
[
'Europe/Malta'
]
=
2
timezone_data
[
'Europe/Mariehamn'
]
=
3
timezone_data
[
'Europe/Minsk'
]
=
3
timezone_data
[
'Europe/Monaco'
]
=
2
timezone_data
[
'Europe/Moscow'
]
=
3
timezone_data
[
'Europe/Nicosia'
]
=
3
timezone_data
[
'Europe/Oslo'
]
=
2
timezone_data
[
'Europe/Paris'
]
=
2
timezone_data
[
'Europe/Podgorica'
]
=
2
timezone_data
[
'Europe/Prague'
]
=
2
timezone_data
[
'Europe/Riga'
]
=
3
timezone_data
[
'Europe/Rome'
]
=
2
timezone_data
[
'Europe/Samara'
]
=
4
timezone_data
[
'Europe/San_Marino'
]
=
2
timezone_data
[
'Europe/Sarajevo'
]
=
2
timezone_data
[
'Europe/Saratov'
]
=
4
timezone_data
[
'Europe/Simferopol'
]
=
3
timezone_data
[
'Europe/Skopje'
]
=
2
timezone_data
[
'Europe/Sofia'
]
=
3
timezone_data
[
'Europe/Stockholm'
]
=
2
timezone_data
[
'Europe/Tallinn'
]
=
3
timezone_data
[
'Europe/Tirane'
]
=
2
timezone_data
[
'Europe/Tiraspol'
]
=
3
timezone_data
[
'Europe/Ulyanovsk'
]
=
4
timezone_data
[
'Europe/Uzhgorod'
]
=
3
timezone_data
[
'Europe/Vaduz'
]
=
2
timezone_data
[
'Europe/Vatican'
]
=
2
timezone_data
[
'Europe/Vienna'
]
=
2
timezone_data
[
'Europe/Vilnius'
]
=
3
timezone_data
[
'Europe/Volgograd'
]
=
4
timezone_data
[
'Europe/Warsaw'
]
=
2
timezone_data
[
'Europe/Zagreb'
]
=
2
timezone_data
[
'Europe/Zaporozhye'
]
=
3
timezone_data
[
'Europe/Zurich'
]
=
2
timezone_data
[
'GB'
]
=
1
timezone_data
[
'GB-Eire'
]
=
1
timezone_data
[
'GMT'
]
=
0
timezone_data
[
'GMT+0'
]
=
0
timezone_data
[
'GMT-0'
]
=
0
timezone_data
[
'GMT0'
]
=
0
timezone_data
[
'Greenwich'
]
=
0
timezone_data
[
'HST'
]
=
-
10
timezone_data
[
'Hongkong'
]
=
8
timezone_data
[
'Iceland'
]
=
0
timezone_data
[
'Indian/Antananarivo'
]
=
3
timezone_data
[
'Indian/Chagos'
]
=
6
timezone_data
[
'Indian/Christmas'
]
=
7
timezone_data
[
'Indian/Cocos'
]
=
6
timezone_data
[
'Indian/Comoro'
]
=
3
timezone_data
[
'Indian/Kerguelen'
]
=
5
timezone_data
[
'Indian/Mahe'
]
=
4
timezone_data
[
'Indian/Maldives'
]
=
5
timezone_data
[
'Indian/Mauritius'
]
=
4
timezone_data
[
'Indian/Mayotte'
]
=
3
timezone_data
[
'Indian/Reunion'
]
=
4
timezone_data
[
'Iran'
]
=
4
timezone_data
[
'Israel'
]
=
3
timezone_data
[
'Jamaica'
]
=
-
5
timezone_data
[
'Japan'
]
=
9
timezone_data
[
'Kwajalein'
]
=
12
timezone_data
[
'Libya'
]
=
2
timezone_data
[
'MET'
]
=
2
timezone_data
[
'MST'
]
=
-
7
timezone_data
[
'MST7MDT'
]
=
-
6
timezone_data
[
'Mexico/BajaNorte'
]
=
-
7
timezone_data
[
'Mexico/BajaSur'
]
=
-
6
timezone_data
[
'Mexico/General'
]
=
-
5
timezone_data
[
'NZ'
]
=
12
timezone_data
[
'NZ-CHAT'
]
=
12
timezone_data
[
'Navajo'
]
=
-
6
timezone_data
[
'PRC'
]
=
8
timezone_data
[
'PST8PDT'
]
=
-
7
timezone_data
[
'Pacific/Apia'
]
=
13
timezone_data
[
'Pacific/Auckland'
]
=
12
timezone_data
[
'Pacific/Bougainville'
]
=
11
timezone_data
[
'Pacific/Chatham'
]
=
12
timezone_data
[
'Pacific/Chuuk'
]
=
10
timezone_data
[
'Pacific/Easter'
]
=
-
5
timezone_data
[
'Pacific/Efate'
]
=
11
timezone_data
[
'Pacific/Enderbury'
]
=
13
timezone_data
[
'Pacific/Fakaofo'
]
=
13
timezone_data
[
'Pacific/Fiji'
]
=
12
timezone_data
[
'Pacific/Funafuti'
]
=
12
timezone_data
[
'Pacific/Galapagos'
]
=
-
6
timezone_data
[
'Pacific/Gambier'
]
=
-
9
timezone_data
[
'Pacific/Guadalcanal'
]
=
11
timezone_data
[
'Pacific/Guam'
]
=
10
timezone_data
[
'Pacific/Honolulu'
]
=
-
10
timezone_data
[
'Pacific/Johnston'
]
=
-
10
timezone_data
[
'Pacific/Kiritimati'
]
=
14
timezone_data
[
'Pacific/Kosrae'
]
=
11
timezone_data
[
'Pacific/Kwajalein'
]
=
12
timezone_data
[
'Pacific/Majuro'
]
=
12
timezone_data
[
'Pacific/Marquesas'
]
=
-
10
timezone_data
[
'Pacific/Midway'
]
=
-
11
timezone_data
[
'Pacific/Nauru'
]
=
12
timezone_data
[
'Pacific/Niue'
]
=
-
11
timezone_data
[
'Pacific/Norfolk'
]
=
11
timezone_data
[
'Pacific/Noumea'
]
=
11
timezone_data
[
'Pacific/Pago_Pago'
]
=
-
11
timezone_data
[
'Pacific/Palau'
]
=
9
timezone_data
[
'Pacific/Pitcairn'
]
=
-
8
timezone_data
[
'Pacific/Pohnpei'
]
=
11
timezone_data
[
'Pacific/Ponape'
]
=
11
timezone_data
[
'Pacific/Port_Moresby'
]
=
10
timezone_data
[
'Pacific/Rarotonga'
]
=
-
10
timezone_data
[
'Pacific/Saipan'
]
=
10
timezone_data
[
'Pacific/Samoa'
]
=
-
11
timezone_data
[
'Pacific/Tahiti'
]
=
-
10
timezone_data
[
'Pacific/Tarawa'
]
=
12
timezone_data
[
'Pacific/Tongatapu'
]
=
13
timezone_data
[
'Pacific/Truk'
]
=
10
timezone_data
[
'Pacific/Wake'
]
=
12
timezone_data
[
'Pacific/Wallis'
]
=
12
timezone_data
[
'Pacific/Yap'
]
=
10
timezone_data
[
'Poland'
]
=
2
timezone_data
[
'Portugal'
]
=
1
timezone_data
[
'ROC'
]
=
8
timezone_data
[
'ROK'
]
=
9
timezone_data
[
'Singapore'
]
=
8
timezone_data
[
'Turkey'
]
=
3
timezone_data
[
'UCT'
]
=
0
timezone_data
[
'US/Alaska'
]
=
-
8
timezone_data
[
'US/Aleutian'
]
=
-
9
timezone_data
[
'US/Arizona'
]
=
-
7
timezone_data
[
'US/Central'
]
=
-
5
timezone_data
[
'US/East-Indiana'
]
=
-
4
timezone_data
[
'US/Eastern'
]
=
-
4
timezone_data
[
'US/Hawaii'
]
=
-
10
timezone_data
[
'US/Indiana-Starke'
]
=
-
5
timezone_data
[
'US/Michigan'
]
=
-
4
timezone_data
[
'US/Mountain'
]
=
-
6
timezone_data
[
'US/Pacific'
]
=
-
7
timezone_data
[
'US/Samoa'
]
=
-
11
timezone_data
[
'UTC'
]
=
0
timezone_data
[
'Universal'
]
=
0
timezone_data
[
'W-SU'
]
=
3
timezone_data
[
'WET'
]
=
1
timezone_data
[
'Zulu'
]
=
0
timezone_data
[
'Etc/GMT'
]
=
0
timezone_data
[
'Etc/GMT+0'
]
=
0
timezone_data
[
'Etc/GMT+1'
]
=
-
1
timezone_data
[
'Etc/GMT+10'
]
=
-
10
timezone_data
[
'Etc/GMT+11'
]
=
-
11
timezone_data
[
'Etc/GMT+12'
]
=
-
12
timezone_data
[
'Etc/GMT+2'
]
=
-
2
timezone_data
[
'Etc/GMT+3'
]
=
-
3
timezone_data
[
'Etc/GMT+4'
]
=
-
4
timezone_data
[
'Etc/GMT+5'
]
=
-
5
timezone_data
[
'Etc/GMT+6'
]
=
-
6
timezone_data
[
'Etc/GMT+7'
]
=
-
7
timezone_data
[
'Etc/GMT+8'
]
=
-
8
timezone_data
[
'Etc/GMT+9'
]
=
-
9
timezone_data
[
'Etc/GMT-0'
]
=
0
timezone_data
[
'Etc/GMT-1'
]
=
1
timezone_data
[
'Etc/GMT-10'
]
=
10
timezone_data
[
'Etc/GMT-11'
]
=
11
timezone_data
[
'Etc/GMT-12'
]
=
12
timezone_data
[
'Etc/GMT-13'
]
=
13
timezone_data
[
'Etc/GMT-14'
]
=
14
timezone_data
[
'Etc/GMT-2'
]
=
2
timezone_data
[
'Etc/GMT-3'
]
=
3
timezone_data
[
'Etc/GMT-4'
]
=
4
timezone_data
[
'Etc/GMT-5'
]
=
5
timezone_data
[
'Etc/GMT-6'
]
=
6
timezone_data
[
'Etc/GMT-7'
]
=
7
timezone_data
[
'Etc/GMT-8'
]
=
8
timezone_data
[
'Etc/GMT-9'
]
=
9
timezone_data
[
'Etc/GMT0'
]
=
0
timezone_data
[
'Etc/Greenwich'
]
=
0
timezone_data
[
'Etc/UCT'
]
=
0
timezone_data
[
'Etc/UTC'
]
=
0
timezone_data
[
'Etc/Universal'
]
=
0
timezone_data
[
'Etc/Zulu'
]
=
0
return
'+
%
s'
%
timezone_data
[
name
]
if
timezone_data
[
name
]
>
0
else
str
(
timezone_data
[
name
])
\ No newline at end of file
ccs_base/models/fetch_mail.py
浏览文件 @
d7256abe
...
...
@@ -8,6 +8,7 @@ from ssl import SSLError
from
socket
import
gaierror
,
timeout
from
imaplib
import
IMAP4
,
IMAP4_SSL
from
poplib
import
POP3
,
POP3_SSL
from
email.header
import
decode_header
import
email
from
odoo
import
api
,
fields
,
models
,
tools
,
_
from
odoo.exceptions
import
UserError
...
...
@@ -122,6 +123,20 @@ class FetchmailServer(models.Model):
if
a_time
>
before_now
:
hdr
,
sender_email
=
parseaddr
(
msg
.
get
(
'From'
))
# 获取发件人邮箱
email_body
=
''
attachment_arr
=
[]
if
msg
.
is_multipart
():
for
part
in
msg
.
walk
():
# 检查邮件每个部分的内容类型
content_disposition
=
str
(
part
.
get
(
"Content-Disposition"
))
if
"attachment"
in
content_disposition
:
# 获取附件的文件名
filename
=
part
.
get_filename
()
if
filename
:
# 解码文件名
filename
,
encoding
=
decode_header
(
filename
)[
0
]
if
isinstance
(
filename
,
bytes
):
filename
=
filename
.
decode
(
encoding
if
encoding
else
"utf-8"
)
attachment_arr
.
append
(
part
.
get_payload
(
decode
=
True
))
for
part
in
msg
.
walk
():
# 如果ture的话内容是没用的
if
not
part
.
is_multipart
():
...
...
@@ -129,8 +144,11 @@ class FetchmailServer(models.Model):
# email_body = part.get_payload(decode=True).decode('utf-8', 'ignore')
email_body
=
part
.
get_payload
(
decode
=
True
)
.
decode
(
'gbk'
,
'ignore'
)
break
if
email_body
:
if
'CDS REPORT'
in
subject
.
upper
():
if
'CDS REPORT'
in
subject
.
upper
():
if
attachment_arr
:
rule_obj
=
self
.
env
[
'order.state.change.rule'
]
.
sudo
()
rule_obj
.
fetch_mail_dlv_attachment
(
attachment_arr
=
attachment_arr
)
elif
email_body
:
rule_obj
=
self
.
env
[
'order.state.change.rule'
]
.
sudo
()
rule_obj
.
fetch_mail_dlv
(
email_body
=
email_body
,
year
=
year
)
imap_server
.
store
(
num
,
'-FLAGS'
,
'
\\
Seen'
)
...
...
ccs_base/models/order_state_change_rule.py
浏览文件 @
d7256abe
...
...
@@ -6,8 +6,11 @@ from odoo import models, fields, api, _
from
odoo.exceptions
import
ValidationError
,
Warning
import
logging
import
json
import
re
import
xlrd
import
base64
import
pdfplumber
import
demjson
from
io
import
BytesIO
from
datetime
import
datetime
,
timedelta
import
re
_logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -42,6 +45,51 @@ class OrderStateChangeRule(models.Model):
# regular_expression = fields.Char('正则表达式')
# active = fields.Boolean('有效性', default=True)
def
get_file_path
(
self
,
report_file_ids
):
"""
得到excel表格的内容
:return:
"""
report_path
=
report_file_ids
.
_full_path
(
report_file_ids
.
store_fname
)
try
:
if
report_file_ids
.
name
[
-
3
:]
==
'xls'
:
data
=
xlrd
.
open_workbook
(
report_path
,
formatting_info
=
True
)
elif
report_file_ids
.
name
[
-
3
:]
in
[
'pdf'
,
'PDF'
]:
data
=
pdfplumber
.
open
(
report_path
)
else
:
data
=
xlrd
.
open_workbook
(
report_path
)
except
Exception
as
e
:
logging
.
info
(
'解析错误
%
s'
%
str
(
e
))
f
=
open
(
report_path
,
'rb'
)
data
=
f
.
readlines
()
return
data
def
read_pdf
(
self
,
pdf_data
):
"""
:param pdf: pdf数据
:return:
"""
order_no
=
''
date_arr
=
[]
pdf_data
=
BytesIO
(
pdf_data
)
pdf
=
pdfplumber
.
open
(
pdf_data
)
for
page
in
pdf
.
pages
:
# 获取当前页面的全部文本信息,包括表格中的文字
text_p
=
page
.
extract_text
()
text_lines
=
text_p
.
split
(
'
\n
'
)
ze_2
=
re
.
compile
(
"
\\
d{3}-
\\
d{8,}"
)
pattern
=
r'\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}'
# date_obj = datetime.strptime(date_str, '%d/%m/%Y %H:%M:%S')
if
text_lines
:
for
line
in
text_lines
:
if
ze_2
.
findall
(
line
):
order_no
=
ze_2
.
findall
(
line
)[
0
]
matches
=
re
.
findall
(
pattern
,
line
)
if
matches
:
date_arr
=
matches
[
0
]
pdf
.
close
()
return
order_no
,
date_arr
# 函数处理输出
def
print_match
(
self
,
text
):
# 正则表达式
...
...
@@ -58,6 +106,42 @@ class OrderStateChangeRule(models.Model):
data_arr
=
data_re
.
findall
(
email_body
)
return
data_arr
def
upload_cds_attachment
(
self
,
bl_obj
,
data
):
file_obj
=
self
.
env
[
'cc.clearance.file'
]
.
sudo
()
.
search
([(
'file_name'
,
'='
,
'海关CDS申报单(import和授权方式检查拉齐等)'
),
(
'bl_id'
,
'='
,
bl_obj
.
id
)],
limit
=
1
)
file_obj
.
file
=
base64
.
encodebytes
(
data
)
file_obj
.
is_upload
=
False
file_obj
.
action_sync
()
def
fetch_mail_dlv_attachment
(
self
,
**
kwargs
):
attachment_arr
=
kwargs
[
'attachment_arr'
]
for
attachment
in
attachment_arr
:
try
:
order_no
,
date_str
=
self
.
read_pdf
(
attachment
)
if
order_no
:
# 转换为 datetime 对象
local_time
=
datetime
.
strptime
(
date_str
,
'
%
d/
%
m/
%
Y
%
H:
%
M:
%
S'
)
# 调整时区
users_obj
=
self
.
env
[
'res.users'
]
.
search
([(
'name'
,
'='
,
'邮件接收'
)],
limit
=
1
)
tz
=
users_obj
.
tz
or
'UTC'
timezone_offset
=
self
.
env
[
'common.common'
]
.
sudo
()
.
init_timezone_data
(
tz
)
utc_time
=
local_time
-
timedelta
(
hours
=
int
(
timezone_offset
))
sql
=
"select id from cc_bl where UPPER(REPLACE(REPLACE(REPLACE(bl_no, ' ', ''), '-', ''), '/', '')) = '{0}' order by create_date desc limit 1"
.
format
(
order_no
.
replace
(
' '
,
''
)
.
replace
(
'-'
,
''
)
.
replace
(
'/'
,
''
))
self
.
_cr
.
execute
(
sql
)
result
=
self
.
_cr
.
fetchall
()
bl_obj
=
self
.
env
[
'cc.bl'
]
.
sudo
()
.
search
([(
'id'
,
'='
,
result
[
0
][
0
])])
if
result
else
False
logging
.
info
(
'order_no:
%
s, bl_obj:
%
s'
%
(
order_no
,
bl_obj
))
if
bl_obj
:
self
.
upload_cds_attachment
(
bl_obj
,
attachment
)
if
bl_obj
and
bl_obj
.
state
!=
'done'
:
redis_conn
=
self
.
env
[
'common.common'
]
.
sudo
()
.
get_redis
()
if
redis_conn
==
'no'
:
raise
ValidationError
(
'未连接redis'
)
else
:
redis_conn
.
lpush
(
'mail_push_package_list'
,
json
.
dumps
({
'id'
:
bl_obj
.
id
,
'utc_time'
:
utc_time
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)}))
except
Exception
as
err
:
logging
.
error
(
'fetch_mail_dlv_attachment--error:
%
s'
%
str
(
err
))
def
fetch_mail_dlv
(
self
,
**
kwargs
):
email_body
=
kwargs
[
'email_body'
]
year
=
kwargs
[
'year'
]
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论