forked from erp-dev/erp
feat: mission category
This commit is contained in:
@@ -1681,6 +1681,32 @@ class ShipmentQueryAPITestCase(TestCase):
|
||||
self.assertIn("external_finished_products", item)
|
||||
self.assertIsInstance(item["external_finished_products"], list)
|
||||
|
||||
def test_list_shipments_supports_only_address_null_filter(self):
|
||||
self.shipment1.address = ""
|
||||
self.shipment1.save(update_fields=["address", "updated_at"])
|
||||
self.shipment2.address = ""
|
||||
self.shipment2.save(update_fields=["address", "updated_at"])
|
||||
|
||||
shipment_with_address = shipment_models.Shipment.objects.create(
|
||||
merchant=self.merchant1,
|
||||
customer=self.customer1,
|
||||
shipment_date="2026-01-16",
|
||||
created_by=self.user1,
|
||||
address="绍兴市测试路 8 号",
|
||||
)
|
||||
|
||||
resp_true = self.client.get("/api/v1/shipment/shipments/?only_address_null=true")
|
||||
self.assertEqual(resp_true.status_code, status.HTTP_200_OK)
|
||||
true_ids = [it["id"] for it in resp_true.json()["results"]]
|
||||
self.assertIn(self.shipment1.id, true_ids)
|
||||
self.assertNotIn(shipment_with_address.id, true_ids)
|
||||
|
||||
resp_false = self.client.get("/api/v1/shipment/shipments/?only_address_null=false")
|
||||
self.assertEqual(resp_false.status_code, status.HTTP_200_OK)
|
||||
false_ids = [it["id"] for it in resp_false.json()["results"]]
|
||||
self.assertIn(shipment_with_address.id, false_ids)
|
||||
self.assertNotIn(self.shipment1.id, false_ids)
|
||||
|
||||
def test_retrieve_shipment_success(self):
|
||||
resp = self.client.get(f"/api/v1/shipment/shipments/{self.shipment1.id}/")
|
||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||
|
||||
@@ -164,6 +164,14 @@ class ShipmentListCreateView(ListModelMixin, GenericAPIView):
|
||||
# 通过 <= 过滤日期
|
||||
qs = qs.filter(shipment_date__lte=date_to)
|
||||
|
||||
only_address_null = self.request.query_params.get("only_address_null")
|
||||
if only_address_null is not None:
|
||||
normalized = only_address_null.strip().lower()
|
||||
if normalized in {"1", "true", "yes"}:
|
||||
qs = qs.filter(address="")
|
||||
elif normalized in {"0", "false", "no"}:
|
||||
qs = qs.exclude(address="")
|
||||
|
||||
return qs.order_by("-created_at", "-id")
|
||||
|
||||
def get(self, request):
|
||||
|
||||
Reference in New Issue
Block a user