mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Make available languages configurable
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>{% trans "Display settings" %}</legend>
|
||||
{% bootstrap_field sform.locales layout="horizontal" %}
|
||||
{% bootstrap_field sform.locale layout="horizontal" %}
|
||||
{% bootstrap_field sform.timezone layout="horizontal" %}
|
||||
{% bootstrap_field sform.show_date_to layout="horizontal" %}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
from django.views.generic import edit
|
||||
|
||||
|
||||
class EventBasedFormMixin:
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
if hasattr(self.request, 'event'):
|
||||
kwargs['event'] = self.request.event
|
||||
return kwargs
|
||||
|
||||
|
||||
class CreateView(EventBasedFormMixin, edit.CreateView):
|
||||
"""
|
||||
Like Django's default CreateView, but passes the optional event
|
||||
argument to the form. This is necessary for I18nModelForms to work
|
||||
properly.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class UpdateView(EventBasedFormMixin, edit.UpdateView):
|
||||
"""
|
||||
Like Django's default UpdateView, but passes the optional event
|
||||
argument to the form. This is necessary for I18nModelForms to work
|
||||
properly.
|
||||
"""
|
||||
pass
|
||||
|
||||
@@ -2,7 +2,6 @@ from collections import OrderedDict
|
||||
from django.conf import settings
|
||||
from django.shortcuts import render, redirect
|
||||
from django.utils.functional import cached_property
|
||||
from django.views.generic.edit import UpdateView
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
from django import forms
|
||||
@@ -15,6 +14,7 @@ from pretix.base.forms import VersionedModelForm, SettingsForm
|
||||
from pretix.base.models import Event
|
||||
from pretix.base.signals import register_payment_providers
|
||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||
from . import UpdateView
|
||||
|
||||
|
||||
class EventUpdateForm(VersionedModelForm):
|
||||
@@ -71,9 +71,13 @@ class EventSettingsForm(SettingsForm):
|
||||
choices=((a, a) for a in common_timezones),
|
||||
label=_("Default timezone"),
|
||||
)
|
||||
locales = forms.MultipleChoiceField(
|
||||
choices=settings.LANGUAGES,
|
||||
label=_("Available langauges"),
|
||||
)
|
||||
locale = forms.ChoiceField(
|
||||
choices=settings.LANGUAGES,
|
||||
label=_("Default locale"),
|
||||
label=_("Default language"),
|
||||
)
|
||||
user_mail_required = forms.BooleanField(
|
||||
label=_("Require e-mail adresses"),
|
||||
|
||||
@@ -3,6 +3,7 @@ from itertools import product
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import transaction
|
||||
from django.forms import BaseInlineFormSet
|
||||
from django.forms.widgets import flatatt
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.html import format_html
|
||||
@@ -13,6 +14,20 @@ from pretix.base.forms import VersionedModelForm
|
||||
from pretix.base.models import ItemVariation, Item
|
||||
|
||||
|
||||
class I18nInlineFormSet(BaseInlineFormSet):
|
||||
"""
|
||||
This is equivalent to a normal BaseInlineFormset, but cares for the special needs
|
||||
of I18nForms (see there for more information).
|
||||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.event = kwargs.pop('event', None)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def _construct_form(self, i, **kwargs):
|
||||
kwargs['event'] = self.event
|
||||
return super()._construct_form(i, **kwargs)
|
||||
|
||||
|
||||
class TolerantFormsetModelForm(VersionedModelForm):
|
||||
"""
|
||||
This is equivalent to a normal VersionedModelForm, but works around a problem that
|
||||
|
||||
@@ -4,7 +4,7 @@ from django.forms import BooleanField, ModelForm
|
||||
from django.utils.functional import cached_property
|
||||
|
||||
from django.views.generic import ListView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
from django.views.generic.edit import DeleteView
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.generic.detail import SingleObjectMixin
|
||||
from django.core.urlresolvers import resolve, reverse
|
||||
@@ -12,14 +12,15 @@ from django.http import HttpResponseRedirect, HttpResponseForbidden
|
||||
from django.shortcuts import redirect
|
||||
from django.forms.models import inlineformset_factory
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from pretix.base.forms import VersionedModelForm
|
||||
from pretix.base.forms import VersionedModelForm, I18nModelForm
|
||||
|
||||
from pretix.base.models import (
|
||||
Item, ItemCategory, Property, ItemVariation, PropertyValue, Question, Quota,
|
||||
Versionable)
|
||||
from pretix.control.permissions import EventPermissionRequiredMixin, event_permission_required
|
||||
from pretix.control.views.forms import TolerantFormsetModelForm, VariationsField
|
||||
from pretix.control.views.forms import TolerantFormsetModelForm, VariationsField, I18nInlineFormSet
|
||||
from pretix.control.signals import restriction_formset
|
||||
from . import UpdateView, CreateView
|
||||
|
||||
|
||||
class ItemList(ListView):
|
||||
@@ -215,6 +216,7 @@ class PropertyUpdate(EventPermissionRequiredMixin, UpdateView):
|
||||
formsetclass = inlineformset_factory(
|
||||
Property, PropertyValue,
|
||||
form=PropertyValueForm,
|
||||
formset=I18nInlineFormSet,
|
||||
can_order=True,
|
||||
extra=0,
|
||||
)
|
||||
@@ -269,6 +271,7 @@ class PropertyCreate(EventPermissionRequiredMixin, CreateView):
|
||||
formsetclass = inlineformset_factory(
|
||||
Property, PropertyValue,
|
||||
form=PropertyValueForm,
|
||||
formset=I18nInlineFormSet,
|
||||
can_order=True,
|
||||
extra=3,
|
||||
)
|
||||
@@ -440,7 +443,7 @@ class QuotaList(ListView):
|
||||
).prefetch_related("items")
|
||||
|
||||
|
||||
class QuotaForm(ModelForm):
|
||||
class QuotaForm(I18nModelForm):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
items = kwargs['items']
|
||||
|
||||
Reference in New Issue
Block a user