karrio-server-core 2025.5rc1__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.

Potentially problematic release.


This version of karrio-server-core might be problematic. Click here for more details.

Files changed (241) 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 +313 -0
  6. karrio/server/core/context_processors.py +12 -0
  7. karrio/server/core/datatypes.py +369 -0
  8. karrio/server/core/dataunits.py +156 -0
  9. karrio/server/core/exceptions.py +200 -0
  10. karrio/server/core/fields.py +12 -0
  11. karrio/server/core/filters.py +823 -0
  12. karrio/server/core/gateway.py +720 -0
  13. karrio/server/core/management/commands/cli.py +19 -0
  14. karrio/server/core/management/commands/create_oauth_client.py +41 -0
  15. karrio/server/core/middleware.py +95 -0
  16. karrio/server/core/migrations/0001_initial.py +28 -0
  17. karrio/server/core/migrations/0002_apilogindex.py +69 -0
  18. karrio/server/core/migrations/0003_apilogindex_test_mode.py +62 -0
  19. karrio/server/core/migrations/0004_metafield.py +74 -0
  20. karrio/server/core/migrations/0005_alter_metafield_type_alter_metafield_value.py +23 -0
  21. karrio/server/core/migrations/__init__.py +0 -0
  22. karrio/server/core/models/__init__.py +48 -0
  23. karrio/server/core/models/base.py +70 -0
  24. karrio/server/core/models/entity.py +22 -0
  25. karrio/server/core/models/metafield.py +144 -0
  26. karrio/server/core/models/third_party.py +21 -0
  27. karrio/server/core/oauth_validators.py +171 -0
  28. karrio/server/core/permissions.py +37 -0
  29. karrio/server/core/renderers.py +11 -0
  30. karrio/server/core/router.py +3 -0
  31. karrio/server/core/serializers.py +1898 -0
  32. karrio/server/core/signals.py +57 -0
  33. karrio/server/core/tests.py +98 -0
  34. karrio/server/core/urls.py +12 -0
  35. karrio/server/core/utils.py +479 -0
  36. karrio/server/core/validators.py +416 -0
  37. karrio/server/core/views/__init__.py +2 -0
  38. karrio/server/core/views/api.py +133 -0
  39. karrio/server/core/views/metadata.py +44 -0
  40. karrio/server/core/views/oauth.py +74 -0
  41. karrio/server/core/views/references.py +82 -0
  42. karrio/server/core/views/schema.py +310 -0
  43. karrio/server/filters/__init__.py +2 -0
  44. karrio/server/filters/abstract.py +26 -0
  45. karrio/server/iam/__init__.py +0 -0
  46. karrio/server/iam/admin.py +3 -0
  47. karrio/server/iam/apps.py +21 -0
  48. karrio/server/iam/migrations/0001_initial.py +33 -0
  49. karrio/server/iam/migrations/__init__.py +0 -0
  50. karrio/server/iam/models.py +48 -0
  51. karrio/server/iam/permissions.py +134 -0
  52. karrio/server/iam/serializers.py +39 -0
  53. karrio/server/iam/signals.py +20 -0
  54. karrio/server/iam/tests.py +3 -0
  55. karrio/server/iam/views.py +3 -0
  56. karrio/server/openapi.py +75 -0
  57. karrio/server/providers/__init__.py +1 -0
  58. karrio/server/providers/admin.py +364 -0
  59. karrio/server/providers/apps.py +10 -0
  60. karrio/server/providers/extension/__init__.py +1 -0
  61. karrio/server/providers/extension/models/__init__.py +1 -0
  62. karrio/server/providers/extension/models/allied_express.py +22 -0
  63. karrio/server/providers/extension/models/allied_express_local.py +22 -0
  64. karrio/server/providers/extension/models/amazon_shipping.py +27 -0
  65. karrio/server/providers/extension/models/aramex.py +25 -0
  66. karrio/server/providers/extension/models/asendia_us.py +21 -0
  67. karrio/server/providers/extension/models/australiapost.py +20 -0
  68. karrio/server/providers/extension/models/boxknight.py +19 -0
  69. karrio/server/providers/extension/models/bpost.py +21 -0
  70. karrio/server/providers/extension/models/canadapost.py +21 -0
  71. karrio/server/providers/extension/models/canpar.py +19 -0
  72. karrio/server/providers/extension/models/chronopost.py +22 -0
  73. karrio/server/providers/extension/models/colissimo.py +22 -0
  74. karrio/server/providers/extension/models/dhl_express.py +23 -0
  75. karrio/server/providers/extension/models/dhl_parcel_de.py +25 -0
  76. karrio/server/providers/extension/models/dhl_poland.py +22 -0
  77. karrio/server/providers/extension/models/dhl_universal.py +19 -0
  78. karrio/server/providers/extension/models/dicom.py +20 -0
  79. karrio/server/providers/extension/models/dpd.py +37 -0
  80. karrio/server/providers/extension/models/dpdhl.py +26 -0
  81. karrio/server/providers/extension/models/easypost.py +20 -0
  82. karrio/server/providers/extension/models/eshipper.py +21 -0
  83. karrio/server/providers/extension/models/fedex.py +25 -0
  84. karrio/server/providers/extension/models/fedex_ws.py +24 -0
  85. karrio/server/providers/extension/models/freightcom.py +21 -0
  86. karrio/server/providers/extension/models/generic.py +35 -0
  87. karrio/server/providers/extension/models/geodis.py +22 -0
  88. karrio/server/providers/extension/models/hay_post.py +22 -0
  89. karrio/server/providers/extension/models/laposte.py +19 -0
  90. karrio/server/providers/extension/models/locate2u.py +22 -0
  91. karrio/server/providers/extension/models/nationex.py +22 -0
  92. karrio/server/providers/extension/models/purolator.py +21 -0
  93. karrio/server/providers/extension/models/roadie.py +18 -0
  94. karrio/server/providers/extension/models/royalmail.py +19 -0
  95. karrio/server/providers/extension/models/sendle.py +22 -0
  96. karrio/server/providers/extension/models/tge.py +63 -0
  97. karrio/server/providers/extension/models/tnt.py +23 -0
  98. karrio/server/providers/extension/models/ups.py +23 -0
  99. karrio/server/providers/extension/models/usps.py +23 -0
  100. karrio/server/providers/extension/models/usps_international.py +23 -0
  101. karrio/server/providers/extension/models/usps_wt.py +24 -0
  102. karrio/server/providers/extension/models/usps_wt_international.py +24 -0
  103. karrio/server/providers/extension/models/zoom2u.py +23 -0
  104. karrio/server/providers/migrations/0001_initial.py +140 -0
  105. karrio/server/providers/migrations/0002_carrier_active.py +18 -0
  106. karrio/server/providers/migrations/0003_auto_20201230_0820.py +24 -0
  107. karrio/server/providers/migrations/0004_auto_20210212_0554.py +178 -0
  108. karrio/server/providers/migrations/0005_auto_20210212_0555.py +18 -0
  109. karrio/server/providers/migrations/0006_australiapostsettings.py +29 -0
  110. karrio/server/providers/migrations/0007_auto_20210213_0206.py +21 -0
  111. karrio/server/providers/migrations/0008_auto_20210214_0409.py +30 -0
  112. karrio/server/providers/migrations/0009_auto_20210308_0302.py +18 -0
  113. karrio/server/providers/migrations/0010_auto_20210409_0852.py +32 -0
  114. karrio/server/providers/migrations/0011_auto_20210409_0853.py +21 -0
  115. karrio/server/providers/migrations/0012_alter_carrier_options.py +17 -0
  116. karrio/server/providers/migrations/0013_tntsettings.py +30 -0
  117. karrio/server/providers/migrations/0014_auto_20210612_1608.py +46 -0
  118. karrio/server/providers/migrations/0015_auto_20210615_1601.py +28 -0
  119. karrio/server/providers/migrations/0016_alter_purolatorsettings_user_token.py +18 -0
  120. karrio/server/providers/migrations/0017_auto_20210805_0359.py +1293 -0
  121. karrio/server/providers/migrations/0018_alter_fedexsettings_user_key.py +18 -0
  122. karrio/server/providers/migrations/0019_dhlpolandsettings_servicelevel.py +65 -0
  123. karrio/server/providers/migrations/0020_genericsettings_labeltemplate.py +52 -0
  124. karrio/server/providers/migrations/0021_auto_20211231_2353.py +40 -0
  125. karrio/server/providers/migrations/0022_carrier_metadata.py +18 -0
  126. karrio/server/providers/migrations/0023_auto_20220124_1916.py +27 -0
  127. karrio/server/providers/migrations/0024_alter_genericsettings_custom_carrier_name.py +19 -0
  128. karrio/server/providers/migrations/0025_alter_servicelevel_service_code.py +19 -0
  129. karrio/server/providers/migrations/0026_auto_20220208_0132.py +59 -0
  130. karrio/server/providers/migrations/0027_auto_20220304_1340.py +29 -0
  131. karrio/server/providers/migrations/0028_auto_20220323_1500.py +33 -0
  132. karrio/server/providers/migrations/0029_easypostsettings.py +27 -0
  133. karrio/server/providers/migrations/0030_amazonmwssettings.py +29 -0
  134. karrio/server/providers/migrations/0031_delete_amazonmwssettings.py +18 -0
  135. karrio/server/providers/migrations/0032_alter_carrier_test.py +18 -0
  136. karrio/server/providers/migrations/0033_auto_20220708_1350.py +22 -0
  137. karrio/server/providers/migrations/0034_amazonmwssettings_dpdhlsettings.py +47 -0
  138. karrio/server/providers/migrations/0035_alter_carrier_capabilities.py +43 -0
  139. karrio/server/providers/migrations/0036_upsfreightsettings.py +31 -0
  140. karrio/server/providers/migrations/0037_chronopostsettings.py +29 -0
  141. karrio/server/providers/migrations/0038_alter_genericsettings_label_template.py +19 -0
  142. karrio/server/providers/migrations/0039_auto_20220906_0612.py +23 -0
  143. karrio/server/providers/migrations/0040_dpdhlsettings_services.py +18 -0
  144. karrio/server/providers/migrations/0041_auto_20221105_0705.py +38 -0
  145. karrio/server/providers/migrations/0042_auto_20221215_1642.py +23 -0
  146. karrio/server/providers/migrations/0043_alter_genericsettings_account_number_and_more.py +39 -0
  147. karrio/server/providers/migrations/0044_carrier_carrier_capabilities.py +64 -0
  148. karrio/server/providers/migrations/0045_alter_carrier_active_alter_carrier_carrier_id.py +31 -0
  149. karrio/server/providers/migrations/0046_remove_dpdhlsettings_signature_and_more.py +41 -0
  150. karrio/server/providers/migrations/0047_dpdsettings.py +286 -0
  151. karrio/server/providers/migrations/0048_servicelevel_min_weight_servicelevel_transit_days_and_more.py +64 -0
  152. karrio/server/providers/migrations/0049_boxknightsettings_geodissettings_lapostesettings_and_more.py +156 -0
  153. karrio/server/providers/migrations/0050_carrier_is_system_alter_carrier_metadata_and_more.py +106 -0
  154. karrio/server/providers/migrations/0051_rename_username_upssettings_client_id_and_more.py +31 -0
  155. karrio/server/providers/migrations/0052_alter_upssettings_account_number_and_more.py +20 -0
  156. karrio/server/providers/migrations/0053_locate2usettings.py +281 -0
  157. karrio/server/providers/migrations/0054_zoom2usettings.py +280 -0
  158. karrio/server/providers/migrations/0055_rename_amazonmwssettings_amazonshippingsettings_and_more.py +44 -0
  159. karrio/server/providers/migrations/0056_asendiaussettings_geodissettings_code_client_and_more.py +75 -0
  160. karrio/server/providers/migrations/0057_alter_servicelevel_weight_unit_belgianpostsettings.py +51 -0
  161. karrio/server/providers/migrations/0058_alliedexpresssettings.py +38 -0
  162. karrio/server/providers/migrations/0059_ratesheet.py +81 -0
  163. karrio/server/providers/migrations/0060_belgianpostsettings_rate_sheet_and_more.py +73 -0
  164. karrio/server/providers/migrations/0061_alliedexpresssettings_service_type.py +17 -0
  165. karrio/server/providers/migrations/0062_sendlesettings_account_country_code.py +257 -0
  166. karrio/server/providers/migrations/0063_servicelevel_metadata.py +25 -0
  167. karrio/server/providers/migrations/0064_alliedexpresslocalsettings.py +43 -0
  168. karrio/server/providers/migrations/0065_servicelevel_carrier_service_code_and_more.py +66 -0
  169. karrio/server/providers/migrations/0066_rename_fedexsettings_fedexwssettings_and_more.py +28 -0
  170. karrio/server/providers/migrations/0067_fedexsettings.py +283 -0
  171. karrio/server/providers/migrations/0068_fedexsettings_track_api_key_and_more.py +38 -0
  172. karrio/server/providers/migrations/0069_alter_canadapostsettings_contract_id_and_more.py +23 -0
  173. karrio/server/providers/migrations/0070_tgesettings_alter_carrier_capabilities.py +65 -0
  174. karrio/server/providers/migrations/0071_alter_tgesettings_my_toll_token.py +18 -0
  175. karrio/server/providers/migrations/0072_rename_eshippersettings_eshipperxmlsettings_and_more.py +28 -0
  176. karrio/server/providers/migrations/0073_delete_eshipperxmlsettings.py +41 -0
  177. karrio/server/providers/migrations/0074_eshippersettings.py +38 -0
  178. karrio/server/providers/migrations/0075_haypostsettings.py +40 -0
  179. karrio/server/providers/migrations/0076_rename_customer_registration_id_uspsinternationalsettings_account_number_and_more.py +125 -0
  180. karrio/server/providers/migrations/0077_uspswtinternationalsettings_uspswtsettings_and_more.py +165 -0
  181. karrio/server/providers/migrations/0078_auto_20240813_1552.py +120 -0
  182. karrio/server/providers/migrations/0079_alter_carrier_options_alter_ratesheet_created_by.py +31 -0
  183. karrio/server/providers/migrations/0080_alter_aramexsettings_account_country_code_and_more.py +3025 -0
  184. karrio/server/providers/migrations/0081_remove_alliedexpresssettings_carrier_ptr_and_more.py +338 -0
  185. karrio/server/providers/migrations/__init__.py +0 -0
  186. karrio/server/providers/models/__init__.py +17 -0
  187. karrio/server/providers/models/carrier.py +309 -0
  188. karrio/server/providers/models/config.py +30 -0
  189. karrio/server/providers/models/service.py +62 -0
  190. karrio/server/providers/models/sheet.py +60 -0
  191. karrio/server/providers/models/template.py +39 -0
  192. karrio/server/providers/models/utils.py +58 -0
  193. karrio/server/providers/router.py +3 -0
  194. karrio/server/providers/serializers/__init__.py +3 -0
  195. karrio/server/providers/serializers/base.py +277 -0
  196. karrio/server/providers/signals.py +27 -0
  197. karrio/server/providers/tests.py +3 -0
  198. karrio/server/providers/urls.py +11 -0
  199. karrio/server/providers/views/__init__.py +0 -0
  200. karrio/server/providers/views/carriers.py +269 -0
  201. karrio/server/providers/views/connections.py +176 -0
  202. karrio/server/samples.py +352 -0
  203. karrio/server/serializers/__init__.py +2 -0
  204. karrio/server/serializers/abstract.py +506 -0
  205. karrio/server/tracing/__init__.py +0 -0
  206. karrio/server/tracing/admin.py +63 -0
  207. karrio/server/tracing/apps.py +8 -0
  208. karrio/server/tracing/migrations/0001_initial.py +41 -0
  209. karrio/server/tracing/migrations/0002_auto_20220710_1307.py +22 -0
  210. karrio/server/tracing/migrations/0003_auto_20221105_0317.py +43 -0
  211. karrio/server/tracing/migrations/0004_tracingrecord_carrier_account_idx.py +24 -0
  212. karrio/server/tracing/migrations/0005_optimise_tracingrecord_request_log_idx.py +25 -0
  213. karrio/server/tracing/migrations/0006_alter_tracingrecord_options_and_more.py +49 -0
  214. karrio/server/tracing/migrations/__init__.py +0 -0
  215. karrio/server/tracing/models.py +80 -0
  216. karrio/server/tracing/tests.py +3 -0
  217. karrio/server/tracing/utils.py +112 -0
  218. karrio/server/user/__init__.py +0 -0
  219. karrio/server/user/admin.py +96 -0
  220. karrio/server/user/apps.py +7 -0
  221. karrio/server/user/forms.py +35 -0
  222. karrio/server/user/migrations/0001_initial.py +41 -0
  223. karrio/server/user/migrations/0002_token.py +29 -0
  224. karrio/server/user/migrations/0003_token_test_mode.py +20 -0
  225. karrio/server/user/migrations/0004_group.py +26 -0
  226. karrio/server/user/migrations/0005_token_label.py +21 -0
  227. karrio/server/user/migrations/0006_workspaceconfig.py +63 -0
  228. karrio/server/user/migrations/__init__.py +0 -0
  229. karrio/server/user/models.py +203 -0
  230. karrio/server/user/serializers.py +46 -0
  231. karrio/server/user/templates/registration/login.html +108 -0
  232. karrio/server/user/templates/registration/registration_confirm_email.html +10 -0
  233. karrio/server/user/templates/registration/registration_confirm_email.txt +3 -0
  234. karrio/server/user/tests.py +3 -0
  235. karrio/server/user/urls.py +10 -0
  236. karrio/server/user/utils.py +60 -0
  237. karrio/server/user/views.py +9 -0
  238. karrio_server_core-2025.5rc1.dist-info/METADATA +32 -0
  239. karrio_server_core-2025.5rc1.dist-info/RECORD +241 -0
  240. karrio_server_core-2025.5rc1.dist-info/WHEEL +5 -0
  241. karrio_server_core-2025.5rc1.dist-info/top_level.txt +2 -0
