Beispiel #1
0
 def test_can_change_if_member_has_organiser_override(self):
     content_type = ContentType.objects.get_for_model(Event)
     override_perm = Permission.objects.get(codename="override_organiser",
                                            content_type=content_type)
     self.member.user_permissions.add(override_perm)
     # refresh member to defeat cache
     member = Member.objects.get(pk=self.member.pk)
     self.assertTrue(services.can_change_order(member, self.pizzaEvent))
Beispiel #2
0
 def perform_update(self, serializer):
     order = serializer.save()
     if "payment" in serializer.validated_data and can_change_order(
             self.request.member, PizzaEvent.current()):
         self._update_payment(
             order,
             serializer.validated_data["payment"]["type"],
             self.request.user,
         )
Beispiel #3
0
    def get_queryset(self):
        event = PizzaEvent.current()
        if can_change_order(self.request.member, event):
            return Order.objects.filter(pizza_event=event)
        if self.action == "update" or self.action == "destroy":
            if not event or event.has_ended:
                return Order.objects.none()

            return Order.objects.filter(
                member=self.request.member,
                payment=None,
                pizza_event=event,
            )
        return Order.objects.filter(member=self.request.member,
                                    pizza_event=event)
Beispiel #4
0
    def perform_create(self, serializer):
        try:
            if serializer.validated_data.get("name"):
                serializer.save(pizza_event=PizzaEvent.current())
            else:
                if can_change_order(self.request.member, PizzaEvent.current()):
                    order = serializer.save(pizza_event=PizzaEvent.current())
                    if "payment" in serializer.validated_data:
                        payment_type = serializer.validated_data["payment"][
                            "type"]
                    else:
                        payment_type = Payment.NONE

                    self._update_payment(order, payment_type,
                                         self.request.user)
                else:
                    serializer.save(member=self.request.member,
                                    pizza_event=PizzaEvent.current())
        except IntegrityError as e:
            raise ValidationError(
                "Something went wrong when saving the order" + str(e))
Beispiel #5
0
 def get_serializer_class(self):
     event = PizzaEvent.current()
     if can_change_order(self.request.member, event):
         return serializers.AdminOrderSerializer
     return serializers.OrderSerializer
Beispiel #6
0
 def test_can_change_if_in_committee(self):
     self.committee.members.add(self.member)
     # refresh member object to defeat cache
     member = Member.objects.get(pk=self.member.pk)
     self.assertTrue(services.can_change_order(member, self.pizzaEvent))
Beispiel #7
0
 def test_can_not_change_if_not_in_committee(self):
     # note that if member is superuser, this might still succeed!
     self.assertFalse(
         services.can_change_order(self.member, self.pizzaEvent))
Beispiel #8
0
 def _is_admin(self, instance):
     member = self.context["request"].member
     return can_change_order(member, instance)