karrio-server-manager 2025.5rc33__py3-none-any.whl → 2025.5rc35__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.
@@ -72,7 +72,6 @@ class PickupManager(models.Manager):
72
72
  return (
73
73
  super()
74
74
  .get_queryset()
75
- .select_related("pickup_carrier")
76
75
  .prefetch_related(
77
76
  "shipments",
78
77
  *(("org",) if conf.settings.MULTI_ORGANIZATIONS else tuple()),
@@ -94,12 +93,13 @@ class ShipmentManager(models.Manager):
94
93
  "return_address",
95
94
  "billing_address",
96
95
  "shipment_tracker",
97
- "selected_rate_carrier",
98
96
  "shipment_upload_record",
99
97
  )
100
98
  .prefetch_related(
101
99
  "parcels",
102
- "carriers",
100
+ "parcels__items",
101
+ "customs__commodities",
102
+ "customs__duty_billing_address",
103
103
  *(("org",) if conf.settings.MULTI_ORGANIZATIONS else tuple()),
104
104
  )
105
105
  )
@@ -112,7 +112,6 @@ class TrackingManager(models.Manager):
112
112
  .get_queryset()
113
113
  .select_related(
114
114
  "created_by",
115
- "tracking_carrier",
116
115
  "shipment",
117
116
  "shipment__recipient",
118
117
  "shipment__shipper",
@@ -128,7 +127,6 @@ class DocumentUploadRecordManager(models.Manager):
128
127
  return (
129
128
  super()
130
129
  .get_queryset()
131
- .select_related("upload_carrier")
132
130
  .prefetch_related(
133
131
  *(("org",) if conf.settings.MULTI_ORGANIZATIONS else tuple()),
134
132
  )
@@ -141,7 +139,6 @@ class ManifestManager(models.Manager):
141
139
  return (
142
140
  super()
143
141
  .get_queryset()
144
- .select_related("manifest_carrier")
145
142
  .defer("manifest")
146
143
  .prefetch_related(
147
144
  *(("org",) if conf.settings.MULTI_ORGANIZATIONS else tuple()),
@@ -483,6 +480,7 @@ class Customs(core.OwnedEntity):
483
480
 
484
481
  @core.register_model
485
482
  class Pickup(core.OwnedEntity):
483
+ CONTEXT_RELATIONS = ["pickup_carrier"]
486
484
  DIRECT_PROPS = [
487
485
  "confirmation_number",
488
486
  "pickup_date",
@@ -545,6 +543,16 @@ class Pickup(core.OwnedEntity):
545
543
  handle = self.address or super()
546
544
  return handle.delete(*args, **kwargs)
547
545
 
546
+ @classmethod
547
+ def resolve_context_data(cls, queryset, context):
548
+ """Apply context-aware carrier config resolution for pickup_carrier."""
549
+ from karrio.server.providers.models.carrier import Carrier
550
+
551
+ carrier_queryset = Carrier.objects.resolve_config_for(context)
552
+ return queryset.prefetch_related(
553
+ models.Prefetch("pickup_carrier", queryset=carrier_queryset),
554
+ )
555
+
548
556
  @property
549
557
  def object_type(self):
550
558
  return "pickup"
@@ -572,6 +580,7 @@ class Pickup(core.OwnedEntity):
572
580
 
573
581
  @core.register_model
574
582
  class Tracking(core.OwnedEntity):
583
+ CONTEXT_RELATIONS = ["tracking_carrier"]
575
584
  DIRECT_PROPS = [
576
585
  "metadata",
577
586
  "info",
@@ -640,6 +649,16 @@ class Tracking(core.OwnedEntity):
640
649
  "Shipment", on_delete=models.CASCADE, related_name="shipment_tracker", null=True
641
650
  )
642
651
 
652
+ @classmethod
653
+ def resolve_context_data(cls, queryset, context):
654
+ """Apply context-aware carrier config resolution for tracking_carrier."""
655
+ from karrio.server.providers.models.carrier import Carrier
656
+
657
+ carrier_queryset = Carrier.objects.resolve_config_for(context)
658
+ return queryset.prefetch_related(
659
+ models.Prefetch("tracking_carrier", queryset=carrier_queryset),
660
+ )
661
+
643
662
  @property
644
663
  def object_type(self):
645
664
  return "tracker"
@@ -683,6 +702,7 @@ class Tracking(core.OwnedEntity):
683
702
 
684
703
  @core.register_model
685
704
  class Shipment(core.OwnedEntity):
705
+ CONTEXT_RELATIONS = ["selected_rate_carrier", "carriers"]
686
706
  DIRECT_PROPS = [
687
707
  "options",
688
708
  "services",
@@ -833,6 +853,25 @@ class Shipment(core.OwnedEntity):
833
853
  self.customs and self.customs.delete()
834
854
  return super().delete(*args, **kwargs)
835
855
 
856
+ @classmethod
857
+ def resolve_context_data(cls, queryset, context):
858
+ """
859
+ Apply context-aware prefetching for carriers with proper config resolution.
860
+ This is called by access_by() to ensure carrier configs are resolved for the request context.
861
+ """
862
+ from karrio.server.providers.models.carrier import Carrier
863
+
864
+ # Resolve carrier configs with the request context for user/org-specific config
865
+ carrier_queryset = Carrier.objects.resolve_config_for(context)
866
+
867
+ # Re-apply carrier prefetches with context-aware config resolution
868
+ # Note: Manager's get_queryset() already sets up base prefetches with context=None
869
+ # This overrides those prefetches with context-aware ones when called via access_by()
870
+ return queryset.prefetch_related(
871
+ models.Prefetch("carriers", queryset=carrier_queryset),
872
+ models.Prefetch("selected_rate_carrier", queryset=carrier_queryset),
873
+ )
874
+
836
875
  @property
837
876
  def object_type(self):
838
877
  return "shipment"
@@ -910,6 +949,7 @@ class Shipment(core.OwnedEntity):
910
949
 
911
950
  @core.register_model
912
951
  class DocumentUploadRecord(core.OwnedEntity):
952
+ CONTEXT_RELATIONS = ["upload_carrier"]
913
953
  HIDDEN_PROPS = (
914
954
  "upload_carrier",
915
955
  *(("org",) if conf.settings.MULTI_ORGANIZATIONS else tuple()),
@@ -951,6 +991,16 @@ class DocumentUploadRecord(core.OwnedEntity):
951
991
  related_name="shipment_upload_record",
952
992
  )
953
993
 
994
+ @classmethod
995
+ def resolve_context_data(cls, queryset, context):
996
+ """Apply context-aware carrier config resolution for upload_carrier."""
997
+ from karrio.server.providers.models.carrier import Carrier
998
+
999
+ carrier_queryset = Carrier.objects.resolve_config_for(context)
1000
+ return queryset.prefetch_related(
1001
+ models.Prefetch("upload_carrier", queryset=carrier_queryset),
1002
+ )
1003
+
954
1004
  # Computed properties
955
1005
 
956
1006
  @property
@@ -987,6 +1037,8 @@ class Manifest(core.OwnedEntity):
987
1037
  verbose_name_plural = "Manifests"
988
1038
  ordering = ["-created_at"]
989
1039
 
1040
+ CONTEXT_RELATIONS = ["manifest_carrier"]
1041
+
990
1042
  id = models.CharField(
991
1043
  max_length=50,
992
1044
  primary_key=True,
@@ -1016,6 +1068,16 @@ class Manifest(core.OwnedEntity):
1016
1068
 
1017
1069
  manifest_carrier = models.ForeignKey(providers.Carrier, on_delete=models.CASCADE)
1018
1070
 
1071
+ @classmethod
1072
+ def resolve_context_data(cls, queryset, context):
1073
+ """Apply context-aware carrier config resolution for manifest_carrier."""
1074
+ from karrio.server.providers.models.carrier import Carrier
1075
+
1076
+ carrier_queryset = Carrier.objects.resolve_config_for(context)
1077
+ return queryset.prefetch_related(
1078
+ models.Prefetch("manifest_carrier", queryset=carrier_queryset),
1079
+ )
1080
+
1019
1081
  # Computed properties
1020
1082
 
1021
1083
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: karrio_server_manager
3
- Version: 2025.5rc33
3
+ Version: 2025.5rc35
4
4
  Summary: Multi-carrier shipping API Shipments manager module
5
5
  Author-email: karrio <hello@karrio.io>
6
6
  License-Expression: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  karrio/server/manager/__init__.py,sha256=lDTMs_O6mQl0DEI2_TniT24TDJbjnkla-5QpnwfYlxs,64
2
2
  karrio/server/manager/admin.py,sha256=QOl5e2m3ekU5aj0yj9Uq4nRQrNMB_FfqNae6RyIxkC0,35
3
3
  karrio/server/manager/apps.py,sha256=WHTQ1t79uDZTbinRzvNg1NjtFwnwEvg0tP_ChrtTRwI,364
4
- karrio/server/manager/models.py,sha256=DE1ocNQ2bI-0dy1uotxmmDUL8IoEmckE7VVUM9q0BSE,31565
4
+ karrio/server/manager/models.py,sha256=WruyZDTfqKlqu81fwAyxVCwxDu1lvl9l4bo9FbnFbos,34329
5
5
  karrio/server/manager/router.py,sha256=IBUR7rfBkdEHQzWxYOPcVSM8NBp3fte9G6Q5BVTUNNw,95
6
6
  karrio/server/manager/signals.py,sha256=3ZApZY4Ne8Gb0AT5rjC3Xneb7dnbSQyXp1OiBXt7eIA,1908
7
7
  karrio/server/manager/urls.py,sha256=oXJlvhHNKxFkc_CmpFoyTSAMJcLp4Wt9dHbViQDkqw4,220
@@ -100,7 +100,7 @@ karrio/server/manager/views/parcels.py,sha256=hZY45rg6SrTWfQqyJ38MGKSor1yqgPUEVH
100
100
  karrio/server/manager/views/pickups.py,sha256=gmpxz9ot1OR-BP1qh-0MXU3kUJi1ht_74hfaLJzJ42w,5503
101
101
  karrio/server/manager/views/shipments.py,sha256=_5EJfgxEO6H2EdQQbaSwILgnim7slqxMKDkEk_97F9c,10267
102
102
  karrio/server/manager/views/trackers.py,sha256=3oGn2qDpHgk8GZvuz-Cb93Fc0j_h_HbXQR692Zhfiok,12363
103
- karrio_server_manager-2025.5rc33.dist-info/METADATA,sha256=PH7vUw6Q0Xm2HAKm05gQqqvocRcGu-dmtGnq-blxSKs,734
104
- karrio_server_manager-2025.5rc33.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
- karrio_server_manager-2025.5rc33.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
106
- karrio_server_manager-2025.5rc33.dist-info/RECORD,,
103
+ karrio_server_manager-2025.5rc35.dist-info/METADATA,sha256=-JSntjwNP7P042MXocTMVzOu12bar9whAxp_ueeUd6w,734
104
+ karrio_server_manager-2025.5rc35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
105
+ karrio_server_manager-2025.5rc35.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
106
+ karrio_server_manager-2025.5rc35.dist-info/RECORD,,