@@ -0,0 +1,19 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models.carrier as providers
3
+
4
+
5
+ class BoxKnightSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "boxknight-settings"
8
+ verbose_name = "BoxKnight Settings"
9
+ verbose_name_plural = "BoxKnight Settings"
10
+
11
+ username = models.CharField(max_length=50)
12
+ password = models.CharField(max_length=50)
13
+
14
+ @property
15
+ def carrier_name(self) -> str:
16
+ return "boxknight"
17
+
18
+
19
+ SETTINGS = BoxKnightSettings
@@ -0,0 +1,21 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("bpost")
6
+ class BelgianPostSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "bpost-settings"
9
+ verbose_name = "Belgian Post Settings"
10
+ verbose_name_plural = "Belgian Post Settings"
11
+
12
+ account_id = models.CharField(max_length=100)
13
+ passphrase = models.CharField(max_length=100)
14
+ services = models.ManyToManyField("ServiceLevel", blank=True)
15
+
16
+ @property
17
+ def carrier_name(self) -> str:
18
+ return "bpost"
19
+
20
+
21
+ SETTINGS = BelgianPostSettings
@@ -0,0 +1,21 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ class CanadaPostSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "canada-post-settings"
8
+ verbose_name = "Canada Post Settings"
9
+ verbose_name_plural = "Canada Post Settings"
10
+
11
+ username = models.CharField(max_length=200)
12
+ password = models.CharField(max_length=200)
13
+ customer_number = models.CharField(max_length=200, blank=True, null=True)
14
+ contract_id = models.CharField(max_length=200, blank=True, null=True)
15
+
16
+ @property
17
+ def carrier_name(self) -> str:
18
+ return "canadapost"
19
+
20
+
21
+ SETTINGS = CanadaPostSettings
@@ -0,0 +1,19 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class CanparSettings(Carrier):
6
+ class Meta:
7
+ db_table = "canpar-settings"
8
+ verbose_name = "Canpar Settings"
9
+ verbose_name_plural = "Canpar Settings"
10
+
11
+ username = models.CharField(max_length=200)
12
+ password = models.CharField(max_length=200)
13
+
14
+ @property
15
+ def carrier_name(self) -> str:
16
+ return "canpar"
17
+
18
+
19
+ SETTINGS = CanparSettings
@@ -0,0 +1,22 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier, COUNTRIES
3
+
4
+
5
+ class ChronopostSettings(Carrier):
6
+ class Meta:
7
+ db_table = "chronopost-settings"
8
+ verbose_name = "Chronopost Settings"
9
+ verbose_name_plural = "Chronopost Settings"
10
+
11
+ password = models.CharField(max_length=50)
12
+ account_number = models.CharField(max_length=50, blank=True, default="")
13
+ account_country_code = models.CharField(
14
+ max_length=3, blank=True, null=True, choices=COUNTRIES
15
+ )
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "chronopost"
20
+
21
+
22
+ SETTINGS = ChronopostSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("colissimo")
6
+ class ColissimoSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "colissimo-settings"
9
+ verbose_name = "Colissimo Settings"
10
+ verbose_name_plural = "Colissimo Settings"
11
+
12
+ password = models.CharField(max_length=100)
13
+ contract_number = models.CharField(max_length=100)
14
+ laposte_api_key = models.CharField(max_length=100, blank=True)
15
+ services = models.ManyToManyField("ServiceLevel", blank=True)
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "colissimo"
20
+
21
+
22
+ SETTINGS = ColissimoSettings
@@ -0,0 +1,23 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier, COUNTRIES
3
+
4
+
5
+ class DHLExpressSettings(Carrier):
6
+ class Meta:
7
+ db_table = "dhl_express-settings"
8
+ verbose_name = "DHL Express Settings"
9
+ verbose_name_plural = "DHL Express Settings"
10
+
11
+ site_id = models.CharField(max_length=200)
12
+ password = models.CharField(max_length=200)
13
+ account_number = models.CharField(max_length=200, blank=True, default="")
14
+ account_country_code = models.CharField(
15
+ max_length=3, blank=True, null=True, choices=COUNTRIES
16
+ )
17
+
18
+ @property
19
+ def carrier_name(self) -> str:
20
+ return "dhl_express"
21
+
22
+
23
+ SETTINGS = DHLExpressSettings
@@ -0,0 +1,25 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("dhl_parcel_de")
6
+ class DHLParcelDESettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "dhl-parcel-de-settings"
9
+ verbose_name = "DHL Parcel DE Settings"
10
+ verbose_name_plural = "DHL Parcel DE Settings"
11
+
12
+ username = models.CharField(max_length=100)
13
+ password = models.CharField(max_length=100)
14
+ dhl_api_key = models.CharField(max_length=200)
15
+ customer_number = models.CharField(max_length=50)
16
+ tracking_consumer_key = models.CharField(max_length=200, blank=True, null=True)
17
+ tracking_consumer_secret = models.CharField(max_length=200, blank=True, null=True)
18
+ services = models.ManyToManyField("ServiceLevel", blank=True)
19
+
20
+ @property
21
+ def carrier_name(self) -> str:
22
+ return "dhl_parcel_de"
23
+
24
+
25
+ SETTINGS = DHLParcelDESettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("dhl_poland")
6
+ class DHLPolandSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "dhl-poland-settings"
9
+ verbose_name = "DHL Poland Settings"
10
+ verbose_name_plural = "DHL Poland Settings"
11
+
12
+ username = models.CharField(max_length=200)
13
+ password = models.CharField(max_length=200)
14
+ account_number = models.CharField(max_length=200, blank=True)
15
+ services = models.ManyToManyField("ServiceLevel", blank=True)
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "dhl_poland"
20
+
21
+
22
+ SETTINGS = DHLPolandSettings
@@ -0,0 +1,19 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class DHLUniversalSettings(Carrier):
6
+ class Meta:
7
+ db_table = "dhl_universal-settings"
8
+ verbose_name = "DHL Universal Tracking Settings"
9
+ verbose_name_plural = "DHL Universal Tracking Settings"
10
+
11
+ consumer_key = models.CharField(max_length=200)
12
+ consumer_secret = models.CharField(max_length=200)
13
+
14
+ @property
15
+ def carrier_name(self) -> str:
16
+ return "dhl_universal"
17
+
18
+
19
+ SETTINGS = DHLUniversalSettings
@@ -0,0 +1,20 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class DicomSettings(Carrier):
6
+ class Meta:
7
+ db_table = "dicom-settings"
8
+ verbose_name = "Dicom Settings"
9
+ verbose_name_plural = "Dicom Settings"
10
+
11
+ username = models.CharField(max_length=50)
12
+ password = models.CharField(max_length=50)
13
+ billing_account = models.CharField(max_length=50, null=True, blank=True)
14
+
15
+ @property
16
+ def carrier_name(self) -> str:
17
+ return "dicom"
18
+
19
+
20
+ SETTINGS = DicomSettings
@@ -0,0 +1,37 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("dpd")
6
+ class DPDSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "dpd-settings"
9
+ verbose_name = "DPD Settings"
10
+ verbose_name_plural = "DPD Settings"
11
+
12
+ delis_id = models.CharField(max_length=75)
13
+ password = models.CharField(max_length=75)
14
+ depot = models.CharField(max_length=25, null=True, blank=True)
15
+ services = models.ManyToManyField("ServiceLevel", blank=True)
16
+ account_country_code = models.CharField(
17
+ max_length=3, blank=True, null=True, choices=providers.COUNTRIES
18
+ )
19
+ services = models.ManyToManyField("ServiceLevel", blank=True)
20
+
21
+ @property
22
+ def carrier_name(self) -> str:
23
+ return "dpd"
24
+
25
+ @property
26
+ def default_services(self):
27
+ import karrio.lib as lib
28
+ from karrio.providers.dpd import units
29
+
30
+ return lib.to_dict(
31
+ units.DEFAULT_NL_SERVICES
32
+ if self.account_country_code == "NL"
33
+ else units.DEFAULT_SERVICES
34
+ )
35
+
36
+
37
+ SETTINGS = DPDSettings
@@ -0,0 +1,26 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ # @providers.has_rate_sheet("dpdhl")
6
+ class DPDHLSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "dpdhl-settings"
9
+ verbose_name = "Deutsche Post DHL Settings"
10
+ verbose_name_plural = "Deutsche Post DHL Settings"
11
+
12
+ username = models.CharField(max_length=100)
13
+ password = models.CharField(max_length=100)
14
+ zt_id = models.CharField(max_length=100, blank=True, null=True, default="")
15
+ zt_password = models.CharField(max_length=100, blank=True, null=True, default="")
16
+ app_id = models.CharField(max_length=100, blank=True, null=True, default="")
17
+ app_token = models.CharField(max_length=100, blank=True, null=True, default="")
18
+ account_number = models.CharField(max_length=100, blank=True, null=True, default="")
19
+ services = models.ManyToManyField("ServiceLevel", blank=True)
20
+
21
+ @property
22
+ def carrier_name(self) -> str:
23
+ return "dpdhl"
24
+
25
+
26
+ SETTINGS = DPDHLSettings
@@ -0,0 +1,20 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class EasyPostSettings(Carrier):
6
+ CARRIER_NAME = "easypost"
7
+
8
+ class Meta:
9
+ db_table = "easypost-settings"
10
+ verbose_name = "EasyPost Settings"
11
+ verbose_name_plural = "EasyPost Settings"
12
+
13
+ api_key = models.CharField(max_length=200)
14
+
15
+ @property
16
+ def carrier_name(self) -> str:
17
+ return self.CARRIER_NAME
18
+
19
+
20
+ SETTINGS = EasyPostSettings
@@ -0,0 +1,21 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ class EShipperSettings(providers.Carrier):
6
+ CARRIER_NAME = "eshipper"
7
+
8
+ class Meta:
9
+ db_table = "eshipper-settings"
10
+ verbose_name = "eShipper Settings"
11
+ verbose_name_plural = "eShipper Settings"
12
+
13
+ principal = models.CharField(max_length=100)
14
+ credential = models.CharField(max_length=100)
15
+
16
+ @property
17
+ def carrier_name(self) -> str:
18
+ return self.CARRIER_NAME
19
+
20
+
21
+ SETTINGS = EShipperSettings
@@ -0,0 +1,25 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ class FedexSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "fedex-settings"
8
+ verbose_name = "FedEx Settings"
9
+ verbose_name_plural = "FedEx Settings"
10
+
11
+ api_key = models.CharField(max_length=100, blank=True, null=True)
12
+ secret_key = models.CharField(max_length=100, blank=True, null=True)
13
+ track_api_key = models.CharField(max_length=100, blank=True, null=True)
14
+ track_secret_key = models.CharField(max_length=100, blank=True, null=True)
15
+ account_number = models.CharField(max_length=50, blank=True, null=True)
16
+ account_country_code = models.CharField(
17
+ max_length=3, blank=True, null=True, choices=providers.COUNTRIES
18
+ )
19
+
20
+ @property
21
+ def carrier_name(self) -> str:
22
+ return "fedex"
23
+
24
+
25
+ SETTINGS = FedexSettings
@@ -0,0 +1,24 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier, COUNTRIES
3
+
4
+
5
+ class FedexWSSettings(Carrier):
6
+ class Meta:
7
+ db_table = "fedex-ws-settings"
8
+ verbose_name = "FedEx Web Service Settings"
9
+ verbose_name_plural = "FedEx Web Service Settings"
10
+
11
+ password = models.CharField(max_length=200)
12
+ meter_number = models.CharField(max_length=200)
13
+ account_number = models.CharField(max_length=200)
14
+ user_key = models.CharField(max_length=200, blank=True)
15
+ account_country_code = models.CharField(
16
+ max_length=3, blank=True, null=True, choices=COUNTRIES
17
+ )
18
+
19
+ @property
20
+ def carrier_name(self) -> str:
21
+ return "fedex"
22
+
23
+
24
+ SETTINGS = FedexWSSettings
@@ -0,0 +1,21 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class FreightcomSettings(Carrier):
6
+ CARRIER_NAME = "freightcom"
7
+
8
+ class Meta:
9
+ db_table = "freightcom-settings"
10
+ verbose_name = "Freightcom Settings"
11
+ verbose_name_plural = "Freightcom Settings"
12
+
13
+ username = models.CharField(max_length=200)
14
+ password = models.CharField(max_length=200)
15
+
16
+ @property
17
+ def carrier_name(self) -> str:
18
+ return self.CARRIER_NAME
19
+
20
+
21
+ SETTINGS = FreightcomSettings
@@ -0,0 +1,35 @@
1
+ import django.db.models as models
2
+ import django.core.validators as validators
3
+ import karrio.server.providers.models as providers
4
+
5
+
6
+ # @providers.has_rate_sheet("generic")
7
+ class GenericSettings(providers.Carrier):
8
+ CARRIER_NAME = "generic"
9
+
10
+ class Meta:
11
+ db_table = "generic-settings"
12
+ verbose_name = "Custom Carrier Settings"
13
+ verbose_name_plural = "Custom Carrier Settings"
14
+
15
+ display_name = models.CharField(max_length=30, help_text="Carrier display name")
16
+ custom_carrier_name = models.CharField(
17
+ max_length=30,
18
+ validators=[validators.RegexValidator(r"^[a-z0-9_]+$")],
19
+ help_text="Unique carrier slug, lowercase alphanumeric characters and underscores only",
20
+ )
21
+ label_template = models.OneToOneField(
22
+ "LabelTemplate", null=True, blank=True, on_delete=models.CASCADE
23
+ )
24
+ account_number = models.CharField(max_length=20, null=True, blank=True, default="")
25
+ account_country_code = models.CharField(
26
+ max_length=3, null=True, blank=True, choices=providers.COUNTRIES
27
+ )
28
+ services = models.ManyToManyField("ServiceLevel", blank=True)
29
+
30
+ @property
31
+ def carrier_name(self) -> str:
32
+ return self.custom_carrier_name # "generic"
33
+
34
+
35
+ SETTINGS = GenericSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+
3
+ import karrio.server.providers.models.carrier as providers
4
+
5
+
6
+ class GEODISSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "geodis-settings"
9
+ verbose_name = "GEODIS Settings"
10
+ verbose_name_plural = "GEODIS Settings"
11
+
12
+ api_key = models.CharField(max_length=100)
13
+ identifier = models.CharField(max_length=50)
14
+ code_client = models.CharField(max_length=50)
15
+ language = models.CharField(max_length=10, null=True, default="fr")
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "geodis"
20
+
21
+
22
+ SETTINGS = GEODISSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+
3
+ import karrio.server.providers.models.carrier as providers
4
+
5
+
6
+ class HayPostSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "hay-post-settings"
9
+ verbose_name = "Hay Post Settings"
10
+ verbose_name_plural = "Hay Post Settings"
11
+
12
+ username = models.CharField(max_length=100)
13
+ password = models.CharField(max_length=100)
14
+ customer_id = models.CharField(max_length=100)
15
+ customer_type = models.CharField(max_length=100)
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "hay_post"
20
+
21
+
22
+ SETTINGS = HayPostSettings
@@ -0,0 +1,19 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models.carrier as providers
3
+
4
+
5
+ class LaPosteSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "laposte-settings"
8
+ verbose_name = "LaPoste Settings"
9
+ verbose_name_plural = "LaPoste Settings"
10
+
11
+ api_key = models.CharField(max_length=100)
12
+ lang = models.CharField(max_length=10, null=True, default="fr_FR")
13
+
14
+ @property
15
+ def carrier_name(self) -> str:
16
+ return "laposte"
17
+
18
+
19
+ SETTINGS = LaPosteSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models.carrier as providers
3
+
4
+
5
+ class Locate2uSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "locate2u-settings"
8
+ verbose_name = "Locate2u Settings"
9
+ verbose_name_plural = "Locate2u Settings"
10
+
11
+ client_id = models.CharField(max_length=200)
12
+ client_secret = models.CharField(max_length=200)
13
+ account_country_code = models.CharField(
14
+ max_length=3, blank=True, null=True, choices=providers.COUNTRIES
15
+ )
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "locate2u"
20
+
21
+
22
+ SETTINGS = Locate2uSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+
3
+ import karrio.server.providers.models.carrier as providers
4
+
5
+
6
+ class NationexSettings(providers.Carrier):
7
+ class Meta:
8
+ db_table = "nationex-settings"
9
+ verbose_name = "Nationex Settings"
10
+ verbose_name_plural = "Nationex Settings"
11
+
12
+ api_key = models.CharField(max_length=100)
13
+ customer_id = models.CharField(max_length=50)
14
+ billing_account = models.CharField(max_length=50, null=True, blank=True)
15
+ language = models.CharField(max_length=10, null=True, default="en")
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "nationex"
20
+
21
+
22
+ SETTINGS = NationexSettings
@@ -0,0 +1,21 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class PurolatorSettings(Carrier):
6
+ class Meta:
7
+ db_table = "purolator-settings"
8
+ verbose_name = "Purolator Settings"
9
+ verbose_name_plural = "Purolator Settings"
10
+
11
+ username = models.CharField(max_length=200)
12
+ password = models.CharField(max_length=200)
13
+ account_number = models.CharField(max_length=200)
14
+ user_token = models.CharField(max_length=200, null=True)
15
+
16
+ @property
17
+ def carrier_name(self) -> str:
18
+ return "purolator"
19
+
20
+
21
+ SETTINGS = PurolatorSettings
@@ -0,0 +1,18 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models.carrier as providers
3
+
4
+
5
+ class RoadieSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "roadie-settings"
8
+ verbose_name = "Roadie Settings"
9
+ verbose_name_plural = "Roadie Settings"
10
+
11
+ api_key = models.CharField(max_length=100)
12
+
13
+ @property
14
+ def carrier_name(self) -> str:
15
+ return "roadie"
16
+
17
+
18
+ SETTINGS = RoadieSettings
@@ -0,0 +1,19 @@
1
+ from django.db import models
2
+ from karrio.server.providers.models.carrier import Carrier
3
+
4
+
5
+ class RoyalMailSettings(Carrier):
6
+ class Meta:
7
+ db_table = "royalmail-settings"
8
+ verbose_name = "Royal Mail Settings"
9
+ verbose_name_plural = "Royal Mail Settings"
10
+
11
+ client_id = models.CharField(max_length=200)
12
+ client_secret = models.CharField(max_length=200)
13
+
14
+ @property
15
+ def carrier_name(self) -> str:
16
+ return "royalmail"
17
+
18
+
19
+ SETTINGS = RoyalMailSettings
@@ -0,0 +1,22 @@
1
+ import django.db.models as models
2
+ import karrio.server.providers.models as providers
3
+
4
+
5
+ class SendleSettings(providers.Carrier):
6
+ class Meta:
7
+ db_table = "sendle-settings"
8
+ verbose_name = "Sendle Settings"
9
+ verbose_name_plural = "Sendle Settings"
10
+
11
+ sendle_id = models.CharField(max_length=200)
12
+ api_key = models.CharField(max_length=200)
13
+ account_country_code = models.CharField(
14
+ max_length=3, blank=True, null=True, choices=providers.COUNTRIES
15
+ )
16
+
17
+ @property
18
+ def carrier_name(self) -> str:
19
+ return "sendle"
20
+
21
+
22
+ SETTINGS = SendleSettings