示例#1
0
文件: event.py 项目: astrocbxy/pretix
    def validate(self, data):
        data = super().validate(data)
        event = self.context['request'].event

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

        Event.clean_dates(data.get('date_from'), data.get('date_to'))
        Event.clean_presale(data.get('presale_start'), data.get('presale_end'))

        SubEvent.clean_items(event, [item['item'] for item in full_data.get('subeventitem_set', [])])
        SubEvent.clean_variations(event, [item['variation'] for item in full_data.get('subeventitemvariation_set', [])])
        return data
示例#2
0
    def validate(self, data):
        data = super().validate(data)
        event = self.context['request'].event

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

        Event.clean_dates(data.get('date_from'), data.get('date_to'))
        Event.clean_presale(data.get('presale_start'), data.get('presale_end'))

        SubEvent.clean_items(event, [item['item'] for item in full_data.get('subeventitem_set', [])])
        SubEvent.clean_variations(event, [item['variation'] for item in full_data.get('subeventitemvariation_set', [])])
        return data
示例#3
0
 def post(self, request, *args, **kwargs):
     self.object = SubEvent(event=self.request.event)
     form = self.get_form()
     if self.is_valid(form):
         return self.form_valid(form)
     else:
         return self.form_invalid(form)
示例#4
0
 def get_form_kwargs(self):
     kwargs = super().get_form_kwargs()
     initial = {}
     kwargs['event'] = self.request.event
     tz = self.request.event.timezone
     if self.copy_from:
         i = copy.copy(self.copy_from)
         i.pk = None
         kwargs['instance'] = i
         initial['time_from'] = i.date_from.astimezone(tz).time()
         initial['time_to'] = i.date_to.astimezone(
             tz).time() if i.date_to else None
         initial['time_admission'] = i.date_admission.astimezone(
             tz).time() if i.date_admission else None
         initial['rel_presale_start'] = RelativeDateWrapper(
             RelativeDate(
                 days_before=(i.date_from.astimezone(tz).date() -
                              i.presale_start.astimezone(tz).date()).days,
                 base_date_name='date_from',
                 time=i.presale_start.astimezone(
                     tz).time())) if i.presale_start else None
         initial['rel_presale_end'] = RelativeDateWrapper(
             RelativeDate(
                 days_before=(i.date_from.astimezone(tz).date() -
                              i.presale_end.astimezone(tz).date()).days,
                 base_date_name='date_from',
                 time=i.presale_end.astimezone(
                     tz).time())) if i.presale_end else None
     else:
         kwargs['instance'] = SubEvent(event=self.request.event)
     kwargs['initial'] = initial
     return kwargs
示例#5
0
    def get_queryset(self):
        if getattr(self.request, 'event', None):
            qs = self.request.event.subevents
        elif isinstance(self.request.auth, (TeamAPIToken, Device)):
            qs = SubEvent.objects.filter(
                event__organizer=self.request.organizer,
                event__in=self.request.auth.get_events_with_any_permission())
        elif self.request.user.is_authenticated:
            qs = SubEvent.objects.filter(
                event__organizer=self.request.organizer,
                event__in=self.request.user.get_events_with_any_permission())

        qs = filter_qs_by_attr(qs, self.request)

        if 'with_availability_for' in self.request.GET:
            qs = SubEvent.annotated(
                qs, channel=self.request.GET.get('with_availability_for'))

        return qs.prefetch_related(
            'event',
            'subeventitem_set',
            'subeventitemvariation_set',
            'meta_values',
            Prefetch(
                'seat_category_mappings',
                to_attr='_seat_category_mappings',
            ),
        )
示例#6
0
    def post(self, request, *args, **kwargs):
        form = self.get_form()
        self.object = SubEvent(event=self.request.event)

        if self.is_valid(form):
            return self.form_valid(form)

        messages.error(self.request, _('We could not save your changes. See below for details.'))
        return self.form_invalid(form)
示例#7
0
 def get_form_kwargs(self):
     kwargs = super().get_form_kwargs()
     kwargs['event'] = self.request.event
     if self.copy_from:
         i = copy.copy(self.copy_from)
         i.pk = None
         kwargs['instance'] = i
     else:
         kwargs['instance'] = SubEvent(event=self.request.event)
     return kwargs
示例#8
0
 def get_form_kwargs(self):
     kwargs = super().get_form_kwargs()
     kwargs['event'] = self.request.event
     initial = kwargs.get('initial', {})
     if self.copy_from:
         i = modelcopy(self.copy_from)
         i.pk = None
         kwargs['instance'] = i
     else:
         kwargs['instance'] = SubEvent(event=self.request.event)
         initial['location'] = self.request.event.location
         initial['geo_lat'] = self.request.event.geo_lat
         initial['geo_lon'] = self.request.event.geo_lon
     kwargs['initial'] = initial
     return kwargs