karrio-server-core 2025.5rc12__py3-none-any.whl → 2026.1.1__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 (112) hide show
  1. karrio/server/core/authentication.py +59 -25
  2. karrio/server/core/config.py +31 -0
  3. karrio/server/core/datatypes.py +30 -4
  4. karrio/server/core/dataunits.py +53 -22
  5. karrio/server/core/exceptions.py +287 -17
  6. karrio/server/core/filters.py +14 -0
  7. karrio/server/core/gateway.py +285 -10
  8. karrio/server/core/logging.py +403 -0
  9. karrio/server/core/management/commands/runserver.py +5 -0
  10. karrio/server/core/middleware.py +104 -2
  11. karrio/server/core/migrations/0006_add_api_log_requested_at_index.py +22 -0
  12. karrio/server/core/models/base.py +34 -1
  13. karrio/server/core/oauth_validators.py +2 -3
  14. karrio/server/core/permissions.py +1 -2
  15. karrio/server/core/serializers.py +183 -10
  16. karrio/server/core/signals.py +22 -28
  17. karrio/server/core/telemetry.py +573 -0
  18. karrio/server/core/tests/__init__.py +27 -0
  19. karrio/server/core/{tests.py → tests/base.py} +6 -7
  20. karrio/server/core/tests/test_exception_level.py +159 -0
  21. karrio/server/core/tests/test_resource_token.py +593 -0
  22. karrio/server/core/utils.py +688 -38
  23. karrio/server/core/validators.py +144 -222
  24. karrio/server/core/views/oauth.py +13 -12
  25. karrio/server/core/views/references.py +2 -2
  26. karrio/server/iam/apps.py +1 -4
  27. karrio/server/iam/migrations/0002_setup_carrier_permission_groups.py +103 -0
  28. karrio/server/iam/migrations/0003_remove_permission_groups.py +91 -0
  29. karrio/server/iam/permissions.py +7 -134
  30. karrio/server/iam/serializers.py +17 -2
  31. karrio/server/iam/signals.py +2 -4
  32. karrio/server/providers/admin.py +1 -1
  33. karrio/server/providers/management/commands/migrate_rate_sheets.py +101 -0
  34. karrio/server/providers/migrations/0082_add_zone_identifiers.py +50 -0
  35. karrio/server/providers/migrations/0083_add_optimized_rate_sheet_structure.py +33 -0
  36. karrio/server/providers/migrations/0084_alter_servicelevel_currency.py +168 -0
  37. karrio/server/providers/migrations/0085_populate_dhl_parcel_de_oauth_credentials.py +82 -0
  38. karrio/server/providers/migrations/0086_rename_dhl_parcel_de_customer_number_to_billing_number.py +71 -0
  39. karrio/server/providers/migrations/0087_alter_carrier_capabilities.py +38 -0
  40. karrio/server/providers/migrations/0088_servicelevel_surcharges.py +24 -0
  41. karrio/server/providers/migrations/0089_servicelevel_cost_max_volume.py +31 -0
  42. karrio/server/providers/migrations/0090_ratesheet_surcharges_servicelevel_zone_surcharge_ids.py +47 -0
  43. karrio/server/providers/migrations/0091_migrate_legacy_zones_surcharges.py +154 -0
  44. karrio/server/providers/models/__init__.py +1 -2
  45. karrio/server/providers/models/carrier.py +103 -18
  46. karrio/server/providers/models/service.py +188 -1
  47. karrio/server/providers/models/sheet.py +371 -0
  48. karrio/server/providers/serializers/base.py +263 -2
  49. karrio/server/providers/signals.py +2 -4
  50. karrio/server/providers/templates/providers/oauth_callback.html +105 -0
  51. karrio/server/providers/tests/__init__.py +5 -0
  52. karrio/server/providers/tests/test_connections.py +895 -0
  53. karrio/server/providers/views/carriers.py +1 -3
  54. karrio/server/providers/views/connections.py +322 -2
  55. karrio/server/samples.py +1 -1
  56. karrio/server/serializers/abstract.py +116 -21
  57. karrio/server/tracing/migrations/0007_tracingrecord_tracing_created_at_idx.py +19 -0
  58. karrio/server/tracing/models.py +2 -0
  59. karrio/server/tracing/utils.py +5 -8
  60. karrio/server/user/migrations/0007_user_metadata.py +25 -0
  61. karrio/server/user/models.py +38 -23
  62. karrio/server/user/serializers.py +1 -0
  63. karrio/server/user/templates/registration/registration_confirm_email.html +1 -1
  64. {karrio_server_core-2025.5rc12.dist-info → karrio_server_core-2026.1.1.dist-info}/METADATA +2 -2
  65. {karrio_server_core-2025.5rc12.dist-info → karrio_server_core-2026.1.1.dist-info}/RECORD +67 -86
  66. karrio/server/providers/extension/__init__.py +0 -1
  67. karrio/server/providers/extension/models/__init__.py +0 -1
  68. karrio/server/providers/extension/models/allied_express.py +0 -22
  69. karrio/server/providers/extension/models/allied_express_local.py +0 -22
  70. karrio/server/providers/extension/models/amazon_shipping.py +0 -27
  71. karrio/server/providers/extension/models/aramex.py +0 -25
  72. karrio/server/providers/extension/models/asendia_us.py +0 -21
  73. karrio/server/providers/extension/models/australiapost.py +0 -20
  74. karrio/server/providers/extension/models/boxknight.py +0 -19
  75. karrio/server/providers/extension/models/bpost.py +0 -21
  76. karrio/server/providers/extension/models/canadapost.py +0 -21
  77. karrio/server/providers/extension/models/canpar.py +0 -19
  78. karrio/server/providers/extension/models/chronopost.py +0 -22
  79. karrio/server/providers/extension/models/colissimo.py +0 -22
  80. karrio/server/providers/extension/models/dhl_express.py +0 -23
  81. karrio/server/providers/extension/models/dhl_parcel_de.py +0 -25
  82. karrio/server/providers/extension/models/dhl_poland.py +0 -22
  83. karrio/server/providers/extension/models/dhl_universal.py +0 -19
  84. karrio/server/providers/extension/models/dicom.py +0 -20
  85. karrio/server/providers/extension/models/dpd.py +0 -37
  86. karrio/server/providers/extension/models/dpdhl.py +0 -26
  87. karrio/server/providers/extension/models/easypost.py +0 -20
  88. karrio/server/providers/extension/models/eshipper.py +0 -21
  89. karrio/server/providers/extension/models/fedex.py +0 -25
  90. karrio/server/providers/extension/models/fedex_ws.py +0 -24
  91. karrio/server/providers/extension/models/freightcom.py +0 -21
  92. karrio/server/providers/extension/models/generic.py +0 -35
  93. karrio/server/providers/extension/models/geodis.py +0 -22
  94. karrio/server/providers/extension/models/hay_post.py +0 -22
  95. karrio/server/providers/extension/models/laposte.py +0 -19
  96. karrio/server/providers/extension/models/locate2u.py +0 -22
  97. karrio/server/providers/extension/models/nationex.py +0 -22
  98. karrio/server/providers/extension/models/purolator.py +0 -21
  99. karrio/server/providers/extension/models/roadie.py +0 -18
  100. karrio/server/providers/extension/models/royalmail.py +0 -19
  101. karrio/server/providers/extension/models/sendle.py +0 -22
  102. karrio/server/providers/extension/models/tge.py +0 -63
  103. karrio/server/providers/extension/models/tnt.py +0 -23
  104. karrio/server/providers/extension/models/ups.py +0 -23
  105. karrio/server/providers/extension/models/usps.py +0 -23
  106. karrio/server/providers/extension/models/usps_international.py +0 -23
  107. karrio/server/providers/extension/models/usps_wt.py +0 -24
  108. karrio/server/providers/extension/models/usps_wt_international.py +0 -24
  109. karrio/server/providers/extension/models/zoom2u.py +0 -23
  110. karrio/server/providers/tests.py +0 -3
  111. {karrio_server_core-2025.5rc12.dist-info → karrio_server_core-2026.1.1.dist-info}/WHEEL +0 -0
  112. {karrio_server_core-2025.5rc12.dist-info → karrio_server_core-2026.1.1.dist-info}/top_level.txt +0 -0
