karrio-server-graph 2026.1.3__py3-none-any.whl → 2026.1.4__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.
@@ -361,11 +361,15 @@ class RateSheetModelSerializer(serializers.ModelSerializer):
361
361
  ) -> None:
362
362
  """Process service rates for the rate sheet.
363
363
 
364
+ Uses batch_update_service_rates() to avoid the single-entry fallback
365
+ in update_service_rate() which overwrites previous weight brackets.
366
+
364
367
  Args:
365
368
  service_rates_data: List of service rate dicts with service_id, zone_id, rate, etc.
366
369
  temp_to_real_id_map: Optional mapping of temp-{idx} IDs to real service IDs.
367
370
  """
368
371
  temp_to_real_id_map = temp_to_real_id_map or {}
372
+ batch_updates = []
369
373
 
370
374
  for rate_data in service_rates_data:
371
375
  rate_dict = {k: v for k, v in rate_data.items() if v is not None}
@@ -377,7 +381,12 @@ class RateSheetModelSerializer(serializers.ModelSerializer):
377
381
  service_id = temp_to_real_id_map.get(service_id, service_id)
378
382
 
379
383
  if service_id and zone_id:
380
- self.instance.update_service_rate(service_id, zone_id, rate_dict)
384
+ batch_updates.append(
385
+ {"service_id": service_id, "zone_id": zone_id, **rate_dict}
386
+ )
387
+
388
+ if batch_updates:
389
+ self.instance.batch_update_service_rates(batch_updates)
381
390
 
382
391
  def build_temp_to_real_service_map(self, services_data: list) -> dict:
383
392
  """Build mapping from temp-{idx} IDs to real service IDs by service_code."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: karrio_server_graph
3
- Version: 2026.1.3
3
+ Version: 2026.1.4
4
4
  Summary: Multi-carrier shipping API Graph module
5
5
  Author-email: karrio <hello@karrio.io>
6
6
  License-Expression: LGPL-3.0
@@ -4,7 +4,7 @@ karrio/server/graph/apps.py,sha256=grL5ySDnW2amzj0nTXFm-WCoTWViVYvKqGlsi4k5epI,9
4
4
  karrio/server/graph/forms.py,sha256=7ow-WZ3OFUmnakj28nabWJflU1atAb86roJiok1NQ7A,1949
5
5
  karrio/server/graph/models.py,sha256=fdGlFQiHGRjpxsC4B2RS95QKPmfkxE5PAbxuvmqonYE,1191
6
6
  karrio/server/graph/schema.py,sha256=uENWASUR0r0RZGr8j5bp_xlBOskxqhW7Z-PYCkC-uzE,1226
7
- karrio/server/graph/serializers.py,sha256=2i5VgWKu5e0E83QnC7sgp63zskS5r7pxASo3EhYUzFM,15914
7
+ karrio/server/graph/serializers.py,sha256=3Q_MnH2iadaU7aHZs2z-ZSh1FCi5U_z2By64jYQHG_Y,16244
8
8
  karrio/server/graph/urls.py,sha256=HKo0gkx5TgoWDV0ap2QCtueNTmaAqvX6qVDe3c2UT1E,183
9
9
  karrio/server/graph/utils.py,sha256=4DSZDu5jDqfB0TxRymgqNg5jOq6dmZgytGWHQrVh9IE,11186
10
10
  karrio/server/graph/views.py,sha256=H9GJAgd8y0yV9Z1qpxhBo5o7dfCZgegzebHi100M_E8,2882
@@ -35,7 +35,7 @@ karrio/server/graph/tests/test_registration.py,sha256=0vCTqlsLc0cl2m78umgfm7grnD
35
35
  karrio/server/graph/tests/test_templates.py,sha256=juHtyN2XxnWPeUv-5sgucKLdXjtJa9_MBbb2-SFW5mM,14188
36
36
  karrio/server/graph/tests/test_user_info.py,sha256=K91BL7SgxLWflCZriSVI8Vt5M5RIqmSCHKrgN2w8GmM,1928
37
37
  karrio/server/settings/graph.py,sha256=cz2yQHbp3xCfyFKuUkPEFfkI2fFVggExIY49wGz7mt0,106
38
- karrio_server_graph-2026.1.3.dist-info/METADATA,sha256=J_e68vI2MxEL0SDBsmqToONLqzAy1fktjHFQ32r1WpU,740
39
- karrio_server_graph-2026.1.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
- karrio_server_graph-2026.1.3.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
41
- karrio_server_graph-2026.1.3.dist-info/RECORD,,
38
+ karrio_server_graph-2026.1.4.dist-info/METADATA,sha256=DdnvIHdY734E3mP4QIYcjNWOimNyzLwskba30GOayks,740
39
+ karrio_server_graph-2026.1.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
40
+ karrio_server_graph-2026.1.4.dist-info/top_level.txt,sha256=D1D7x8R3cTfjF_15mfiO7wCQ5QMtuM4x8GaPr7z5i78,12
41
+ karrio_server_graph-2026.1.4.dist-info/RECORD,,