diff --git a/pretix_public_registrations/forms.py b/pretix_public_registrations/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..107e7f428d24b767cdc6ecdf5695efb73ea59619 --- /dev/null +++ b/pretix_public_registrations/forms.py @@ -0,0 +1,31 @@ +from django import forms +from django.utils.translation import ugettext_lazy as _ +from pretix.base.forms import SettingsForm + + +class PublicRegistrationsForm(SettingsForm): + public_registrations_items = forms.MultipleChoiceField( + widget=forms.CheckboxSelectMultiple( + attrs={'class': 'scrolling-multiple-choice'} + ), + label=_('Show public registrations for'), + required=True, + choices=[], + ) + public_registrations_questions = forms.MultipleChoiceField( + widget=forms.CheckboxSelectMultiple( + attrs={'class': 'scrolling-multiple-choice'} + ), + label=_('Publicly show answers for'), + required=True, + choices=[], + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['public_registrations_items'].choices = [ + (i.pk, i.name) for i in self.obj.items.all() + ] + self.fields['public_registrations_questions'].choices = [ + (q.pk, q.question) for q in self.obj.questions.all() + ] diff --git a/pretix_public_registrations/signals.py b/pretix_public_registrations/signals.py index 12186f4cfb20512291c0ced550c1a102ab3856f9..561f0d9359c504995359cacc5944bf7b2e69a4ee 100644 --- a/pretix_public_registrations/signals.py +++ b/pretix_public_registrations/signals.py @@ -2,10 +2,11 @@ from django import forms from django.dispatch import receiver from django.template.loader import get_template from django.utils.translation import ugettext_lazy as _, get_language -from django.urls import resolve +from django.urls import resolve, reverse from django_gravatar.helpers import get_gravatar_url from i18nfield.strings import LazyI18nString from pretix.presale.signals import question_form_fields, front_page_bottom, process_response, html_head +from pretix.control.signals import nav_event_settings from pretix.base.models import OrderPosition @@ -64,3 +65,16 @@ def add_public_registrations_csp_headers(sender, request=None, response=None, ** if "event.index" in resolve(request.path_info).url_name: response['Content-Security-Policy'] = "img-src https://secure.gravatar.com" return response + + +@receiver(signal=nav_event_settings, dispatch_uid="public_registrations_nav_settings") +def navbar_settings(sender, request=None, **kwargs): + url = resolve(request.path_info) + return [{ + 'label': _('Public registrations'), + 'url': reverse('plugins:pretix_public_registrations:settings', kwargs={ + 'event': request.event.slug, + 'organizer': request.organizer.slug, + }), + 'active': url.namespace == 'plugins:pretix_public_registrations' and url.url_name == 'settings', + }] diff --git a/pretix_public_registrations/templates/pretix_public_registrations/settings.html b/pretix_public_registrations/templates/pretix_public_registrations/settings.html new file mode 100644 index 0000000000000000000000000000000000000000..57a8e202edc8b500ec0484c460e3c0d57c109f25 --- /dev/null +++ b/pretix_public_registrations/templates/pretix_public_registrations/settings.html @@ -0,0 +1,19 @@ +{% extends "pretixcontrol/event/settings_base.html" %} +{% load i18n %} +{% load bootstrap3 %} +{% block title %} {% trans "Public registrations settings" %} {% endblock %} +{% block inside %} + <h1>{% trans "Public registrations settings" %}</h1> + <form action="" method="post" class="form-horizontal"> + {% csrf_token %} + {% bootstrap_form_errors form %} + <fieldset> + {% bootstrap_form form layout="horizontal" %} + </fieldset> + <div class="form-group submit-group"> + <button type="submit" class="btn btn-primary btn-save"> + {% trans "Save" %} + </button> + </div> + </form> +{% endblock %} diff --git a/pretix_public_registrations/urls.py b/pretix_public_registrations/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..74daa86c7d4eb5495a62a64d5d2c6e6fb800e1d7 --- /dev/null +++ b/pretix_public_registrations/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url + +from .views import PublicParticipationsView + +urlpatterns = [ + url(r'^control/event/(?P<organizer>[^/]+)/(?P<event>[^/]+)/public_participations/$', PublicParticipationsView.as_view(), name='settings') +] diff --git a/pretix_public_registrations/views.py b/pretix_public_registrations/views.py new file mode 100644 index 0000000000000000000000000000000000000000..05acfbdc194fcd5da6f36cc6c320187b8141d3bc --- /dev/null +++ b/pretix_public_registrations/views.py @@ -0,0 +1,16 @@ +from django.urls import reverse +from pretix.control.views.event import EventSettingsViewMixin, EventSettingsFormView +from pretix.base.models import Event + +from .forms import PublicRegistrationsForm + + +class PublicParticipationsView(EventSettingsViewMixin, EventSettingsFormView): + form_class = PublicRegistrationsForm + template_name = 'pretix_public_registrations/settings.html' + + def get_success_url(self, **kwargs): + return reverse('plugins:pretix_public_registrations:settings', kwargs={ + 'organizer': self.request.event.organizer.slug, + 'event': self.request.event.slug, + })