Esempio n. 1
0
class EventCreate(OrganizerPermissionRequiredMixin, CreateView):
    model = Event
    form_class = EventCreateForm
    template_name = 'pretixcontrol/events/create.html'
    context_object_name = 'event'
    permission = 'can_create_events'

    @cached_property
    def sform(self):
        return EventCreateSettingsForm(
            obj=Event(),
            prefix='settings',
            data=self.request.POST if self.request.method == 'POST' else None
        )

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        if form.is_valid() and self.sform.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def get_context_data(self, *args, **kwargs) -> dict:
        context = super().get_context_data(*args, **kwargs)
        context['sform'] = self.sform
        return context

    def dispatch(self, request, *args, **kwargs):
        self.object = Event()
        return super().dispatch(request, *args, **kwargs)

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['organizer'] = self.request.organizer
        return kwargs

    @transaction.atomic
    def form_valid(self, form):
        messages.success(self.request, _('The new event has been created.'))
        form.instance.organizer = self.request.organizer
        ret = super().form_valid(form)
        EventPermission.objects.create(
            event=form.instance, user=self.request.user,
        )
        self.object = form.instance
        self.object.plugins = settings.PRETIX_PLUGINS_DEFAULT
        self.object.save()

        self.sform.obj = form.instance
        self.sform.save()
        form.instance.log_action('pretix.event.settings', user=self.request.user, data={
            k: form.instance.settings.get(k) for k in self.sform.changed_data
        })
        return ret

    def get_success_url(self) -> str:
        return reverse('control:event.settings', kwargs={
            'organizer': self.request.organizer.slug,
            'event': self.object.slug,
        })
Esempio n. 2
0
class EventCreate(OrganizerPermissionRequiredMixin, CreateView):
    model = Event
    form_class = EventCreateForm
    template_name = 'pretixcontrol/events/create.html'
    context_object_name = 'event'
    permission = 'can_create_events'

    @cached_property
    def sform(self):
        return EventCreateSettingsForm(
            obj=Event(),
            prefix='settings',
            data=self.request.POST if self.request.method == 'POST' else None
        )

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        if form.is_valid() and self.sform.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def get_context_data(self, *args, **kwargs) -> dict:
        context = super().get_context_data(*args, **kwargs)
        context['sform'] = self.sform
        return context

    def dispatch(self, request, *args, **kwargs):
        self.object = Event()
        return super().dispatch(request, *args, **kwargs)

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['organizer'] = self.request.organizer
        return kwargs

    @transaction.atomic
    def form_valid(self, form):
        messages.success(self.request, _('The new event has been created.'))
        form.instance.organizer = self.request.organizer
        ret = super().form_valid(form)
        EventPermission.objects.create(
            event=form.instance, user=self.request.user,
        )
        self.object = form.instance
        self.object.plugins = settings.PRETIX_PLUGINS_DEFAULT
        self.object.save()

        self.sform.obj = form.instance
        self.sform.save()
        form.instance.log_action('pretix.event.settings', user=self.request.user, data={
            k: form.instance.settings.get(k) for k in self.sform.changed_data
        })
        return ret

    def get_success_url(self) -> str:
        return reverse('control:event.settings', kwargs={
            'organizer': self.request.organizer.slug,
            'event': self.object.slug,
        })
Esempio n. 3
0
    def test_slug_validation(self):
        event = Event(organizer=self.orga,
                      name='download',
                      slug='download',
                      date_from=datetime.datetime(
                          2013, 12, 26, tzinfo=datetime.timezone.utc),
                      live=True)
        with self.assertRaises(ValidationError):
            if event.full_clean():
                event.save()

        self.assertEqual(Event.objects.filter(name='download').count(), 0)
Esempio n. 4
0
    def test_slug_validation(self):
        event = Event(
            organizer=self.orga,
            name='download',
            slug='download',
            date_from=datetime.datetime(2013, 12, 26, tzinfo=datetime.timezone.utc),
            live=True
        )
        with self.assertRaises(ValidationError):
            if event.full_clean():
                event.save()

        self.assertEqual(Event.objects.filter(name='download').count(), 0)