Skip to content

Commit

Permalink
feat: add api for adding merchandise to program
Browse files Browse the repository at this point in the history
  • Loading branch information
AmooHashem committed Aug 8, 2024
1 parent 3c96bd1 commit f00b1a4
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions apps/sales/views/payment_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
MerchandiseSerializer
from errors.error_codes import serialize_error
from errors.exceptions import InternalServerError
from apps.fsm.models import RegistrationReceipt
from apps.fsm.models import Program, RegistrationReceipt

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -156,7 +156,7 @@ def verify_payment(self, request):
return redirect(f'{settings.GET_PAYMENT_CALLBACK_URL(purchase.callback_domain, "failure")}/{purchase.uniq_code}')


class MerchandiseViewSet(GenericViewSet, RetrieveModelMixin):
class MerchandiseViewSet(ModelViewSet):
my_tags = ['payments']
serializer_class = MerchandiseSerializer
queryset = Merchandise.objects.all()
Expand All @@ -171,6 +171,7 @@ def get_serializer_class(self):
return super().get_serializer_class()

def get_permissions(self):
permission_classes = []
if self.action == 'discount_codes':
permission_classes = [IsMerchandiseOwner]
elif self.action == 'retrieve':
Expand All @@ -187,6 +188,21 @@ def discount_codes(self, request, pk=None):
return Response(DiscountCodeSerializer(DiscountCode.objects.filter(merchandise=self.get_object()), many=True).data,
status=status.HTTP_200_OK)

@transaction.atomic
@action(detail=False, methods=['post'])
def add_to_program(self, request, pk=None):
# create merchandise
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
merchandise = serializer.save()
# get program
program_id = request.data.get('program_id', None)
program = Program.objects.get(id=program_id)
# add merchandise to program
program.merchandise = merchandise
program.save()
return Response(status=status.HTTP_201_CREATED)


class DiscountCodeViewSet(GenericViewSet, RetrieveModelMixin, UpdateModelMixin, CreateModelMixin, DestroyModelMixin):
my_tags = ['payments']
Expand Down

0 comments on commit f00b1a4

Please sign in to comment.