示例#1
0
 def test_duplicate(self):
     w1 = WaitingListEntry.objects.create(
         event=self.event, item=self.item2, variation=self.var1, email='*****@*****.**'
     )
     w1.clean()
     w2 = WaitingListEntry(
         event=self.event, item=self.item2, variation=self.var1, email='*****@*****.**'
     )
     with self.assertRaises(ValidationError):
         w2.clean()
示例#2
0
 def test_duplicate_of_successful(self):
     v = Voucher.objects.create(quota=self.quota, event=self.event, block_quota=True, redeemed=1)
     w1 = WaitingListEntry.objects.create(
         event=self.event, item=self.item2, variation=self.var1, email='*****@*****.**',
         voucher=v
     )
     w1.clean()
     w2 = WaitingListEntry(
         event=self.event, item=self.item2, variation=self.var1, email='*****@*****.**'
     )
     w2.clean()
示例#3
0
    def validate(self, data):
        data = super().validate(data)
        event = self.context['event']

        full_data = self.to_internal_value(
            self.to_representation(self.instance)) if self.instance else {}
        full_data.update(data)

        WaitingListEntry.clean_duplicate(
            full_data.get('email'), full_data.get('item'),
            full_data.get('variation'), full_data.get('subevent'),
            self.instance.pk if self.instance else None)
        WaitingListEntry.clean_itemvar(event, full_data.get('item'),
                                       full_data.get('variation'))
        WaitingListEntry.clean_subevent(event, full_data.get('subevent'))

        if 'item' in data or 'variation' in data:
            availability = (full_data.get('variation').check_quotas(
                count_waitinglist=True, subevent=full_data.get('subevent'))
                            if full_data.get('variation') else
                            full_data.get('item').check_quotas(
                                count_waitinglist=True,
                                subevent=full_data.get('subevent')))
            if availability[0] == 100:
                raise ValidationError("This product is currently available.")

        return data
示例#4
0
    def validate(self, data):
        data = super().validate(data)
        event = self.context['event']

        full_data = self.to_internal_value(
            self.to_representation(self.instance)) if self.instance else {}
        full_data.update(data)

        WaitingListEntry.clean_duplicate(
            full_data.get('email'), full_data.get('item'),
            full_data.get('variation'), full_data.get('subevent'),
            self.instance.pk if self.instance else None)
        WaitingListEntry.clean_itemvar(event, full_data.get('item'),
                                       full_data.get('variation'))
        WaitingListEntry.clean_subevent(event, full_data.get('subevent'))

        if 'item' in data or 'variation' in data:
            availability = (full_data.get('variation').check_quotas(
                count_waitinglist=True, subevent=full_data.get('subevent'))
                            if full_data.get('variation') else
                            full_data.get('item').check_quotas(
                                count_waitinglist=True,
                                subevent=full_data.get('subevent')))
            if availability[0] == 100:
                raise ValidationError("This product is currently available.")

        if data.get('name') and data.get('name_parts'):
            raise ValidationError(
                {'name': ['Do not specify name if you specified name_parts.']})
        if data.get('name_parts') and '_scheme' not in data.get('name_parts'):
            data['name_parts']['_scheme'] = event.settings.name_scheme

        return data
示例#5
0
    def validate(self, data):
        data = super().validate(data)
        event = self.context['event']

        full_data = self.to_internal_value(self.to_representation(self.instance)) if self.instance else {}
        full_data.update(data)

        WaitingListEntry.clean_duplicate(full_data.get('email'), full_data.get('item'), full_data.get('variation'),
                                         full_data.get('subevent'), self.instance.pk if self.instance else None)
        WaitingListEntry.clean_itemvar(event, full_data.get('item'), full_data.get('variation'))
        WaitingListEntry.clean_subevent(event, full_data.get('subevent'))

        if 'item' in data or 'variation' in data:
            availability = (
                full_data.get('variation').check_quotas(count_waitinglist=True, subevent=full_data.get('subevent'))
                if full_data.get('variation')
                else full_data.get('item').check_quotas(count_waitinglist=True, subevent=full_data.get('subevent'))
            )
            if availability[0] == 100:
                raise ValidationError("This product is currently available.")

        return data
示例#6
0
 def test_missing_variation(self):
     w2 = WaitingListEntry(
         event=self.event, item=self.item2, email='*****@*****.**'
     )
     with self.assertRaises(ValidationError):
         w2.clean()