@@ -45,6 +45,9 @@ class UserManager(auth.UserManager):
45
45
  class User(auth.AbstractUser):
46
46
  full_name = models.CharField(_("full name"), max_length=150, blank=True)
47
47
  email = models.EmailField(_("email address"), unique=True)
48
+ metadata = models.JSONField(
49
+ default=core.field_default({}), help_text="User defined metadata"
50
+ )
48
51
 
49
52
  USERNAME_FIELD = "email"
50
53
  REQUIRED_FIELDS: list = []
@@ -71,35 +74,47 @@ class User(auth.AbstractUser):
71
74
  import karrio.server.conf as conf
72
75
  import karrio.server.iam.models as iam
73
76
  import karrio.server.core.middleware as middleware
77
+ from django.utils.functional import SimpleLazyObject
74
78
 
75
79
  ctx = middleware.SessionContext.get_current_request()
76
- _permissions = []
77
80
 
78
- if conf.settings.MULTI_ORGANIZATIONS and ctx.org is not None:
79
- org_user = ctx.org.organization_users.filter(user_id=self.pk)
80
- _permissions = (
81
- iam.ContextPermission.objects.get(
82
- object_pk=org_user.first().pk,
83
- content_type=ContentType.objects.get_for_model(org_user.first()),
81
+ # Helper to evaluate org safely
82
+ def get_org():
83
+ return (
84
+ None if not all([
85
+ conf.settings.MULTI_ORGANIZATIONS,
86
+ ctx is not None,
87
+ hasattr(ctx, "org"),
88
+ ctx.org is not None,
89
+ ]) else (
90
+ ctx.org if not isinstance(ctx.org, SimpleLazyObject)
91
+ else (ctx.org if ctx.org else None)
84
92
  )
85
- .groups.all()
86
- .values_list("name", flat=True)
87
- if org_user.exists()
88
- else []
89
93
  )
90
94
 
91
- if not any(_permissions):
92
- _permissions = self.groups.all().values_list("name", flat=True)
93
-
94
- if not any(_permissions) and self.is_superuser:
95
- return Group.objects.all().values_list("name", flat=True)
96
-
97
- if not any(_permissions) and self.is_staff:
98
- return Group.objects.exclude(
99
- name__in=["manage_system", "manage_team", "manage_org_owner"]
100
- ).values_list("name", flat=True)
101
-
102
- return _permissions
95
+ # Helper to get context permissions
96
+ def get_context_perms():
97
+ org = get_org()
98
+ org_user = org.organization_users.filter(user_id=self.pk).first() if org else None
99
+
100
+ try:
101
+ context_permission = iam.ContextPermission.objects.get(
102
+ object_pk=org_user.pk,
103
+ content_type=ContentType.objects.get_for_model(org_user),
104
+ ) if org_user else None
105
+
106
+ return list(context_permission.groups.all().values_list("name", flat=True)) if context_permission else []
107
+ except iam.ContextPermission.DoesNotExist:
108
+ return []
109
+
110
+ # Functional chain of permission resolution
111
+ _permissions = get_context_perms() or list(self.groups.all().values_list("name", flat=True))
112
+
113
+ return (
114
+ list(Group.objects.all().values_list("name", flat=True)) if self.is_superuser and not _permissions
115
+ else list(Group.objects.exclude(name__in=["manage_system", "manage_team", "manage_org_owner"]).values_list("name", flat=True)) if self.is_staff and not _permissions
116
+ else _permissions
117
+ )
103
118
 
104
119
 
105
120
  @core.register_model
@@ -32,6 +32,7 @@ class TokenSerializer(serializers.Serializer):
32
32
  if queyset.exists():
33
33
  return queyset.first()
34
34
 
35
+ # Handle multi-organization mode
35
36
  if org_id is not None and conf.settings.MULTI_ORGANIZATIONS:
36
37
  import karrio.server.orgs.models as orgs
37
38
 
@@ -5,6 +5,6 @@
5
5
 
6
6
  <p>{% trans "Please click the following link to verify your email address." %}</p>
7
7
 
8
- {{ link }}
8
+ <p><a href="{{ link }}">{{ link }}</a></p>
9
9
 
10
10
  {% endautoescape %}
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: karrio_server_core
3
- Version: 2025.5rc12
3
+ Version: 2026.1.1
4
4
  Summary: Multi-carrier shipping API Core module
5
5
  Author-email: karrio <hello@karrio.io>
6
- License-Expression: Apache-2.0
6
+ License-Expression: LGPL-3.0
7
7
  Project-URL: Homepage, https://github.com/karrioapi/karrio
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Requires-Python: >=3.11
@@ -1,111 +1,77 @@
1
1
  karrio/server/conf.py,sha256=DbO3cm_P9f6Ga9Cd5xaaVso1FhxWTFXgOziI1OEkLqA,1568
2
2
  karrio/server/openapi.py,sha256=eQl1fHpWC2WwokBkkb0y7N7zeXHrC-Eba4gob7YLsMA,2411
3
- karrio/server/samples.py,sha256=qPtP71e2ANsXEvNEAKcwmUvy0L9NWKFrO4Bl-bIxFr8,9219
3
+ karrio/server/samples.py,sha256=2BAImCmIrmqhFad08GkPreeTlt04cc4ucn3Nf2HXR8w,9220
4
4
  karrio/server/core/__init__.py,sha256=CxNflBwGLO7AIGWybF61j7Mk9-a3iCxSjz2nRaER6BM,140
5
5
  karrio/server/core/admin.py,sha256=2h43pTXd3NKV8-_fkUEkzkS4zqih0qBLE8q6Yj7fpEg,33
6
6
  karrio/server/core/apps.py,sha256=VKRPRoB2YY1JlEpCe2AE6k57M1qkPADfq5RYZuLjEOw,211
7
- karrio/server/core/authentication.py,sha256=NiXbfcz3SJjYSKBGLT9-HRYATZXfPRuyALS5bzpNT9U,10555
7
+ karrio/server/core/authentication.py,sha256=LWLO87FoVFqjrXoGcbZI0tBHJw80kEr21JDXyiSkPVc,11727
8
+ karrio/server/core/config.py,sha256=r5vpHUNTAmYzAGZjBYxQo5I1zk2j9IMFyerigzVDnyA,876
8
9
  karrio/server/core/context_processors.py,sha256=B80cJ_7-uviNRYyrfsCcOaUQFBf_eAgQ0hHZPtM5Olw,323
9
- karrio/server/core/datatypes.py,sha256=lM0kKKcEoULrEvpJajbBfiz0xAU4OgOQoiAvalKllNg,10085
10
- karrio/server/core/dataunits.py,sha256=Mbmh6Bi9CwlxdAYLIfLlQjxCSZd_uWN0Dux-GIYTrko,5019
11
- karrio/server/core/exceptions.py,sha256=AR4FNT_1wkMkuv_ZELB9pVRL3RRWsSJ7hrNgBP7H3EU,6038
10
+ karrio/server/core/datatypes.py,sha256=6-taejBQrA_rNr1fRsk0dFMbnXIxQ8r_06jIU0a8-Go,10836
11
+ karrio/server/core/dataunits.py,sha256=FB_0GGTeSTNbePFat9DvHqeulwGX5EjOPCXvG5xUe1A,6482
12
+ karrio/server/core/exceptions.py,sha256=98tKos4Dlv5PpREBAerI34qDlo0f3AStQ-Qh707QXIo,16345
12
13
  karrio/server/core/fields.py,sha256=5i5eetbxFkIQ9uoFk8k2xPl1mXXnaVKlPV4xwlF3inY,345
13
- karrio/server/core/filters.py,sha256=nHj742vPWE3Xs_tpwRRVUh00OwxnF22xKfIK7rx-sw4,27434
14
- karrio/server/core/gateway.py,sha256=TH3-RIxZ2BUrteyDAXWxH_GvY4pC4A_l7t-pRbLDO-M,25747
15
- karrio/server/core/middleware.py,sha256=euRkeIvNv3G-b_U3fKDO6po-2dbYF0LiXUYg2nyeCI0,3017
16
- karrio/server/core/oauth_validators.py,sha256=5JxDkXB_HX4a4xJltZcFGukO7o2cUl9h2t9O8Gp87Zc,6673
17
- karrio/server/core/permissions.py,sha256=JY3_hTEnyDTWG-weAWPx8xMoaRZwpNL2HaSssBzjH7Y,1189
14
+ karrio/server/core/filters.py,sha256=6zOI7QLFjKcypz7Tff1POVvIaD0oiQsH4EcVGSAETuo,27954
15
+ karrio/server/core/gateway.py,sha256=M0pHHs5JnK3UDueCEX2bZaFx8O9xIkQQKYIeiGmuY0o,35141
16
+ karrio/server/core/logging.py,sha256=lD1U7OXxc06A2hn22NcGVmYvPWyJQV8MPNIVGhAF9Dw,13153
17
+ karrio/server/core/middleware.py,sha256=tdYWkyjCYMKyycE0inrpenWHLnvUdYnRIelQPUvOUzs,6931
18
+ karrio/server/core/oauth_validators.py,sha256=9_5zodbZyA-D2Y-e4YcgSTZtc6WAdL0xPQ-ZKiLBphA,6643
19
+ karrio/server/core/permissions.py,sha256=pnQIXBQ1vGKfl23qb3EmsFCqilH442UggXaXNQvxb4U,1183
18
20
  karrio/server/core/renderers.py,sha256=IUEUhvvrk_CeqnmnYQgWKHiH3uQhNc0eqDxyO9CuUS4,290
19
21
  karrio/server/core/router.py,sha256=IBUR7rfBkdEHQzWxYOPcVSM8NBp3fte9G6Q5BVTUNNw,95
20
- karrio/server/core/serializers.py,sha256=-wm4uQjtbR5z7qtAxJ7O2ApwzXmfFEdJkspQiVXeCj4,60074
21
- karrio/server/core/signals.py,sha256=thHh4K4uP3smWuy9kWavFfdOAttH9xN3og_j4lDWdKM,1742
22
- karrio/server/core/tests.py,sha256=rmZoZfPBRoMO-U3HtDxeKofnzsfijYeDVQrnw5Mb_dU,3164
22
+ karrio/server/core/serializers.py,sha256=-jkqcXRrQDa3LNbMB9rYkGA7H2_EQvqAU7BN6DRwsvM,65079
23
+ karrio/server/core/signals.py,sha256=iGure2B87jgRB3bJYIcsxyUUhKXPUwjWQCh0VouR_3g,1552
24
+ karrio/server/core/telemetry.py,sha256=TZd_rq_TUZvgGOySzY5yVK6m_ATd5PTQ2EqWnagdqr0,24597
23
25
  karrio/server/core/urls.py,sha256=JQrN6dI7A7c_M498EcDKdjDqlp_d64Ov-RS4HHmssRk,337
24
- karrio/server/core/utils.py,sha256=xY8aklHPtbaJsCPiKonk5HoY0FrSNseS859RZEQJ9mU,14022
25
- karrio/server/core/validators.py,sha256=3XwjJurJJM6jKwNcZRUyr7j1k8DuOnhct1_1N9ildFg,13934
26
+ karrio/server/core/utils.py,sha256=jdhiRqKwPT5j8hg7TNfvuqj2GNoWiiwdB1emu5IuWNM,36357
27
+ karrio/server/core/validators.py,sha256=in_daNCjS4ye2HJdQW3KIAAUUeRba6LgmEv0kOW9l_o,11505
26
28
  karrio/server/core/management/commands/cli.py,sha256=EEIbFHZTroJoUxSOKnebsXtXTbsc408t5b9qSc0QRqk,720
27
29
  karrio/server/core/management/commands/create_oauth_client.py,sha256=wdxCeHuUtGpwgV0WItJkW8Di65y9krnFYNEmcgh9x2k,1718
30
+ karrio/server/core/management/commands/runserver.py,sha256=Xaejg4d3GbMuZuIYmnSVEmln8xHf6YGwEEXcetsWkxA,171
28
31
  karrio/server/core/migrations/0001_initial.py,sha256=8c-JMkt84Z5C1Zgm2jw4NiI6tYSK4OLcB-uhxiEDN98,701
29
32
  karrio/server/core/migrations/0002_apilogindex.py,sha256=HJLJA6jyrszBWBsq03xb69UZ4SEMrIX9Mkd3dTduOpc,2117
30
33
  karrio/server/core/migrations/0003_apilogindex_test_mode.py,sha256=-a7OpNnBe7fPOuJeKTUjsbrNBqGpWEOjT536-zJaA-A,1859
31
34
  karrio/server/core/migrations/0004_metafield.py,sha256=alJaMZcCRCtMCS4HnGnUv_5xmIsKdl7kxhn15Zatr8A,2618
32
35
  karrio/server/core/migrations/0005_alter_metafield_type_alter_metafield_value.py,sha256=VJurQURhAht8MG2i39KhJFi6DL1J9C6ASY_y3VvSmSo,754
36
+ karrio/server/core/migrations/0006_add_api_log_requested_at_index.py,sha256=MaErg0jF7wd5fN3pLjqTUx9qUgAZhU6pGbeDf78Eikk,652
33
37
  karrio/server/core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
38
  karrio/server/core/models/__init__.py,sha256=iw1pwHhXpWru5AnLimWzH3mouad9-GTrYTWsmZOC6hU,1176
35
- karrio/server/core/models/base.py,sha256=pRdm0GIOdGZCrxj-U6cZGTFp4KJuOQhCGtiZNJF1qiE,1785
39
+ karrio/server/core/models/base.py,sha256=ZOrsF6BtUr15Sq_S1JgcPavDLDuCTVsqAnItUw95JUc,3199
36
40
  karrio/server/core/models/entity.py,sha256=cUSIzv84RIPif2DdNSScY7RHuHgXufwIF8YNZ8BYC1g,722
37
41
  karrio/server/core/models/metafield.py,sha256=etzJ1BS98Ipe3mxJuDOK3-c36Z2oZKgnPaHQmYta2Dw,5048
38
42
  karrio/server/core/models/third_party.py,sha256=iNXvcq0pJN2gFu5Bu03k6FMdQNxEhzoijIhl4lc7JmU,552
43
+ karrio/server/core/tests/__init__.py,sha256=HXomRH4SWE93IhadyivOEXLzqiS6gOANcXsp0UfmhMo,792
44
+ karrio/server/core/tests/base.py,sha256=5KwMYw2shlpActl7NaNRje95dhuuim7lM8LDWOPpcEg,3263
45
+ karrio/server/core/tests/test_exception_level.py,sha256=s6fpGlBEn8tnY0qWKlfNEXu_BBzttNQMgvS-0XHxVhw,5648
46
+ karrio/server/core/tests/test_resource_token.py,sha256=J01JqtRUv_mCjY--kiNiMEuC1H7dTQPxvhHHPm_Yq2U,20469
39
47
  karrio/server/core/views/__init__.py,sha256=jvhomX2_aiPcfdUjq7_kzp5rOerLwScnbRNDqs751Zo,88
40
48
  karrio/server/core/views/api.py,sha256=-86Otg_3hUNfP8G4MmzGnLMlOwZI0rzn9_wgw6uFP0w,4276
41
49
  karrio/server/core/views/metadata.py,sha256=UypfgqS6YVmBxNLX39ql6bwLr5z-yHow0Dm8GjrztHg,1381
42
- karrio/server/core/views/oauth.py,sha256=eqoru69luDePN8AtW1w4__v6xCYX28YKX5QUjgQ5zMk,3046
43
- karrio/server/core/views/references.py,sha256=FDzejKJRjoNFquBE-AmlMs1qjaaLtk5A2COC74bwslE,2552
50
+ karrio/server/core/views/oauth.py,sha256=yYmXNgWblSGL2AF8SFZGdprlo-vVUANONwHI0Prx0r8,3151
51
+ karrio/server/core/views/references.py,sha256=VuragUSMKdpClHF7JT57-a_lUQpIwNQS6O1m0463gH4,2626
44
52
  karrio/server/core/views/schema.py,sha256=Ehyv16UvBw_zxosmoU0ZDDhovFukKfzniHemEVWLnQw,12128
45
53
  karrio/server/filters/__init__.py,sha256=kB0k-Rzf2nYvAYy82umJ7QfRgefoI7xvsJzPR3nDuWo,74
46
54
  karrio/server/filters/abstract.py,sha256=llajZBMFUwAifBO1rRpcx7scrUJo1rfHd8F4Dzw0n_o,739
47
55
  karrio/server/iam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
56
  karrio/server/iam/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
49
- karrio/server/iam/apps.py,sha256=4nW48R38s1uHckn6smnDDyDBU39pTPMBUHjYFNmuRRo,620
57
+ karrio/server/iam/apps.py,sha256=P2iMJxXvp6Y03WYt4rOl_BqontDBbBwMKrCF3DBkvFE,456
50
58
  karrio/server/iam/models.py,sha256=A2IbnKtoXq3ocXhYBCRUpqXz5dVoSOBPM04SbuQf7gA,1536
51
- karrio/server/iam/permissions.py,sha256=7MmJmJt0o1SOjn0buBC6GR6hNYXERgA_4TWazi9klIE,4066
52
- karrio/server/iam/serializers.py,sha256=h5Xq2eTdorcfqvDbIYYr69MxyM4iub5-ZsHvoeFoKGs,1164
53
- karrio/server/iam/signals.py,sha256=BaTIgdhDWUhvPrSUCyjHPL5J82JzG3rh9Ry_gK3TF1Q,603
59
+ karrio/server/iam/permissions.py,sha256=2KWccO3ydj0mGYABpdF1ihicm85zGPRwtxv8us2TLew,385
60
+ karrio/server/iam/serializers.py,sha256=YIkGZgXfN3CLNM4OT3GkL97f50wnE6ZEAI64MYgirDc,1875
61
+ karrio/server/iam/signals.py,sha256=WSHN4mpxVlP829CftMs8e0oL_yqx5C085_GnGFO0fiE,613
54
62
  karrio/server/iam/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
55
63
  karrio/server/iam/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
56
64
  karrio/server/iam/migrations/0001_initial.py,sha256=Qq0yvnCQLtUdZGGYlPEb92Tp4b6CO1PKX7nre-69Cw0,1779
65
+ karrio/server/iam/migrations/0002_setup_carrier_permission_groups.py,sha256=Auql-H3v9cXY7zxHX6SEg0EWfMyg0YfR6dCTh9hUKiE,4057
66
+ karrio/server/iam/migrations/0003_remove_permission_groups.py,sha256=H_6hdhPelRkc_M0ne4arR66xwXDBFcSI1_mQLCuup9I,2481
57
67
  karrio/server/iam/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
68
  karrio/server/providers/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81
59
- karrio/server/providers/admin.py,sha256=m9bFVBvHNNu_mlb5B8np6ue7dnV5JzRp7CpkXMP7Ayk,13348
69
+ karrio/server/providers/admin.py,sha256=fNyuNOYd84jjhBtciSok4QDUsU0yp_sGydkjlRDjqZU,13398
60
70
  karrio/server/providers/apps.py,sha256=HncfdoMhlfj-rFd7OX_Fo8naOjqh0VpjNIsUWdgzKFo,217
61
71
  karrio/server/providers/router.py,sha256=IBUR7rfBkdEHQzWxYOPcVSM8NBp3fte9G6Q5BVTUNNw,95
62
- karrio/server/providers/signals.py,sha256=4WXTVhPuI1z5MgVdqzHz0FdKXGHN_gdP9Fc13QQbuh8,748
63
- karrio/server/providers/tests.py,sha256=NLkDTvAQ0tDq6-kk3ZuipLpZXrk68pGCrWDeixiKQqQ,67
72
+ karrio/server/providers/signals.py,sha256=zVx0Yj1nCauXA6Ge2LAtzH9QlgByFB4yMh7L1Z8Zvk4,738
64
73
  karrio/server/providers/urls.py,sha256=5whUqyPA9q5tfowr2Z-ilvfMwFUOEXkd_HuoFNs4a2E,278
65
- karrio/server/providers/extension/__init__.py,sha256=iOEMwnlORWezdO8-2vxBIPSR37D7JGjluZ8f55vzxls,81
66
- karrio/server/providers/extension/models/__init__.py,sha256=bpT73UG7mZL_JjEqMwbYx6q69jA8J5Jcoul1LcDokhA,81
67
- karrio/server/providers/extension/models/allied_express.py,sha256=Fk0D4aDSOqyW5RPI4jcJ4CG6BTwDVr8r_oCzp28-uaQ,665
68
- karrio/server/providers/extension/models/allied_express_local.py,sha256=j-XsbsujEG1dN92s5u9f9_Ql_K0hJRmDAtegpipBU2w,699
69
- karrio/server/providers/extension/models/amazon_shipping.py,sha256=Y6AhO9xmkWdMiCJQieG-3RCaYdVCN5IzieNW792Xm2s,784
70
- karrio/server/providers/extension/models/aramex.py,sha256=NKOvuNd-WbUW1Fn03QJgomGgUy8SZU95KllbTXYtdhk,746
71
- karrio/server/providers/extension/models/asendia_us.py,sha256=4iV95aN4scmcQmT-g28LRTh5EDOEPwmA7h4gg9KGUMw,612
72
- karrio/server/providers/extension/models/australiapost.py,sha256=IDHSYBoD2xpmHo8L4PNKwaQgOKsC3Cq84wuYA6EmEIE,560
73
- karrio/server/providers/extension/models/boxknight.py,sha256=hihKJcxbDmxsihmYVTCAMzY2-MTehlM6o3XsyjUOjrc,493
74
- karrio/server/providers/extension/models/bpost.py,sha256=-PmkRYxXVqgEt68ZY7fu19eUBpf2U3ubhBCVH9SoiHQ,596
75
- karrio/server/providers/extension/models/canadapost.py,sha256=-YeC14u5KPR-OEamnVqtmh5HEubFl2kKVBtAGloCTAI,648
76
- karrio/server/providers/extension/models/canpar.py,sha256=iqyes3lWN2UEB2DEJUphJKnKCXEJDgpOTwB6rDAcOTc,462
77
- karrio/server/providers/extension/models/chronopost.py,sha256=5K162hrmU-9E4ZZ4ApqOy_BsDvoJ30jK6Kt_MtzbXc0,639
78
- karrio/server/providers/extension/models/colissimo.py,sha256=iL6a7kCa17d8cMcN_SJnHQeTqnvjEDf7-G7tWxjTK0o,668
79
- karrio/server/providers/extension/models/dhl_express.py,sha256=ZLhkl3NFWiK9srqV0rYW8rtxEpO3saWu672gXP25W9c,692
80
- karrio/server/providers/extension/models/dhl_parcel_de.py,sha256=CGxr7anMMkkXHRmxa5YbBYwQWTWVMIbtLW2tolYaRx4,894
81
- karrio/server/providers/extension/models/dhl_poland.py,sha256=iZsBmHpLqWekaytu0vEO6NXMJJuFAT_f9udsjcbu324,665
82
- karrio/server/providers/extension/models/dhl_universal.py,sha256=Zbpi2FWVNXZfdWP-GrzzOqEnEikwQg0YT09v572HHDA,531
83
- karrio/server/providers/extension/models/dicom.py,sha256=51F14KSa8FSq8Q-1XLcDKsB0KlWNU1C3lQOuUbNdfGg,531
84
- karrio/server/providers/extension/models/dpd.py,sha256=RzM5Y8wPsBPTW1s8YGtPSdpK8IPldyy21GV-bcuoBBM,1100
85
- karrio/server/providers/extension/models/dpdhl.py,sha256=TdvQxX-XT_k5h_UD_HvmRpzrfv2PNsNztALZHLMiun8,1010
86
- karrio/server/providers/extension/models/easypost.py,sha256=MR9Gh3WAQXyAm7MvVKsWzUrnyDmHx76ynVViBioSZHI,463
87
- karrio/server/providers/extension/models/eshipper.py,sha256=BXlgzCR_JUBnSDP_dvPaD06gY_EVC_lxDTAkTGLsWjM,522
88
- karrio/server/providers/extension/models/fedex.py,sha256=vwZIdHxIU-Kg0B7BhLEgF2z5Ala-2qBjBzUT6Fb5rkg,865
89
- karrio/server/providers/extension/models/fedex_ws.py,sha256=6Zk9Ep7GLzaAr9nBRTTkP4qp7E7rPeg2xgM3Uil-5AI,730
90
- karrio/server/providers/extension/models/freightcom.py,sha256=sv32d19ijmJGwqZrb8Bn16OGDcc2j8eLyhjO8dumLcM,524
91
- karrio/server/providers/extension/models/generic.py,sha256=sX8_R_BV13JtS9FOFq7mJLlOghnyxo3ZFHpdDKVaBI0,1254
92
- karrio/server/providers/extension/models/geodis.py,sha256=O4zKQtLfaffSrpb_5KQhEiLddSROHJzIqy78mM6u-xM,600
93
- karrio/server/providers/extension/models/hay_post.py,sha256=ep4Bdvk2kWYFp0mScJMOptogK4ANz-IcC-Am13lrsJc,592
94
- karrio/server/providers/extension/models/laposte.py,sha256=Incnqxs8tf_Ii3CEUrQwQ57DWTfDFH0UfM_HufRpspE,505
95
- karrio/server/providers/extension/models/locate2u.py,sha256=7hLIAuyjnX-FJOBr_4mh7HA4KHfSdsgaPJWaxJ2BGHM,619
96
- karrio/server/providers/extension/models/nationex.py,sha256=KdaDbYqkvu16rhRPH4dMYM3bviOg90Y2o3RirDdaxZA,640
97
- karrio/server/providers/extension/models/purolator.py,sha256=-PjcZFBRw4qRfbH5F0xnDqH3Eyf3_kskfGJ3VsWNsNk,595
98
- karrio/server/providers/extension/models/roadie.py,sha256=ULznpZ701H1p5ouO4mDIxoYcd8lz3NjYJfsTw2L8b_Q,428
99
- karrio/server/providers/extension/models/royalmail.py,sha256=MpyQL5VhaBWJNbOEcZQ76MvTvUIiOaEDpkh6yONpEa8,488
100
- karrio/server/providers/extension/models/sendle.py,sha256=4K3AATNFYnEvnkSuQEP202BE4RcH5qJGUMCBunr92gs,593
101
- karrio/server/providers/extension/models/tge.py,sha256=N_gUh9_vwe5Trs36pVadAsdyN0rLyZoLjgsJDR1ALpU,1958
102
- karrio/server/providers/extension/models/tnt.py,sha256=s_dg5hHv4So_yT_ZspfGQTxLqv_bjsFzDYuOKeLySiM,637
103
- karrio/server/providers/extension/models/ups.py,sha256=ruDfBCb0ZKb7g0rrP5DRIbROwOfymKx0bRH94jujqNA,658
104
- karrio/server/providers/extension/models/usps.py,sha256=LO-yYVg68wLvIlfesmH2EvOXCZV5fu4dT1fdHZq2Yh4,653
105
- karrio/server/providers/extension/models/usps_international.py,sha256=k3opE3W4svC5MNqp398xtSYpet2YFSOSbgjHT80r3L4,728
106
- karrio/server/providers/extension/models/usps_wt.py,sha256=6RkR8mnFT9AWMEtW7l-ZB1BY9TkEYnLKtIiLyhwIqw0,731
107
- karrio/server/providers/extension/models/usps_wt_international.py,sha256=5QJdeNeshl1KCbQ6ravoh3vrU94QEN89noYZEF9kAW0,825
108
- karrio/server/providers/extension/models/zoom2u.py,sha256=3RvkZkAYvpXDW9fCmViOJB5NrSPo2_d_qpjcsWuCVtQ,585
74
+ karrio/server/providers/management/commands/migrate_rate_sheets.py,sha256=piRV1n0itHQR4HZiWXVSjJKzHZPnFGKlrCjWOcy723A,3814
109
75
  karrio/server/providers/migrations/0001_initial.py,sha256=DkKU91a1tMqRisLoarYndyKX3PJplT4Bor6tT53yETw,6772
110
76
  karrio/server/providers/migrations/0002_carrier_active.py,sha256=zW_6cFEKmsZIbiuLimcUlwzVvpckYroJmzkCwep-D2A,378
111
77
  karrio/server/providers/migrations/0003_auto_20201230_0820.py,sha256=qkvoSgtkGxg0XX0Srd35hanzl5tI7bBo3znli_h002g,699
@@ -187,40 +153,54 @@ karrio/server/providers/migrations/0078_auto_20240813_1552.py,sha256=1DXKf6Ak_GP
187
153
  karrio/server/providers/migrations/0079_alter_carrier_options_alter_ratesheet_created_by.py,sha256=wppkE5LZaPiedrLMAkUpVly5FlSg6zbLBzO7a_yyUuk,864
188
154
  karrio/server/providers/migrations/0080_alter_aramexsettings_account_country_code_and_more.py,sha256=ETTlvcAP1kk9Sr4u6f2EaG0hXcIaYVZKz0c6k7f-Cg8,101848
189
155
  karrio/server/providers/migrations/0081_remove_alliedexpresssettings_carrier_ptr_and_more.py,sha256=Lb8w5LEnJgCd-a4suFAdZ3-gWHlIbLIJLahTGlUmi_U,9557
156
+ karrio/server/providers/migrations/0082_add_zone_identifiers.py,sha256=0gRIFemNGNRkvV_pt0u3e-wL2LI89AKwaFWoqOqjAsA,1509
157
+ karrio/server/providers/migrations/0083_add_optimized_rate_sheet_structure.py,sha256=K9jj1LGEs5WQvIUxWac1wbCI6YnrrzTIcD3PzjZZcHA,1057
158
+ karrio/server/providers/migrations/0084_alter_servicelevel_currency.py,sha256=o5_wiQ7dbqSG-OfLgJQPRj48Jmi573s5LweikF9oq5E,5726
159
+ karrio/server/providers/migrations/0085_populate_dhl_parcel_de_oauth_credentials.py,sha256=ccF8FQXpRUDV78N5vzORw9gX1Do2L6_IWV7f2zAnlxk,2754
160
+ karrio/server/providers/migrations/0086_rename_dhl_parcel_de_customer_number_to_billing_number.py,sha256=XaLVAKPha0aDhxqGMH5DfMetg1lvXmibI1s9S7v_TZs,2600
161
+ karrio/server/providers/migrations/0087_alter_carrier_capabilities.py,sha256=0VGkI_6ZqKuLgVx-oD_euXekx1at478opgducSNkcIg,1253
162
+ karrio/server/providers/migrations/0088_servicelevel_surcharges.py,sha256=1SCEkcAJoElOTSTFy1ZX9nXRnLBv0nnshNstML4bUzc,664
163
+ karrio/server/providers/migrations/0089_servicelevel_cost_max_volume.py,sha256=2ran6dzIE2rUj6i5POhgnPh3Blo9Hbev7xS-kvQchIo,864
164
+ karrio/server/providers/migrations/0090_ratesheet_surcharges_servicelevel_zone_surcharge_ids.py,sha256=gVvLzvHe6oRJsC1CmbZr97HSaTHbZfpVks8GXUeeI7g,1669
165
+ karrio/server/providers/migrations/0091_migrate_legacy_zones_surcharges.py,sha256=xwj9fD7mcNrmE1Wg4BC17gCY2nE9ocXTHSmcTPEGbro,6368
190
166
  karrio/server/providers/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- karrio/server/providers/models/__init__.py,sha256=7D-pgQDTDSfptHhWxfJlOzSQqvYB_71D22zmNqjuBqk,628
192
- karrio/server/providers/models/carrier.py,sha256=E3zPcypTAQi1ninAQjKbelGAV8cZI8g_voRJ2KETrxQ,9436
167
+ karrio/server/providers/models/__init__.py,sha256=yeFm9ZdtiEpMCZpY0dhP3TY9ndWut-BDxtN5qiL8VOQ,566
168
+ karrio/server/providers/models/carrier.py,sha256=p10EmWcBeta96V4ZK0T77BwCS3v6sh5pCJ9R1wp1afo,12546
193
169
  karrio/server/providers/models/config.py,sha256=8zuDXFGXBrC4fj2dW1-NpLAtFYPunEJi8uK-PezD7eo,759
194
- karrio/server/providers/models/service.py,sha256=_iT6Cty3HJJmjEXB423PjhEcQ4ArtMPKaxBZYTmhdaY,2161
195
- karrio/server/providers/models/sheet.py,sha256=GokxEfSAkjtKw5AkCtN0enP204RWRI0ZcQI5Lz-XgBU,1683
170
+ karrio/server/providers/models/service.py,sha256=MbWdszoUhjt6LExN0RTkobLE2d5QqX5K5ud1FvL4tfw,9606
171
+ karrio/server/providers/models/sheet.py,sha256=1zFznv7yurJ3IYSdEUmShuxOqRC6cKD_WNK8TEuebDE,18199
196
172
  karrio/server/providers/models/template.py,sha256=rrQXfimqFEFkelKzjyVeAruiu3UmrhpOT4M7JrGOtI0,1109
197
173
  karrio/server/providers/models/utils.py,sha256=fuvrpDz2KzcRC7w94zFQAaI4qtQPvs8f1r6jZ5xM-64,1703
198
174
  karrio/server/providers/serializers/__init__.py,sha256=bc5x1z7wkHyrHA2jP1wZVQF5SoPG-ueRVfn1RndK8VM,140
199
- karrio/server/providers/serializers/base.py,sha256=SsGBXcjGHPPsXLt0hQ7jWfFcVgO2EyvHtluTxtPM0Hc,8961
175
+ karrio/server/providers/serializers/base.py,sha256=hxYxgkZzNAZVsCnDY33e5qXUQqOTXyskG-zm3LoRFHI,17404
176
+ karrio/server/providers/templates/providers/oauth_callback.html,sha256=LF5SOnxF5v8gFJyADlaLBmbBeNF1Fs4mH6Nv22OKgMs,3941
177
+ karrio/server/providers/tests/__init__.py,sha256=Gf-n7PXjj01-z7tVJu6ADDKw7Ag2OuFpsUzyCXqz99U,112
178
+ karrio/server/providers/tests/test_connections.py,sha256=u8tjee8Ba-f8Blu37dcHD_wiCcZFYyNtOw3qaLCx0X8,30511
200
179
  karrio/server/providers/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
- karrio/server/providers/views/carriers.py,sha256=_uD_soDZDmMxzfu8mQqeLLcDd4ixnE7f8HjoUlybym8,8808
202
- karrio/server/providers/views/connections.py,sha256=3Y1rfNsZxkn4YBA03WRQiI-y-AC4EYaOGaMjLmCcz1g,6038
180
+ karrio/server/providers/views/carriers.py,sha256=fUcvg0fI3PgWSTBgNLGMLDoz5YpQWn2wLRCV71lDwZQ,8801
181
+ karrio/server/providers/views/connections.py,sha256=hoYpMC8y3UzMHBpvd0ZwdLdL2olvX3VE585XmhI2wCs,16990
203
182
  karrio/server/serializers/__init__.py,sha256=TzD3Lt8Gf7VV5ibGITGg5-ki-M8CR0hzZFulcI2ASJM,90
204
- karrio/server/serializers/abstract.py,sha256=WS4ey0W_NIMGl-5a2rpaZPdU9bKJmfDSpyHNs81PsGo,15583
183
+ karrio/server/serializers/abstract.py,sha256=qx7uQ8F1xey5MdpOO0L57s1rMAkgE5utgQW-Tt2bXGk,19112
205
184
  karrio/server/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
185
  karrio/server/tracing/admin.py,sha256=6BZCJiBhJVg3vt8cYx9HF_FgcjanMD42la6bBORlSL8,1904
207
186
  karrio/server/tracing/apps.py,sha256=6BfIomUwBV8k7yaypl6kYYAkLSG1aceUmuxvbhw04fI,247
208
- karrio/server/tracing/models.py,sha256=2J3BTzuOGdD_bRPVv50E_inkUaAvRAPa7lu-4AOK5Oo,2717
187
+ karrio/server/tracing/models.py,sha256=g_D2Reur2zQD2Zdu-9_mV2EJvo4blcT5SnBedNcapHs,2862
209
188
  karrio/server/tracing/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
210
- karrio/server/tracing/utils.py,sha256=LKWtr7ysEeqKRqz8rSyjxtEO3fzMXHw792s8AvLq4fc,3803
189
+ karrio/server/tracing/utils.py,sha256=RrZaEjmm-kmei6r6Np6XcfGQR-IKDblMNvqot4o31mc,3929
211
190
  karrio/server/tracing/migrations/0001_initial.py,sha256=lgXoZrk4x3EQ1pVoRT2r7LnhEMvqOdeqIDwZwyFq_cE,1921
212
191
  karrio/server/tracing/migrations/0002_auto_20220710_1307.py,sha256=zVaDQTIvaGPsmYFZgXngVODj0HqAYCdauMLjHU4fvmU,790
213
192
  karrio/server/tracing/migrations/0003_auto_20221105_0317.py,sha256=_e_ToeLYpZWscRD0Irbwy7gTSFmBHrvF3uBEP4Jdc_I,1244
214
193
  karrio/server/tracing/migrations/0004_tracingrecord_carrier_account_idx.py,sha256=qBpxmVRr9HSdyxG8IH6JUpCgRSkntN3wHEgCFq-EVvc,652
215
194
  karrio/server/tracing/migrations/0005_optimise_tracingrecord_request_log_idx.py,sha256=vjly5GqUNClIZu8xnNSPVB0q5d0hCXuUaJUm-_WJK8c,731
216
195
  karrio/server/tracing/migrations/0006_alter_tracingrecord_options_and_more.py,sha256=5MqxRp4_0GBUIUj0vne55LrqdNiw-eN3uLQiWlkIwgQ,1647
196
+ karrio/server/tracing/migrations/0007_tracingrecord_tracing_created_at_idx.py,sha256=ugZWKPNbX5LNmLdJ6BGKXWrf_Ky5YDrIuNnqooCK4X4,517
217
197
  karrio/server/tracing/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
198
  karrio/server/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
199
  karrio/server/user/admin.py,sha256=psRIcm1IjR6K_69cJJCDBUQT226I9gPvfFhHoAeA_3Q,2514
220
200
  karrio/server/user/apps.py,sha256=hCTQ-YXuDd7eW4ZMkVf6OcmmFCu5uVpFWCxfb1lzdCw,209
221
201
  karrio/server/user/forms.py,sha256=hgEbEs17Cwib5KsckVweapEmAQvE0fWpwxkJMDc__Y0,1049
222
- karrio/server/user/models.py,sha256=irfYyrSybgMRGj85JXV21WmgcCYUCWTY2L89c79PPNM,6232
223
- karrio/server/user/serializers.py,sha256=tdTB0g4q3EIY2Uv7rrpWlkKEuHms-fTK6XXUr_Z6hBY,1557
202
+ karrio/server/user/models.py,sha256=jBRV8KE1vp-Gy7UD1uuVxyo7k8id8QDjKHyXukq7ubI,6998
203
+ karrio/server/user/serializers.py,sha256=BDHQxL_4TNP3iZVCdC3cnZiM6_4i315Nq2cig5TX62E,1598
224
204
  karrio/server/user/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
225
205
  karrio/server/user/urls.py,sha256=3p-ZivD78caBDDeV63XJjMuILdr258JXED788OJ_hLQ,243
226
206
  karrio/server/user/utils.py,sha256=6u5fDc0gdIZ4_Hjsmr2BRAtkNDU0MMfh0gk9_snPYkg,1828
@@ -231,11 +211,12 @@ karrio/server/user/migrations/0003_token_test_mode.py,sha256=YEqSXx6FDysbTqAuZmw
231
211
  karrio/server/user/migrations/0004_group.py,sha256=ki5yjRYDwgNk-Wmy8slb_PvPJmFAOrXf9k7o3rm4JZw,791
232
212
  karrio/server/user/migrations/0005_token_label.py,sha256=YlKQMJs5OjInq-seb5r-0hwPzIZlb3ay0nuKoLJgGDk,515
233
213
  karrio/server/user/migrations/0006_workspaceconfig.py,sha256=vhprvPvdt7AIUr44KLVd-cVQh4opEL1lIVoW5HHTiYI,2089
214
+ karrio/server/user/migrations/0007_user_metadata.py,sha256=ndv3eHZWPIExC1JR6ChpkzuXCIsHXTvWgg0bXnRIWbc,619
234
215
  karrio/server/user/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
216
  karrio/server/user/templates/registration/login.html,sha256=3_tj-0rKfwkCk-fp_GT8xFQhLqjGcJs3uZzOAaI40Sw,3690
236
- karrio/server/user/templates/registration/registration_confirm_email.html,sha256=zFDkNN_BHMQyrBv_mU8aoqXxYxG91TGuf6pKwRa5jxE,247
217
+ karrio/server/user/templates/registration/registration_confirm_email.html,sha256=haJ1DVM27umaxegACs4tNAj296HxVZfWCSTyD0Nt5I8,279
237
218
  karrio/server/user/templates/registration/registration_confirm_email.txt,sha256=I_zN_pJTRigfyiYbyQK0wFfrI5Zq1JG8lf0TyLA9fN0,94
238
- karrio_server_core-2025.5rc12.dist-info/METADATA,sha256=mUiD-2FjXZNzxvJy-7eXCtYoIWjUCN2ra_z07f5E7Uc,797
239
- karrio_server_core-2025.5rc12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
240
- karrio_server_core-2025.5rc12.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
241
- karrio_server_core-2025.5rc12.dist-info/RECORD,,
219
+ karrio_server_core-2026.1.1.dist-info/METADATA,sha256=gZk8dBqEbhn7o1CumTFsUeKorCzFq05ljWNncD-xeB4,793
220
+ karrio_server_core-2026.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
221
+ karrio_server_core-2026.1.1.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
222
+ karrio_server_core-2026.1.1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- __path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore
@@ -1 +0,0 @@
1
- __path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
@@ -1,22 +0,0 @@
1
- import django.db.models as models
2
-
3
- import karrio.server.providers.models.carrier as providers
4
-
5
-
6
- class AlliedExpressSettings(providers.Carrier):
7
- class Meta:
8
- db_table = "allied-express-settings"
9
- verbose_name = "Allied Express Settings"
10
- verbose_name_plural = "Allied Express Settings"
11
-
12
- username = models.CharField(max_length=50)
13
- password = models.CharField(max_length=50)
14
- account = models.CharField(max_length=50, null=True, blank=True)
15
- service_type = models.CharField(max_length=50, null=True, blank=True)
16
-
17
- @property
18
- def carrier_name(self) -> str:
19
- return "allied_express"
20
-
21
-
22
- SETTINGS = AlliedExpressSettings
@@ -1,22 +0,0 @@
1
- import django.db.models as models
2
-
3
- import karrio.server.providers.models.carrier as providers
4
-
5
-
6
- class AlliedExpressLocalSettings(providers.Carrier):
7
- class Meta:
8
- db_table = "allied-express-local-settings"
9
- verbose_name = "Allied Express Local Settings"
10
- verbose_name_plural = "Allied Express Local Settings"
11
-
12
- username = models.CharField(max_length=50)
13
- password = models.CharField(max_length=50)
14
- account = models.CharField(max_length=50, null=True, blank=True)
15
- service_type = models.CharField(max_length=50, null=True, blank=True)
16
-
17
- @property
18
- def carrier_name(self) -> str:
19
- return "allied_express_local"
20
-
21
-
22
- SETTINGS = AlliedExpressLocalSettings
@@ -1,27 +0,0 @@
1
- from django.db import models
2
- from karrio.server.providers.models.carrier import Carrier
3
-
4
-
5
- class AmazonShippingSettings(Carrier):
6
- CARRIER_NAME = "amazon_shipping"
7
-
8
- class Meta:
9
- db_table = "amazon_shipping-settings"
10
- verbose_name = "Amazon Shipping Settings"
11
- verbose_name_plural = "Amazon Shipping Settings"
12
-
13
- seller_id = models.CharField(max_length=50)
14
- developer_id = models.CharField(max_length=50)
15
- mws_auth_token = models.CharField(max_length=50)
16
- aws_region = models.CharField(max_length=50, default="us-east-1")
17
-
18
- @property
19
- def carrier_name(self) -> str:
20
- return self.CARRIER_NAME
21
-
22
- @property
23
- def x_amz_access_token(self) -> str:
24
- return "" # Setup the access token here.
25
-
26
-
27
- SETTINGS = AmazonShippingSettings
@@ -1,25 +0,0 @@
1
- from django.db import models
2
- from karrio.server.providers.models.carrier import Carrier, COUNTRIES
3
-
4
-
5
- class AramexSettings(Carrier):
6
- class Meta:
7
- db_table = "aramex-settings"
8
- verbose_name = "Aramex Settings"
9
- verbose_name_plural = "Aramex Settings"
10
-
11
- username = models.CharField(max_length=200)
12
- password = models.CharField(max_length=200)
13
- account_pin = models.CharField(max_length=200)
14
- account_entity = models.CharField(max_length=200)
15
- account_number = models.CharField(max_length=200)
16
- account_country_code = models.CharField(
17
- max_length=3, blank=True, null=True, choices=COUNTRIES
18
- )
19
-
20
- @property
21
- def carrier_name(self) -> str:
22
- return "aramex"
23
-
24
-
25
- SETTINGS = AramexSettings
@@ -1,21 +0,0 @@
1
- import django.db.models as models
2
- import karrio.server.providers.models.carrier as providers
3
-
4
-
5
- class AsendiaUSSettings(providers.Carrier):
6
- class Meta:
7
- db_table = "asendia-us-settings"
8
- verbose_name = "Asendia US Settings"
9
- verbose_name_plural = "Asendia US Settings"
10
-
11
- username = models.CharField(max_length=100)
12
- password = models.CharField(max_length=100)
13
- api_key = models.CharField(max_length=100)
14
- account_number = models.CharField(max_length=100, blank=True)
15
-
16
- @property
17
- def carrier_name(self) -> str:
18
- return "asendia_us"
19
-
20
-
21
- SETTINGS = AsendiaUSSettings
@@ -1,20 +0,0 @@
1
- from django.db import models
2
- from karrio.server.providers.models.carrier import Carrier
3
-
4
-
5
- class AustraliaPostSettings(Carrier):
6
- class Meta:
7
- db_table = "australia-post-settings"
8
- verbose_name = "Australia Post Settings"
9
- verbose_name_plural = "Australia Post Settings"
10
-
11
- api_key = models.CharField(max_length=200)
12
- password = models.CharField(max_length=200)
13
- account_number = models.CharField(max_length=200)
14
-
15
- @property
16
- def carrier_name(self) -> str:
17
- return "australiapost"
18
-
19
-
20
- SETTINGS = AustraliaPostSettings
@@ -1,19 +0,0 @@
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
@@ -1,21 +0,0 @@
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
@@ -1,21 +0,0 @@
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
@@ -1,19 +0,0 @@
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
@@ -1,22 +0,0 @@
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