karrio-server-core 2025.5rc25__py3-none-any.whl → 2025.5rc27__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.
- karrio/server/core/dataunits.py +8 -7
- karrio/server/core/gateway.py +2 -0
- karrio/server/user/migrations/0007_user_metadata.py +25 -0
- karrio/server/user/models.py +22 -8
- karrio/server/user/templates/registration/registration_confirm_email.html +1 -1
- {karrio_server_core-2025.5rc25.dist-info → karrio_server_core-2025.5rc27.dist-info}/METADATA +1 -1
- {karrio_server_core-2025.5rc25.dist-info → karrio_server_core-2025.5rc27.dist-info}/RECORD +9 -8
- {karrio_server_core-2025.5rc25.dist-info → karrio_server_core-2025.5rc27.dist-info}/WHEEL +0 -0
- {karrio_server_core-2025.5rc25.dist-info → karrio_server_core-2025.5rc27.dist-info}/top_level.txt +0 -0
karrio/server/core/dataunits.py
CHANGED
|
@@ -104,30 +104,31 @@ def contextual_reference(request: Request = None, reduced: bool = True):
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
def _get_generic_carriers():
|
|
107
|
+
# Get all carriers, then filter by extension instead of hardcoded slug
|
|
107
108
|
system_custom_carriers = [
|
|
108
|
-
c for c in gateway.Carriers.list(system_only=True
|
|
109
|
+
c for c in gateway.Carriers.list(system_only=True)
|
|
110
|
+
if c.ext == "generic"
|
|
109
111
|
]
|
|
110
112
|
custom_carriers = [
|
|
111
113
|
c
|
|
112
114
|
for c in (
|
|
113
|
-
gateway.Carriers.list(context=request
|
|
114
|
-
is_system=True
|
|
115
|
-
)
|
|
115
|
+
gateway.Carriers.list(context=request).exclude(is_system=True)
|
|
116
116
|
if is_authenticated
|
|
117
117
|
else []
|
|
118
118
|
)
|
|
119
|
+
if c.ext == "generic"
|
|
119
120
|
]
|
|
120
121
|
|
|
121
122
|
extra_carriers = {
|
|
122
|
-
|
|
123
|
+
c.carrier_code: c.display_name
|
|
123
124
|
for c in custom_carriers
|
|
124
125
|
}
|
|
125
126
|
system_carriers = {
|
|
126
|
-
|
|
127
|
+
c.carrier_code: c.display_name
|
|
127
128
|
for c in system_custom_carriers
|
|
128
129
|
}
|
|
129
130
|
extra_services = {
|
|
130
|
-
|
|
131
|
+
c.carrier_code: {
|
|
131
132
|
s.service_code: s.service_code
|
|
132
133
|
for s in c.services
|
|
133
134
|
or [
|
karrio/server/core/gateway.py
CHANGED
|
@@ -190,6 +190,7 @@ class Shipments:
|
|
|
190
190
|
rate_provider = (
|
|
191
191
|
(parent.meta or {}).get("rate_provider") or carrier.carrier_name
|
|
192
192
|
).lower()
|
|
193
|
+
custom_carrier_name = carrier.credentials.get("custom_carrier_name")
|
|
193
194
|
|
|
194
195
|
return {
|
|
195
196
|
**(parent.meta or {}),
|
|
@@ -197,6 +198,7 @@ class Shipments:
|
|
|
197
198
|
"carrier": rate_provider,
|
|
198
199
|
"service_name": service_name,
|
|
199
200
|
"rate_provider": rate_provider, # TODO: deprecate 'rate_provider' in favor of 'carrier'
|
|
201
|
+
**({"custom_carrier_name": custom_carrier_name} if custom_carrier_name else {}),
|
|
200
202
|
}
|
|
201
203
|
|
|
202
204
|
def process_selected_rate() -> dict:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated by Django 5.2.7 on 2025-10-14 01:00
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
import karrio.server.core.models
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
("user", "0006_workspaceconfig"),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.AddField(
|
|
16
|
+
model_name="user",
|
|
17
|
+
name="metadata",
|
|
18
|
+
field=models.JSONField(
|
|
19
|
+
default=functools.partial(
|
|
20
|
+
karrio.server.core.models._identity, *(), **{"value": {}}
|
|
21
|
+
),
|
|
22
|
+
help_text="User defined metadata",
|
|
23
|
+
),
|
|
24
|
+
),
|
|
25
|
+
]
|
karrio/server/user/models.py
CHANGED
|
@@ -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 = []
|
|
@@ -75,15 +78,24 @@ class User(auth.AbstractUser):
|
|
|
75
78
|
ctx = middleware.SessionContext.get_current_request()
|
|
76
79
|
_permissions = []
|
|
77
80
|
|
|
78
|
-
if
|
|
81
|
+
if (
|
|
82
|
+
conf.settings.MULTI_ORGANIZATIONS
|
|
83
|
+
and ctx is not None
|
|
84
|
+
and hasattr(ctx, "org")
|
|
85
|
+
and ctx.org is not None
|
|
86
|
+
):
|
|
79
87
|
org_user = ctx.org.organization_users.filter(user_id=self.pk)
|
|
80
88
|
if org_user.exists():
|
|
81
89
|
try:
|
|
82
90
|
context_permission = iam.ContextPermission.objects.get(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
object_pk=org_user.first().pk,
|
|
92
|
+
content_type=ContentType.objects.get_for_model(
|
|
93
|
+
org_user.first()
|
|
94
|
+
),
|
|
95
|
+
)
|
|
96
|
+
_permissions = list(
|
|
97
|
+
context_permission.groups.all().values_list("name", flat=True)
|
|
98
|
+
)
|
|
87
99
|
except iam.ContextPermission.DoesNotExist:
|
|
88
100
|
pass
|
|
89
101
|
|
|
@@ -94,9 +106,11 @@ class User(auth.AbstractUser):
|
|
|
94
106
|
return list(Group.objects.all().values_list("name", flat=True))
|
|
95
107
|
|
|
96
108
|
if not any(_permissions) and self.is_staff:
|
|
97
|
-
return list(
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
return list(
|
|
110
|
+
Group.objects.exclude(
|
|
111
|
+
name__in=["manage_system", "manage_team", "manage_org_owner"]
|
|
112
|
+
).values_list("name", flat=True)
|
|
113
|
+
)
|
|
100
114
|
|
|
101
115
|
return _permissions
|
|
102
116
|
|
|
@@ -7,11 +7,11 @@ karrio/server/core/apps.py,sha256=VKRPRoB2YY1JlEpCe2AE6k57M1qkPADfq5RYZuLjEOw,21
|
|
|
7
7
|
karrio/server/core/authentication.py,sha256=NiXbfcz3SJjYSKBGLT9-HRYATZXfPRuyALS5bzpNT9U,10555
|
|
8
8
|
karrio/server/core/context_processors.py,sha256=B80cJ_7-uviNRYyrfsCcOaUQFBf_eAgQ0hHZPtM5Olw,323
|
|
9
9
|
karrio/server/core/datatypes.py,sha256=lM0kKKcEoULrEvpJajbBfiz0xAU4OgOQoiAvalKllNg,10085
|
|
10
|
-
karrio/server/core/dataunits.py,sha256=
|
|
10
|
+
karrio/server/core/dataunits.py,sha256=myuZ0BNJ-EZPbf3hsi7JP7nlRqGcUYh_TOQUEQOhlD4,5602
|
|
11
11
|
karrio/server/core/exceptions.py,sha256=AR4FNT_1wkMkuv_ZELB9pVRL3RRWsSJ7hrNgBP7H3EU,6038
|
|
12
12
|
karrio/server/core/fields.py,sha256=5i5eetbxFkIQ9uoFk8k2xPl1mXXnaVKlPV4xwlF3inY,345
|
|
13
13
|
karrio/server/core/filters.py,sha256=nHj742vPWE3Xs_tpwRRVUh00OwxnF22xKfIK7rx-sw4,27434
|
|
14
|
-
karrio/server/core/gateway.py,sha256=
|
|
14
|
+
karrio/server/core/gateway.py,sha256=lyPN-oCnviH3U2an5SdVw_jeyUfALfFN9JMkLxvNVSA,25925
|
|
15
15
|
karrio/server/core/middleware.py,sha256=euRkeIvNv3G-b_U3fKDO6po-2dbYF0LiXUYg2nyeCI0,3017
|
|
16
16
|
karrio/server/core/oauth_validators.py,sha256=5JxDkXB_HX4a4xJltZcFGukO7o2cUl9h2t9O8Gp87Zc,6673
|
|
17
17
|
karrio/server/core/permissions.py,sha256=JY3_hTEnyDTWG-weAWPx8xMoaRZwpNL2HaSssBzjH7Y,1189
|
|
@@ -182,7 +182,7 @@ karrio/server/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
182
182
|
karrio/server/user/admin.py,sha256=psRIcm1IjR6K_69cJJCDBUQT226I9gPvfFhHoAeA_3Q,2514
|
|
183
183
|
karrio/server/user/apps.py,sha256=hCTQ-YXuDd7eW4ZMkVf6OcmmFCu5uVpFWCxfb1lzdCw,209
|
|
184
184
|
karrio/server/user/forms.py,sha256=hgEbEs17Cwib5KsckVweapEmAQvE0fWpwxkJMDc__Y0,1049
|
|
185
|
-
karrio/server/user/models.py,sha256=
|
|
185
|
+
karrio/server/user/models.py,sha256=cBQU7523rm71ibAAswaGGYbqAho-83wUU6MipP6c7Nc,6703
|
|
186
186
|
karrio/server/user/serializers.py,sha256=tdTB0g4q3EIY2Uv7rrpWlkKEuHms-fTK6XXUr_Z6hBY,1557
|
|
187
187
|
karrio/server/user/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
188
188
|
karrio/server/user/urls.py,sha256=3p-ZivD78caBDDeV63XJjMuILdr258JXED788OJ_hLQ,243
|
|
@@ -194,11 +194,12 @@ karrio/server/user/migrations/0003_token_test_mode.py,sha256=YEqSXx6FDysbTqAuZmw
|
|
|
194
194
|
karrio/server/user/migrations/0004_group.py,sha256=ki5yjRYDwgNk-Wmy8slb_PvPJmFAOrXf9k7o3rm4JZw,791
|
|
195
195
|
karrio/server/user/migrations/0005_token_label.py,sha256=YlKQMJs5OjInq-seb5r-0hwPzIZlb3ay0nuKoLJgGDk,515
|
|
196
196
|
karrio/server/user/migrations/0006_workspaceconfig.py,sha256=vhprvPvdt7AIUr44KLVd-cVQh4opEL1lIVoW5HHTiYI,2089
|
|
197
|
+
karrio/server/user/migrations/0007_user_metadata.py,sha256=ndv3eHZWPIExC1JR6ChpkzuXCIsHXTvWgg0bXnRIWbc,619
|
|
197
198
|
karrio/server/user/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
198
199
|
karrio/server/user/templates/registration/login.html,sha256=3_tj-0rKfwkCk-fp_GT8xFQhLqjGcJs3uZzOAaI40Sw,3690
|
|
199
|
-
karrio/server/user/templates/registration/registration_confirm_email.html,sha256=
|
|
200
|
+
karrio/server/user/templates/registration/registration_confirm_email.html,sha256=haJ1DVM27umaxegACs4tNAj296HxVZfWCSTyD0Nt5I8,279
|
|
200
201
|
karrio/server/user/templates/registration/registration_confirm_email.txt,sha256=I_zN_pJTRigfyiYbyQK0wFfrI5Zq1JG8lf0TyLA9fN0,94
|
|
201
|
-
karrio_server_core-2025.
|
|
202
|
-
karrio_server_core-2025.
|
|
203
|
-
karrio_server_core-2025.
|
|
204
|
-
karrio_server_core-2025.
|
|
202
|
+
karrio_server_core-2025.5rc27.dist-info/METADATA,sha256=r4DIcrOFohrdetqDxQwcY4MWF3ZgvqURLsK1xvsYvzY,797
|
|
203
|
+
karrio_server_core-2025.5rc27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
204
|
+
karrio_server_core-2025.5rc27.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
|
|
205
|
+
karrio_server_core-2025.5rc27.dist-info/RECORD,,
|
|
File without changes
|
{karrio_server_core-2025.5rc25.dist-info → karrio_server_core-2025.5rc27.dist-info}/top_level.txt
RENAMED
|
File without changes
|