Пример #1
0
 def post(self, request, *args, **kwargs):
     form = self.get_form()
     if form.is_valid():
         form.save()
         if form.has_changed():
             self.request.organizer.log_action(
                 'pretix.organizer.settings',
                 user=self.request.user,
                 data={
                     k: (form.cleaned_data.get(k).name if isinstance(
                         form.cleaned_data.get(k), File) else
                         form.cleaned_data.get(k))
                     for k in form.changed_data
                 })
         regenerate_organizer_css.apply_async(
             args=(self.request.organizer.pk, ))
         messages.success(
             self.request,
             _('Your changes have been saved. Please note that it can '
               'take a short period of time until your changes become '
               'active.'))
         return redirect(self.get_success_url())
     else:
         messages.error(
             self.request,
             _('We could not save your changes. See below for details.'))
         return self.get(request)
Пример #2
0
    def form_valid(self, form):
        self.save_formset(self.object)
        self.sform.save()
        change_css = False
        if self.sform.has_changed():
            self.request.organizer.log_action(
                'pretix.organizer.settings',
                user=self.request.user,
                data={
                    k: (self.sform.cleaned_data.get(k).name
                        if isinstance(self.sform.cleaned_data.get(k), File)
                        else self.sform.cleaned_data.get(k))
                    for k in self.sform.changed_data
                }
            )
            display_properties = (
                'primary_color', 'theme_color_success', 'theme_color_danger', 'primary_font',
            )
            if any(p in self.sform.changed_data for p in display_properties):
                change_css = True
        if form.has_changed():
            self.request.organizer.log_action(
                'pretix.organizer.changed',
                user=self.request.user,
                data={k: form.cleaned_data.get(k) for k in form.changed_data}
            )

        if change_css:
            regenerate_organizer_css.apply_async(args=(self.request.organizer.pk,))
            messages.success(self.request, _('Your changes have been saved. Please note that it can '
                                             'take a short period of time until your changes become '
                                             'active.'))
        else:
            messages.success(self.request, _('Your changes have been saved.'))
        return super().form_valid(form)
Пример #3
0
 def patch(self, request, *wargs, **kwargs):
     s = OrganizerSettingsSerializer(instance=request.organizer.settings,
                                     data=request.data,
                                     partial=True,
                                     organizer=request.organizer)
     s.is_valid(raise_exception=True)
     with transaction.atomic():
         s.save()
         self.request.organizer.log_action(
             'pretix.organizer.settings',
             user=self.request.user,
             auth=self.request.auth,
             data={k: v
                   for k, v in s.validated_data.items()})
     if any(p in s.changed_data for p in SETTINGS_AFFECTING_CSS):
         regenerate_organizer_css.apply_async(args=(request.organizer.pk, ))
     s = OrganizerSettingsSerializer(instance=request.organizer.settings,
                                     organizer=request.organizer)
     return Response(s.data)
Пример #4
0
 def post(self, request, *args, **kwargs):
     form = self.get_form()
     if form.is_valid():
         form.save()
         if form.has_changed():
             self.request.organizer.log_action(
                 'pretix.organizer.settings', user=self.request.user, data={
                     k: (form.cleaned_data.get(k).name
                         if isinstance(form.cleaned_data.get(k), File)
                         else form.cleaned_data.get(k))
                     for k in form.changed_data
                 }
             )
         regenerate_organizer_css.apply_async(args=(self.request.organizer.pk,))
         messages.success(self.request, _('Your changes have been saved. Please note that it can '
                                          'take a short period of time until your changes become '
                                          'active.'))
         return redirect(self.get_success_url())
     else:
         messages.error(self.request, _('We could not save your changes. See below for details.'))
         return self.get(request)