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
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)
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
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', ), )
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)
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
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