diff --git a/core/apps/accounts/management/commands/seed_permissions.py b/core/apps/accounts/management/commands/seed_permissions.py index 1b16ec1..290dfb4 100644 --- a/core/apps/accounts/management/commands/seed_permissions.py +++ b/core/apps/accounts/management/commands/seed_permissions.py @@ -19,6 +19,8 @@ class Command(BaseCommand): {'code': 'product_folder', 'name': 'all access to product folder'}, {'code': 'product', 'name': 'all access to product'}, {'code': 'order', 'name': 'all access to orders'}, + {'code': 'offer', 'name': 'all access to offers'}, + ] for perm in permissions: diff --git a/core/apps/orders/models/order_offer.py b/core/apps/orders/models/order_offer.py index d5f2250..fe23c47 100644 --- a/core/apps/orders/models/order_offer.py +++ b/core/apps/orders/models/order_offer.py @@ -21,7 +21,7 @@ class Offer(BaseModel): number = models.PositiveIntegerField(default=1) def __str__(self): - return self.name + return str(self.number) def save(self, *args, **kwargs): if not self.pk: diff --git a/core/apps/orders/serializers/offer.py b/core/apps/orders/serializers/offer.py index 8a93670..efbefd8 100644 --- a/core/apps/orders/serializers/offer.py +++ b/core/apps/orders/serializers/offer.py @@ -11,20 +11,20 @@ class OfferCreateSerializer(serializers.Serializer): price = serializers.IntegerField() phone = serializers.CharField(required=False) comment = serializers.CharField(required=False) - qqs = serializers.CharField(required=False) + qqs = serializers.BooleanField(required=False) price_type = serializers.ChoiceField(Offer.PRICE_TYPE) def validate(self, data): counterparty = Counterparty.objects.filter(id=data['counterparty_id']).first() if not counterparty: raise serializers.ValidationError("Counterparty not found") - data['counterparty'] + data['counterparty'] = counterparty return data class MultipleOfferCreateSerializer(serializers.Serializer): order_id = serializers.UUIDField() - offers = serializers.ListSerializer(child=OfferCreateSerializer()) + offers = OfferCreateSerializer(many=True) def validate(self, data): order = Order.objects.filter(id=data['order_id']).first() @@ -37,8 +37,9 @@ class MultipleOfferCreateSerializer(serializers.Serializer): with transaction.atomic(): offers = [] for offer in validated_data.pop('offers'): - offer.append( + offers.append( Offer( + order=validated_data.get('order'), counterparty=offer['counterparty'], price=offer['price'], phone=offer.get('phone'), @@ -48,8 +49,8 @@ class MultipleOfferCreateSerializer(serializers.Serializer): ) ) - return Offer.objects.bulk_update(offers) - + created_offers = Offer.objects.bulk_create(offers) + return created_offers class OfferListSerializer(serializers.ModelSerializer): counterparty = serializers.SerializerMethodField(method_name='get_counterparty') diff --git a/core/apps/orders/views/offer.py b/core/apps/orders/views/offer.py index f03b4c7..d911443 100644 --- a/core/apps/orders/views/offer.py +++ b/core/apps/orders/views/offer.py @@ -36,9 +36,12 @@ class OfferListApiView(generics.GenericAPIView): def get(self, request): offers = Offer.objects.all() + page = self.paginate_queryset(offers) + if page is not None: + serializer = self.serializer_class(page, many=True) + return self.get_paginated_response(serializer.data) serializer = self.serializer_class(offers, many=True) - self.paginate_queryset(serializer) - return self.get_paginated_response + return Response(serializer.data, status=200) class OfferUpdateApiView(generics.GenericAPIView):