karrio-server-core 2025.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. karrio/server/conf.py +54 -0
  2. karrio/server/core/__init__.py +3 -0
  3. karrio/server/core/admin.py +1 -0
  4. karrio/server/core/apps.py +10 -0
  5. karrio/server/core/authentication.py +347 -0
  6. karrio/server/core/config.py +31 -0
  7. karrio/server/core/context_processors.py +12 -0
  8. karrio/server/core/datatypes.py +394 -0
  9. karrio/server/core/dataunits.py +187 -0
  10. karrio/server/core/exceptions.py +404 -0
  11. karrio/server/core/fields.py +12 -0
  12. karrio/server/core/filters.py +837 -0
  13. karrio/server/core/gateway.py +1011 -0
  14. karrio/server/core/logging.py +403 -0
  15. karrio/server/core/management/commands/cli.py +19 -0
  16. karrio/server/core/management/commands/create_oauth_client.py +41 -0
  17. karrio/server/core/management/commands/runserver.py +5 -0
  18. karrio/server/core/middleware.py +197 -0
  19. karrio/server/core/migrations/0001_initial.py +28 -0
  20. karrio/server/core/migrations/0002_apilogindex.py +69 -0
  21. karrio/server/core/migrations/0003_apilogindex_test_mode.py +62 -0
  22. karrio/server/core/migrations/0004_metafield.py +74 -0
  23. karrio/server/core/migrations/0005_alter_metafield_type_alter_metafield_value.py +23 -0
  24. karrio/server/core/migrations/0006_add_api_log_requested_at_index.py +22 -0
  25. karrio/server/core/migrations/__init__.py +0 -0
  26. karrio/server/core/models/__init__.py +48 -0
  27. karrio/server/core/models/base.py +103 -0
  28. karrio/server/core/models/entity.py +24 -0
  29. karrio/server/core/models/metafield.py +144 -0
  30. karrio/server/core/models/third_party.py +21 -0
  31. karrio/server/core/oauth_validators.py +170 -0
  32. karrio/server/core/permissions.py +36 -0
  33. karrio/server/core/renderers.py +11 -0
  34. karrio/server/core/router.py +3 -0
  35. karrio/server/core/serializers.py +1971 -0
  36. karrio/server/core/signals.py +55 -0
  37. karrio/server/core/telemetry.py +573 -0
  38. karrio/server/core/tests.py +99 -0
  39. karrio/server/core/tests_resource_token.py +411 -0
  40. karrio/server/core/urls.py +12 -0
  41. karrio/server/core/utils.py +1025 -0
  42. karrio/server/core/validators.py +264 -0
  43. karrio/server/core/views/__init__.py +2 -0
  44. karrio/server/core/views/api.py +133 -0
  45. karrio/server/core/views/metadata.py +44 -0
  46. karrio/server/core/views/oauth.py +75 -0
  47. karrio/server/core/views/references.py +82 -0
  48. karrio/server/core/views/schema.py +310 -0
  49. karrio/server/filters/__init__.py +2 -0
  50. karrio/server/filters/abstract.py +26 -0
  51. karrio/server/iam/__init__.py +0 -0
  52. karrio/server/iam/admin.py +3 -0
  53. karrio/server/iam/apps.py +21 -0
  54. karrio/server/iam/migrations/0001_initial.py +33 -0
  55. karrio/server/iam/migrations/__init__.py +0 -0
  56. karrio/server/iam/models.py +48 -0
  57. karrio/server/iam/permissions.py +155 -0
  58. karrio/server/iam/serializers.py +54 -0
  59. karrio/server/iam/signals.py +18 -0
  60. karrio/server/iam/tests.py +3 -0
  61. karrio/server/iam/views.py +3 -0
  62. karrio/server/openapi.py +75 -0
  63. karrio/server/providers/__init__.py +1 -0
  64. karrio/server/providers/admin.py +364 -0
  65. karrio/server/providers/apps.py +10 -0
  66. karrio/server/providers/management/commands/migrate_rate_sheets.py +101 -0
  67. karrio/server/providers/migrations/0001_initial.py +140 -0
  68. karrio/server/providers/migrations/0002_carrier_active.py +18 -0
  69. karrio/server/providers/migrations/0003_auto_20201230_0820.py +24 -0
  70. karrio/server/providers/migrations/0004_auto_20210212_0554.py +178 -0
  71. karrio/server/providers/migrations/0005_auto_20210212_0555.py +18 -0
  72. karrio/server/providers/migrations/0006_australiapostsettings.py +29 -0
  73. karrio/server/providers/migrations/0007_auto_20210213_0206.py +21 -0
  74. karrio/server/providers/migrations/0008_auto_20210214_0409.py +30 -0
  75. karrio/server/providers/migrations/0009_auto_20210308_0302.py +18 -0
  76. karrio/server/providers/migrations/0010_auto_20210409_0852.py +32 -0
  77. karrio/server/providers/migrations/0011_auto_20210409_0853.py +21 -0
  78. karrio/server/providers/migrations/0012_alter_carrier_options.py +17 -0
  79. karrio/server/providers/migrations/0013_tntsettings.py +30 -0
  80. karrio/server/providers/migrations/0014_auto_20210612_1608.py +46 -0
  81. karrio/server/providers/migrations/0015_auto_20210615_1601.py +28 -0
  82. karrio/server/providers/migrations/0016_alter_purolatorsettings_user_token.py +18 -0
  83. karrio/server/providers/migrations/0017_auto_20210805_0359.py +1293 -0
  84. karrio/server/providers/migrations/0018_alter_fedexsettings_user_key.py +18 -0
  85. karrio/server/providers/migrations/0019_dhlpolandsettings_servicelevel.py +65 -0
  86. karrio/server/providers/migrations/0020_genericsettings_labeltemplate.py +52 -0
  87. karrio/server/providers/migrations/0021_auto_20211231_2353.py +40 -0
  88. karrio/server/providers/migrations/0022_carrier_metadata.py +18 -0
  89. karrio/server/providers/migrations/0023_auto_20220124_1916.py +27 -0
  90. karrio/server/providers/migrations/0024_alter_genericsettings_custom_carrier_name.py +19 -0
  91. karrio/server/providers/migrations/0025_alter_servicelevel_service_code.py +19 -0
  92. karrio/server/providers/migrations/0026_auto_20220208_0132.py +59 -0
  93. karrio/server/providers/migrations/0027_auto_20220304_1340.py +29 -0
  94. karrio/server/providers/migrations/0028_auto_20220323_1500.py +33 -0
  95. karrio/server/providers/migrations/0029_easypostsettings.py +27 -0
  96. karrio/server/providers/migrations/0030_amazonmwssettings.py +29 -0
  97. karrio/server/providers/migrations/0031_delete_amazonmwssettings.py +18 -0
  98. karrio/server/providers/migrations/0032_alter_carrier_test.py +18 -0
  99. karrio/server/providers/migrations/0033_auto_20220708_1350.py +22 -0
  100. karrio/server/providers/migrations/0034_amazonmwssettings_dpdhlsettings.py +47 -0
  101. karrio/server/providers/migrations/0035_alter_carrier_capabilities.py +43 -0
  102. karrio/server/providers/migrations/0036_upsfreightsettings.py +31 -0
  103. karrio/server/providers/migrations/0037_chronopostsettings.py +29 -0
  104. karrio/server/providers/migrations/0038_alter_genericsettings_label_template.py +19 -0
  105. karrio/server/providers/migrations/0039_auto_20220906_0612.py +23 -0
  106. karrio/server/providers/migrations/0040_dpdhlsettings_services.py +18 -0
  107. karrio/server/providers/migrations/0041_auto_20221105_0705.py +38 -0
  108. karrio/server/providers/migrations/0042_auto_20221215_1642.py +23 -0
  109. karrio/server/providers/migrations/0043_alter_genericsettings_account_number_and_more.py +39 -0
  110. karrio/server/providers/migrations/0044_carrier_carrier_capabilities.py +64 -0
  111. karrio/server/providers/migrations/0045_alter_carrier_active_alter_carrier_carrier_id.py +31 -0
  112. karrio/server/providers/migrations/0046_remove_dpdhlsettings_signature_and_more.py +41 -0
  113. karrio/server/providers/migrations/0047_dpdsettings.py +286 -0
  114. karrio/server/providers/migrations/0048_servicelevel_min_weight_servicelevel_transit_days_and_more.py +64 -0
  115. karrio/server/providers/migrations/0049_boxknightsettings_geodissettings_lapostesettings_and_more.py +156 -0
  116. karrio/server/providers/migrations/0050_carrier_is_system_alter_carrier_metadata_and_more.py +106 -0
  117. karrio/server/providers/migrations/0051_rename_username_upssettings_client_id_and_more.py +31 -0
  118. karrio/server/providers/migrations/0052_alter_upssettings_account_number_and_more.py +20 -0
  119. karrio/server/providers/migrations/0053_locate2usettings.py +281 -0
  120. karrio/server/providers/migrations/0054_zoom2usettings.py +280 -0
  121. karrio/server/providers/migrations/0055_rename_amazonmwssettings_amazonshippingsettings_and_more.py +44 -0
  122. karrio/server/providers/migrations/0056_asendiaussettings_geodissettings_code_client_and_more.py +75 -0
  123. karrio/server/providers/migrations/0057_alter_servicelevel_weight_unit_belgianpostsettings.py +51 -0
  124. karrio/server/providers/migrations/0058_alliedexpresssettings.py +38 -0
  125. karrio/server/providers/migrations/0059_ratesheet.py +81 -0
  126. karrio/server/providers/migrations/0060_belgianpostsettings_rate_sheet_and_more.py +73 -0
  127. karrio/server/providers/migrations/0061_alliedexpresssettings_service_type.py +17 -0
  128. karrio/server/providers/migrations/0062_sendlesettings_account_country_code.py +257 -0
  129. karrio/server/providers/migrations/0063_servicelevel_metadata.py +25 -0
  130. karrio/server/providers/migrations/0064_alliedexpresslocalsettings.py +43 -0
  131. karrio/server/providers/migrations/0065_servicelevel_carrier_service_code_and_more.py +66 -0
  132. karrio/server/providers/migrations/0066_rename_fedexsettings_fedexwssettings_and_more.py +28 -0
  133. karrio/server/providers/migrations/0067_fedexsettings.py +283 -0
  134. karrio/server/providers/migrations/0068_fedexsettings_track_api_key_and_more.py +38 -0
  135. karrio/server/providers/migrations/0069_alter_canadapostsettings_contract_id_and_more.py +23 -0
  136. karrio/server/providers/migrations/0070_tgesettings_alter_carrier_capabilities.py +65 -0
  137. karrio/server/providers/migrations/0071_alter_tgesettings_my_toll_token.py +18 -0
  138. karrio/server/providers/migrations/0072_rename_eshippersettings_eshipperxmlsettings_and_more.py +28 -0
  139. karrio/server/providers/migrations/0073_delete_eshipperxmlsettings.py +41 -0
  140. karrio/server/providers/migrations/0074_eshippersettings.py +38 -0
  141. karrio/server/providers/migrations/0075_haypostsettings.py +40 -0
  142. karrio/server/providers/migrations/0076_rename_customer_registration_id_uspsinternationalsettings_account_number_and_more.py +125 -0
  143. karrio/server/providers/migrations/0077_uspswtinternationalsettings_uspswtsettings_and_more.py +165 -0
  144. karrio/server/providers/migrations/0078_auto_20240813_1552.py +120 -0
  145. karrio/server/providers/migrations/0079_alter_carrier_options_alter_ratesheet_created_by.py +31 -0
  146. karrio/server/providers/migrations/0080_alter_aramexsettings_account_country_code_and_more.py +3025 -0
  147. karrio/server/providers/migrations/0081_remove_alliedexpresssettings_carrier_ptr_and_more.py +338 -0
  148. karrio/server/providers/migrations/0082_add_zone_identifiers.py +50 -0
  149. karrio/server/providers/migrations/0083_add_optimized_rate_sheet_structure.py +33 -0
  150. karrio/server/providers/migrations/0084_alter_servicelevel_currency.py +168 -0
  151. karrio/server/providers/migrations/0085_populate_dhl_parcel_de_oauth_credentials.py +82 -0
  152. karrio/server/providers/migrations/0086_rename_dhl_parcel_de_customer_number_to_billing_number.py +71 -0
  153. karrio/server/providers/migrations/__init__.py +0 -0
  154. karrio/server/providers/models/__init__.py +16 -0
  155. karrio/server/providers/models/carrier.py +387 -0
  156. karrio/server/providers/models/config.py +30 -0
  157. karrio/server/providers/models/service.py +192 -0
  158. karrio/server/providers/models/sheet.py +287 -0
  159. karrio/server/providers/models/template.py +39 -0
  160. karrio/server/providers/models/utils.py +58 -0
  161. karrio/server/providers/router.py +3 -0
  162. karrio/server/providers/serializers/__init__.py +3 -0
  163. karrio/server/providers/serializers/base.py +538 -0
  164. karrio/server/providers/signals.py +25 -0
  165. karrio/server/providers/templates/providers/oauth_callback.html +105 -0
  166. karrio/server/providers/tests/__init__.py +5 -0
  167. karrio/server/providers/tests/test_connections.py +895 -0
  168. karrio/server/providers/urls.py +11 -0
  169. karrio/server/providers/views/__init__.py +0 -0
  170. karrio/server/providers/views/carriers.py +267 -0
  171. karrio/server/providers/views/connections.py +496 -0
  172. karrio/server/samples.py +352 -0
  173. karrio/server/serializers/__init__.py +2 -0
  174. karrio/server/serializers/abstract.py +602 -0
  175. karrio/server/tracing/__init__.py +0 -0
  176. karrio/server/tracing/admin.py +63 -0
  177. karrio/server/tracing/apps.py +8 -0
  178. karrio/server/tracing/migrations/0001_initial.py +41 -0
  179. karrio/server/tracing/migrations/0002_auto_20220710_1307.py +22 -0
  180. karrio/server/tracing/migrations/0003_auto_20221105_0317.py +43 -0
  181. karrio/server/tracing/migrations/0004_tracingrecord_carrier_account_idx.py +24 -0
  182. karrio/server/tracing/migrations/0005_optimise_tracingrecord_request_log_idx.py +25 -0
  183. karrio/server/tracing/migrations/0006_alter_tracingrecord_options_and_more.py +49 -0
  184. karrio/server/tracing/migrations/0007_tracingrecord_tracing_created_at_idx.py +19 -0
  185. karrio/server/tracing/migrations/__init__.py +0 -0
  186. karrio/server/tracing/models.py +82 -0
  187. karrio/server/tracing/tests.py +3 -0
  188. karrio/server/tracing/utils.py +109 -0
  189. karrio/server/user/__init__.py +0 -0
  190. karrio/server/user/admin.py +96 -0
  191. karrio/server/user/apps.py +7 -0
  192. karrio/server/user/forms.py +35 -0
  193. karrio/server/user/migrations/0001_initial.py +41 -0
  194. karrio/server/user/migrations/0002_token.py +29 -0
  195. karrio/server/user/migrations/0003_token_test_mode.py +20 -0
  196. karrio/server/user/migrations/0004_group.py +26 -0
  197. karrio/server/user/migrations/0005_token_label.py +21 -0
  198. karrio/server/user/migrations/0006_workspaceconfig.py +63 -0
  199. karrio/server/user/migrations/0007_user_metadata.py +25 -0
  200. karrio/server/user/migrations/__init__.py +0 -0
  201. karrio/server/user/models.py +218 -0
  202. karrio/server/user/serializers.py +47 -0
  203. karrio/server/user/templates/registration/login.html +108 -0
  204. karrio/server/user/templates/registration/registration_confirm_email.html +10 -0
  205. karrio/server/user/templates/registration/registration_confirm_email.txt +3 -0
  206. karrio/server/user/tests.py +3 -0
  207. karrio/server/user/urls.py +10 -0
  208. karrio/server/user/utils.py +60 -0
  209. karrio/server/user/views.py +9 -0
  210. karrio_server_core-2025.5.dist-info/METADATA +32 -0
  211. karrio_server_core-2025.5.dist-info/RECORD +213 -0
  212. karrio_server_core-2025.5.dist-info/WHEEL +5 -0
  213. karrio_server_core-2025.5.dist-info/top_level.txt +2 -0
