forked from CGM_Public/pretix_original
Allow to change slug in admin sessions
This commit is contained in:
@@ -202,17 +202,22 @@ class EventMetaValueForm(forms.ModelForm):
|
|||||||
|
|
||||||
|
|
||||||
class EventUpdateForm(I18nModelForm):
|
class EventUpdateForm(I18nModelForm):
|
||||||
def clean_slug(self):
|
|
||||||
return self.instance.slug
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.change_slug = kwargs.pop('change_slug', False)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
|
if not self.change_slug:
|
||||||
|
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
|
||||||
self.fields['location'].widget.attrs['rows'] = '3'
|
self.fields['location'].widget.attrs['rows'] = '3'
|
||||||
self.fields['location'].widget.attrs['placeholder'] = _(
|
self.fields['location'].widget.attrs['placeholder'] = _(
|
||||||
'Sample Conference Center\nHeidelberg, Germany'
|
'Sample Conference Center\nHeidelberg, Germany'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def clean_slug(self):
|
||||||
|
if self.change_slug:
|
||||||
|
return self.cleaned_data['slug']
|
||||||
|
return self.instance.slug
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Event
|
model = Event
|
||||||
localized_fields = '__all__'
|
localized_fields = '__all__'
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class OrganizerUpdateForm(OrganizerForm):
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.domain = kwargs.pop('domain', False)
|
self.domain = kwargs.pop('domain', False)
|
||||||
|
self.change_slug = kwargs.pop('change_slug', False)
|
||||||
kwargs.setdefault('initial', {})
|
kwargs.setdefault('initial', {})
|
||||||
self.instance = kwargs['instance']
|
self.instance = kwargs['instance']
|
||||||
if self.domain and self.instance:
|
if self.domain and self.instance:
|
||||||
@@ -43,7 +44,8 @@ class OrganizerUpdateForm(OrganizerForm):
|
|||||||
kwargs['initial'].setdefault('domain', initial_domain.domainname)
|
kwargs['initial'].setdefault('domain', initial_domain.domainname)
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
|
if not self.change_slug:
|
||||||
|
self.fields['slug'].widget.attrs['readonly'] = 'readonly'
|
||||||
if self.domain:
|
if self.domain:
|
||||||
self.fields['domain'] = forms.CharField(
|
self.fields['domain'] = forms.CharField(
|
||||||
max_length=255,
|
max_length=255,
|
||||||
@@ -53,6 +55,8 @@ class OrganizerUpdateForm(OrganizerForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def clean_slug(self):
|
def clean_slug(self):
|
||||||
|
if self.change_slug:
|
||||||
|
return self.cleaned_data['slug']
|
||||||
return self.instance.slug
|
return self.instance.slug
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
|
|||||||
@@ -153,6 +153,12 @@ class EventUpdate(EventSettingsViewMixin, EventPermissionRequiredMixin, MetaData
|
|||||||
'event': self.object.slug,
|
'event': self.object.slug,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super().get_form_kwargs()
|
||||||
|
if self.request.user.has_active_staff_session(self.request.session.session_key):
|
||||||
|
kwargs['change_slug'] = True
|
||||||
|
return kwargs
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
form = self.get_form()
|
form = self.get_form()
|
||||||
if form.is_valid() and self.sform.is_valid() and all([f.is_valid() for f in self.meta_forms]):
|
if form.is_valid() and self.sform.is_valid() and all([f.is_valid() for f in self.meta_forms]):
|
||||||
|
|||||||
@@ -225,6 +225,7 @@ class OrganizerUpdate(OrganizerPermissionRequiredMixin, UpdateView):
|
|||||||
kwargs = super().get_form_kwargs()
|
kwargs = super().get_form_kwargs()
|
||||||
if self.request.user.has_active_staff_session(self.request.session.session_key):
|
if self.request.user.has_active_staff_session(self.request.session.session_key):
|
||||||
kwargs['domain'] = True
|
kwargs['domain'] = True
|
||||||
|
kwargs['change_slug'] = True
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
def get_success_url(self) -> str:
|
def get_success_url(self) -> str:
|
||||||
|
|||||||
Reference in New Issue
Block a user