@@ -0,0 +1,338 @@
1
+ # Generated by Django 5.1.9 on 2025-05-09 06:49
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("providers", "0080_alter_aramexsettings_account_country_code_and_more"),
10
+ ]
11
+
12
+ operations = [
13
+ # 1. Remove all 'services' and other dependent fields first
14
+ migrations.RemoveField(
15
+ model_name="belgianpostsettings",
16
+ name="services",
17
+ ),
18
+ migrations.RemoveField(
19
+ model_name="colissimosettings",
20
+ name="services",
21
+ ),
22
+ migrations.RemoveField(
23
+ model_name="dhlparceldesettings",
24
+ name="services",
25
+ ),
26
+ migrations.RemoveField(
27
+ model_name="dhlpolandsettings",
28
+ name="services",
29
+ ),
30
+ migrations.RemoveField(
31
+ model_name="dpdhlsettings",
32
+ name="services",
33
+ ),
34
+ migrations.RemoveField(
35
+ model_name="dpdsettings",
36
+ name="services",
37
+ ),
38
+ migrations.RemoveField(
39
+ model_name="genericsettings",
40
+ name="services",
41
+ ),
42
+ migrations.RemoveField(
43
+ model_name="genericsettings",
44
+ name="label_template",
45
+ ),
46
+ # 2. Remove all 'carrier_ptr' fields
47
+ migrations.RemoveField(
48
+ model_name="alliedexpresssettings",
49
+ name="carrier_ptr",
50
+ ),
51
+ migrations.RemoveField(
52
+ model_name="amazonshippingsettings",
53
+ name="carrier_ptr",
54
+ ),
55
+ migrations.RemoveField(
56
+ model_name="aramexsettings",
57
+ name="carrier_ptr",
58
+ ),
59
+ migrations.RemoveField(
60
+ model_name="asendiaussettings",
61
+ name="carrier_ptr",
62
+ ),
63
+ migrations.RemoveField(
64
+ model_name="australiapostsettings",
65
+ name="carrier_ptr",
66
+ ),
67
+ migrations.RemoveField(
68
+ model_name="belgianpostsettings",
69
+ name="carrier_ptr",
70
+ ),
71
+ migrations.RemoveField(
72
+ model_name="boxknightsettings",
73
+ name="carrier_ptr",
74
+ ),
75
+ migrations.RemoveField(
76
+ model_name="canadapostsettings",
77
+ name="carrier_ptr",
78
+ ),
79
+ migrations.RemoveField(
80
+ model_name="canparsettings",
81
+ name="carrier_ptr",
82
+ ),
83
+ migrations.RemoveField(
84
+ model_name="chronopostsettings",
85
+ name="carrier_ptr",
86
+ ),
87
+ migrations.RemoveField(
88
+ model_name="colissimosettings",
89
+ name="carrier_ptr",
90
+ ),
91
+ migrations.RemoveField(
92
+ model_name="dhlexpresssettings",
93
+ name="carrier_ptr",
94
+ ),
95
+ migrations.RemoveField(
96
+ model_name="dhlparceldesettings",
97
+ name="carrier_ptr",
98
+ ),
99
+ migrations.RemoveField(
100
+ model_name="dhlpolandsettings",
101
+ name="carrier_ptr",
102
+ ),
103
+ migrations.RemoveField(
104
+ model_name="dhluniversalsettings",
105
+ name="carrier_ptr",
106
+ ),
107
+ migrations.RemoveField(
108
+ model_name="dicomsettings",
109
+ name="carrier_ptr",
110
+ ),
111
+ migrations.RemoveField(
112
+ model_name="dpdhlsettings",
113
+ name="carrier_ptr",
114
+ ),
115
+ migrations.RemoveField(
116
+ model_name="dpdsettings",
117
+ name="carrier_ptr",
118
+ ),
119
+ migrations.RemoveField(
120
+ model_name="easypostsettings",
121
+ name="carrier_ptr",
122
+ ),
123
+ migrations.RemoveField(
124
+ model_name="eshippersettings",
125
+ name="carrier_ptr",
126
+ ),
127
+ migrations.RemoveField(
128
+ model_name="fedexsettings",
129
+ name="carrier_ptr",
130
+ ),
131
+ migrations.RemoveField(
132
+ model_name="fedexwssettings",
133
+ name="carrier_ptr",
134
+ ),
135
+ migrations.RemoveField(
136
+ model_name="freightcomsettings",
137
+ name="carrier_ptr",
138
+ ),
139
+ migrations.RemoveField(
140
+ model_name="genericsettings",
141
+ name="carrier_ptr",
142
+ ),
143
+ migrations.RemoveField(
144
+ model_name="geodissettings",
145
+ name="carrier_ptr",
146
+ ),
147
+ migrations.RemoveField(
148
+ model_name="haypostsettings",
149
+ name="carrier_ptr",
150
+ ),
151
+ migrations.RemoveField(
152
+ model_name="lapostesettings",
153
+ name="carrier_ptr",
154
+ ),
155
+ migrations.RemoveField(
156
+ model_name="locate2usettings",
157
+ name="carrier_ptr",
158
+ ),
159
+ migrations.RemoveField(
160
+ model_name="nationexsettings",
161
+ name="carrier_ptr",
162
+ ),
163
+ migrations.RemoveField(
164
+ model_name="purolatorsettings",
165
+ name="carrier_ptr",
166
+ ),
167
+ migrations.RemoveField(
168
+ model_name="roadiesettings",
169
+ name="carrier_ptr",
170
+ ),
171
+ migrations.RemoveField(
172
+ model_name="royalmailsettings",
173
+ name="carrier_ptr",
174
+ ),
175
+ migrations.RemoveField(
176
+ model_name="sendlesettings",
177
+ name="carrier_ptr",
178
+ ),
179
+ migrations.RemoveField(
180
+ model_name="tgesettings",
181
+ name="carrier_ptr",
182
+ ),
183
+ migrations.RemoveField(
184
+ model_name="tntsettings",
185
+ name="carrier_ptr",
186
+ ),
187
+ migrations.RemoveField(
188
+ model_name="upssettings",
189
+ name="carrier_ptr",
190
+ ),
191
+ migrations.RemoveField(
192
+ model_name="uspsinternationalsettings",
193
+ name="carrier_ptr",
194
+ ),
195
+ migrations.RemoveField(
196
+ model_name="uspssettings",
197
+ name="carrier_ptr",
198
+ ),
199
+ migrations.RemoveField(
200
+ model_name="uspswtinternationalsettings",
201
+ name="carrier_ptr",
202
+ ),
203
+ migrations.RemoveField(
204
+ model_name="uspswtsettings",
205
+ name="carrier_ptr",
206
+ ),
207
+ migrations.RemoveField(
208
+ model_name="zoom2usettings",
209
+ name="carrier_ptr",
210
+ ),
211
+ # 3. Delete all the models
212
+ migrations.DeleteModel(
213
+ name="AlliedExpressLocalSettings",
214
+ ),
215
+ migrations.DeleteModel(
216
+ name="AlliedExpressSettings",
217
+ ),
218
+ migrations.DeleteModel(
219
+ name="AmazonShippingSettings",
220
+ ),
221
+ migrations.DeleteModel(
222
+ name="AramexSettings",
223
+ ),
224
+ migrations.DeleteModel(
225
+ name="AsendiaUSSettings",
226
+ ),
227
+ migrations.DeleteModel(
228
+ name="AustraliaPostSettings",
229
+ ),
230
+ migrations.DeleteModel(
231
+ name="BelgianPostSettings",
232
+ ),
233
+ migrations.DeleteModel(
234
+ name="BoxKnightSettings",
235
+ ),
236
+ migrations.DeleteModel(
237
+ name="CanadaPostSettings",
238
+ ),
239
+ migrations.DeleteModel(
240
+ name="CanparSettings",
241
+ ),
242
+ migrations.DeleteModel(
243
+ name="ChronopostSettings",
244
+ ),
245
+ migrations.DeleteModel(
246
+ name="ColissimoSettings",
247
+ ),
248
+ migrations.DeleteModel(
249
+ name="DHLExpressSettings",
250
+ ),
251
+ migrations.DeleteModel(
252
+ name="DHLParcelDESettings",
253
+ ),
254
+ migrations.DeleteModel(
255
+ name="DHLPolandSettings",
256
+ ),
257
+ migrations.DeleteModel(
258
+ name="DHLUniversalSettings",
259
+ ),
260
+ migrations.DeleteModel(
261
+ name="DicomSettings",
262
+ ),
263
+ migrations.DeleteModel(
264
+ name="DPDHLSettings",
265
+ ),
266
+ migrations.DeleteModel(
267
+ name="DPDSettings",
268
+ ),
269
+ migrations.DeleteModel(
270
+ name="EasyPostSettings",
271
+ ),
272
+ migrations.DeleteModel(
273
+ name="EShipperSettings",
274
+ ),
275
+ migrations.DeleteModel(
276
+ name="FedexSettings",
277
+ ),
278
+ migrations.DeleteModel(
279
+ name="FedexWSSettings",
280
+ ),
281
+ migrations.DeleteModel(
282
+ name="FreightcomSettings",
283
+ ),
284
+ migrations.DeleteModel(
285
+ name="GenericSettings",
286
+ ),
287
+ migrations.DeleteModel(
288
+ name="GEODISSettings",
289
+ ),
290
+ migrations.DeleteModel(
291
+ name="HayPostSettings",
292
+ ),
293
+ migrations.DeleteModel(
294
+ name="LaPosteSettings",
295
+ ),
296
+ migrations.DeleteModel(
297
+ name="Locate2uSettings",
298
+ ),
299
+ migrations.DeleteModel(
300
+ name="NationexSettings",
301
+ ),
302
+ migrations.DeleteModel(
303
+ name="PurolatorSettings",
304
+ ),
305
+ migrations.DeleteModel(
306
+ name="RoadieSettings",
307
+ ),
308
+ migrations.DeleteModel(
309
+ name="RoyalMailSettings",
310
+ ),
311
+ migrations.DeleteModel(
312
+ name="SendleSettings",
313
+ ),
314
+ migrations.DeleteModel(
315
+ name="TGESettings",
316
+ ),
317
+ migrations.DeleteModel(
318
+ name="TNTSettings",
319
+ ),
320
+ migrations.DeleteModel(
321
+ name="UPSSettings",
322
+ ),
323
+ migrations.DeleteModel(
324
+ name="USPSInternationalSettings",
325
+ ),
326
+ migrations.DeleteModel(
327
+ name="USPSSettings",
328
+ ),
329
+ migrations.DeleteModel(
330
+ name="USPSWTInternationalSettings",
331
+ ),
332
+ migrations.DeleteModel(
333
+ name="USPSWTSettings",
334
+ ),
335
+ migrations.DeleteModel(
336
+ name="Zoom2uSettings",
337
+ ),
338
+ ]
@@ -0,0 +1,50 @@
1
+ # Generated migration to add unique identifiers to ServiceLevel zones
2
+ from django.db import migrations
3
+ import uuid
4
+
5
+
6
+ def add_zone_identifiers(apps, schema_editor):
7
+ """Add unique IDs to existing zones in ServiceLevel objects"""
8
+ ServiceLevel = apps.get_model('providers', 'ServiceLevel')
9
+
10
+ for service in ServiceLevel.objects.all():
11
+ if service.zones:
12
+ updated = False
13
+ for i, zone in enumerate(service.zones):
14
+ if 'id' not in zone:
15
+ # Generate unique zone ID
16
+ zone['id'] = f"zone_{uuid.uuid4().hex[:8]}"
17
+ updated = True
18
+
19
+ if updated:
20
+ service.save(update_fields=['zones'])
21
+
22
+
23
+ def reverse_zone_identifiers(apps, schema_editor):
24
+ """Remove zone IDs (for rollback)"""
25
+ ServiceLevel = apps.get_model('providers', 'ServiceLevel')
26
+
27
+ for service in ServiceLevel.objects.all():
28
+ if service.zones:
29
+ updated = False
30
+ for zone in service.zones:
31
+ if 'id' in zone:
32
+ del zone['id']
33
+ updated = True
34
+
35
+ if updated:
36
+ service.save(update_fields=['zones'])
37
+
38
+
39
+ class Migration(migrations.Migration):
40
+
41
+ dependencies = [
42
+ ('providers', '0081_remove_alliedexpresssettings_carrier_ptr_and_more'),
43
+ ]
44
+
45
+ operations = [
46
+ migrations.RunPython(
47
+ add_zone_identifiers,
48
+ reverse_zone_identifiers
49
+ ),
50
+ ]
@@ -0,0 +1,33 @@
1
+ # Generated migration to add optimized rate sheet structure
2
+
3
+ from django.db import migrations, models
4
+ import karrio.server.core.models as core
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ('providers', '0082_add_zone_identifiers'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='ratesheet',
15
+ name='zones',
16
+ field=models.JSONField(
17
+ blank=True,
18
+ null=True,
19
+ default=core.field_default([]),
20
+ help_text="Shared zone definitions: [{'id': 'zone_1', 'label': 'Zone 1', 'cities': [...], 'country_codes': [...]}]"
21
+ ),
22
+ ),
23
+ migrations.AddField(
24
+ model_name='ratesheet',
25
+ name='service_rates',
26
+ field=models.JSONField(
27
+ blank=True,
28
+ null=True,
29
+ default=core.field_default([]),
30
+ help_text="Service-zone rate mapping: [{'service_id': 'svc_1', 'zone_id': 'zone_1', 'rate': 10.50}]"
31
+ ),
32
+ ),
33
+ ]
@@ -0,0 +1,168 @@
1
+ # Generated by Django 5.2.5 on 2025-08-19 19:09
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("providers", "0083_add_optimized_rate_sheet_structure"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="servicelevel",
15
+ name="currency",
16
+ field=models.CharField(
17
+ blank=True,
18
+ choices=[
19
+ ("EUR", "EUR"),
20
+ ("AED", "AED"),
21
+ ("USD", "USD"),
22
+ ("XCD", "XCD"),
23
+ ("AMD", "AMD"),
24
+ ("ANG", "ANG"),
25
+ ("AOA", "AOA"),
26
+ ("ARS", "ARS"),
27
+ ("AUD", "AUD"),
28
+ ("AWG", "AWG"),
29
+ ("AZN", "AZN"),
30
+ ("BAM", "BAM"),
31
+ ("BBD", "BBD"),
32
+ ("BDT", "BDT"),
33
+ ("XOF", "XOF"),
34
+ ("BGN", "BGN"),
35
+ ("BHD", "BHD"),
36
+ ("BIF", "BIF"),
37
+ ("BMD", "BMD"),
38
+ ("BND", "BND"),
39
+ ("BOB", "BOB"),
40
+ ("BRL", "BRL"),
41
+ ("BSD", "BSD"),
42
+ ("BTN", "BTN"),
43
+ ("BWP", "BWP"),
44
+ ("BYN", "BYN"),
45
+ ("BZD", "BZD"),
46
+ ("CAD", "CAD"),
47
+ ("CDF", "CDF"),
48
+ ("XAF", "XAF"),
49
+ ("CHF", "CHF"),
50
+ ("NZD", "NZD"),
51
+ ("CLP", "CLP"),
52
+ ("CNY", "CNY"),
53
+ ("COP", "COP"),
54
+ ("CRC", "CRC"),
55
+ ("CUC", "CUC"),
56
+ ("CVE", "CVE"),
57
+ ("CZK", "CZK"),
58
+ ("DJF", "DJF"),
59
+ ("DKK", "DKK"),
60
+ ("DOP", "DOP"),
61
+ ("DZD", "DZD"),
62
+ ("EGP", "EGP"),
63
+ ("ERN", "ERN"),
64
+ ("ETB", "ETB"),
65
+ ("FJD", "FJD"),
66
+ ("GBP", "GBP"),
67
+ ("GEL", "GEL"),
68
+ ("GHS", "GHS"),
69
+ ("GMD", "GMD"),
70
+ ("GNF", "GNF"),
71
+ ("GTQ", "GTQ"),
72
+ ("GYD", "GYD"),
73
+ ("HKD", "HKD"),
74
+ ("HNL", "HNL"),
75
+ ("HRK", "HRK"),
76
+ ("HTG", "HTG"),
77
+ ("HUF", "HUF"),
78
+ ("IDR", "IDR"),
79
+ ("ILS", "ILS"),
80
+ ("INR", "INR"),
81
+ ("IRR", "IRR"),
82
+ ("ISK", "ISK"),
83
+ ("JMD", "JMD"),
84
+ ("JOD", "JOD"),
85
+ ("JPY", "JPY"),
86
+ ("KES", "KES"),
87
+ ("KGS", "KGS"),
88
+ ("KHR", "KHR"),
89
+ ("KMF", "KMF"),
90
+ ("KPW", "KPW"),
91
+ ("KRW", "KRW"),
92
+ ("KWD", "KWD"),
93
+ ("KYD", "KYD"),
94
+ ("KZT", "KZT"),
95
+ ("LAK", "LAK"),
96
+ ("LKR", "LKR"),
97
+ ("LRD", "LRD"),
98
+ ("LSL", "LSL"),
99
+ ("LYD", "LYD"),
100
+ ("MAD", "MAD"),
101
+ ("MDL", "MDL"),
102
+ ("MGA", "MGA"),
103
+ ("MKD", "MKD"),
104
+ ("MMK", "MMK"),
105
+ ("MNT", "MNT"),
106
+ ("MOP", "MOP"),
107
+ ("MRO", "MRO"),
108
+ ("MUR", "MUR"),
109
+ ("MVR", "MVR"),
110
+ ("MWK", "MWK"),
111
+ ("MXN", "MXN"),
112
+ ("MYR", "MYR"),
113
+ ("MZN", "MZN"),
114
+ ("NAD", "NAD"),
115
+ ("XPF", "XPF"),
116
+ ("NGN", "NGN"),
117
+ ("NIO", "NIO"),
118
+ ("NOK", "NOK"),
119
+ ("NPR", "NPR"),
120
+ ("OMR", "OMR"),
121
+ ("PEN", "PEN"),
122
+ ("PGK", "PGK"),
123
+ ("PHP", "PHP"),
124
+ ("PKR", "PKR"),
125
+ ("PLN", "PLN"),
126
+ ("PYG", "PYG"),
127
+ ("QAR", "QAR"),
128
+ ("RON", "RON"),
129
+ ("RSD", "RSD"),
130
+ ("RUB", "RUB"),
131
+ ("RWF", "RWF"),
132
+ ("SAR", "SAR"),
133
+ ("SBD", "SBD"),
134
+ ("SCR", "SCR"),
135
+ ("SDG", "SDG"),
136
+ ("SEK", "SEK"),
137
+ ("SGD", "SGD"),
138
+ ("SHP", "SHP"),
139
+ ("SLL", "SLL"),
140
+ ("SOS", "SOS"),
141
+ ("SRD", "SRD"),
142
+ ("SSP", "SSP"),
143
+ ("STD", "STD"),
144
+ ("SYP", "SYP"),
145
+ ("SZL", "SZL"),
146
+ ("THB", "THB"),
147
+ ("TJS", "TJS"),
148
+ ("TND", "TND"),
149
+ ("TOP", "TOP"),
150
+ ("TRY", "TRY"),
151
+ ("TTD", "TTD"),
152
+ ("TWD", "TWD"),
153
+ ("TZS", "TZS"),
154
+ ("UAH", "UAH"),
155
+ ("UYU", "UYU"),
156
+ ("UZS", "UZS"),
157
+ ("VEF", "VEF"),
158
+ ("VND", "VND"),
159
+ ("VUV", "VUV"),
160
+ ("WST", "WST"),
161
+ ("YER", "YER"),
162
+ ("ZAR", "ZAR"),
163
+ ],
164
+ max_length=4,
165
+ null=True,
166
+ ),
167
+ ),
168
+ ]
@@ -0,0 +1,82 @@
1
+ # Generated by Django migration to populate missing required credentials for DHL Parcel DE
2
+ # This migration ensures existing dhl_parcel_de connections have all required fields
3
+ # (username, password, client_id, client_secret) to prevent initialization errors
4
+ # after the settings schema was updated.
5
+
6
+ from django.db import migrations
7
+ from django.utils import timezone
8
+
9
+
10
+ # Required fields for dhl_parcel_de that have no default values
11
+ REQUIRED_FIELDS = ["username", "password", "client_id", "client_secret"]
12
+
13
+
14
+ def populate_dhl_parcel_de_required_credentials(apps, schema_editor):
15
+ """
16
+ Find all dhl_parcel_de carrier connections that are missing required fields
17
+ and populate them with placeholder timestamp values.
18
+ """
19
+ Carrier = apps.get_model("providers", "Carrier")
20
+ db_alias = schema_editor.connection.alias
21
+
22
+ # Find all dhl_parcel_de carriers
23
+ dhl_parcel_de_carriers = Carrier.objects.using(db_alias).filter(
24
+ carrier_code="dhl_parcel_de"
25
+ )
26
+
27
+ timestamp = timezone.now().strftime("%Y%m%d%H%M%S")
28
+
29
+ for carrier in dhl_parcel_de_carriers:
30
+ credentials = carrier.credentials or {}
31
+ updated = False
32
+
33
+ # Check and populate all missing required fields
34
+ for field in REQUIRED_FIELDS:
35
+ if not credentials.get(field):
36
+ credentials[field] = f"PLACEHOLDER_{timestamp}"
37
+ updated = True
38
+
39
+ if updated:
40
+ carrier.credentials = credentials
41
+ carrier.save(using=db_alias, update_fields=["credentials"])
42
+
43
+
44
+ def reverse_dhl_parcel_de_required_credentials(apps, schema_editor):
45
+ """
46
+ Remove placeholder credentials (for rollback).
47
+ Only removes credentials that were set by this migration (contain PLACEHOLDER_).
48
+ """
49
+ Carrier = apps.get_model("providers", "Carrier")
50
+ db_alias = schema_editor.connection.alias
51
+
52
+ dhl_parcel_de_carriers = Carrier.objects.using(db_alias).filter(
53
+ carrier_code="dhl_parcel_de"
54
+ )
55
+
56
+ for carrier in dhl_parcel_de_carriers:
57
+ credentials = carrier.credentials or {}
58
+ updated = False
59
+
60
+ # Only remove if it's a placeholder value
61
+ for field in REQUIRED_FIELDS:
62
+ if credentials.get(field, "").startswith("PLACEHOLDER_"):
63
+ del credentials[field]
64
+ updated = True
65
+
66
+ if updated:
67
+ carrier.credentials = credentials
68
+ carrier.save(using=db_alias, update_fields=["credentials"])
69
+
70
+
71
+ class Migration(migrations.Migration):
72
+
73
+ dependencies = [
74
+ ("providers", "0084_alter_servicelevel_currency"),
75
+ ]
76
+
77
+ operations = [
78
+ migrations.RunPython(
79
+ populate_dhl_parcel_de_required_credentials,
80
+ reverse_dhl_parcel_de_required_credentials,
81
+ ),
82
+ ]