forked from CGM_Public/pretix_original
Event setup: do not create new team when staff session active (#2132)
With b260cca412, team provisioning has
been disabled for users that are staff. However, this leads to strange
UX, as a new event created by a staff member, not currently in a staff
session resulted in a 404 directly after creation.
The PR updates this requirement to not need to select a team, only when
a staff session is active.
This commit is contained in:
@@ -178,7 +178,7 @@ class EventWizardBasicsForm(I18nModelForm):
|
|||||||
self.locales = kwargs.get('locales')
|
self.locales = kwargs.get('locales')
|
||||||
self.has_subevents = kwargs.pop('has_subevents')
|
self.has_subevents = kwargs.pop('has_subevents')
|
||||||
self.user = kwargs.pop('user')
|
self.user = kwargs.pop('user')
|
||||||
kwargs.pop('session')
|
self.session = kwargs.pop('session')
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
if 'timezone' not in self.initial:
|
if 'timezone' not in self.initial:
|
||||||
self.initial['timezone'] = get_current_timezone_name()
|
self.initial['timezone'] = get_current_timezone_name()
|
||||||
@@ -193,7 +193,7 @@ class EventWizardBasicsForm(I18nModelForm):
|
|||||||
del self.fields['presale_end']
|
del self.fields['presale_end']
|
||||||
del self.fields['date_to']
|
del self.fields['date_to']
|
||||||
|
|
||||||
if self.has_control_rights(self.user, self.organizer):
|
if self.has_control_rights(self.user, self.organizer, self.session):
|
||||||
del self.fields['team']
|
del self.fields['team']
|
||||||
else:
|
else:
|
||||||
self.fields['team'].queryset = self.user.teams.filter(organizer=self.organizer)
|
self.fields['team'].queryset = self.user.teams.filter(organizer=self.organizer)
|
||||||
@@ -235,11 +235,11 @@ class EventWizardBasicsForm(I18nModelForm):
|
|||||||
return slug
|
return slug
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def has_control_rights(user, organizer):
|
def has_control_rights(user, organizer, session):
|
||||||
return user.teams.filter(
|
return user.teams.filter(
|
||||||
organizer=organizer, all_events=True, can_change_event_settings=True, can_change_items=True,
|
organizer=organizer, all_events=True, can_change_event_settings=True, can_change_items=True,
|
||||||
can_change_orders=True, can_change_vouchers=True
|
can_change_orders=True, can_change_vouchers=True
|
||||||
).exists() or user.is_staff
|
).exists() or user.has_active_staff_session(session.session_key)
|
||||||
|
|
||||||
|
|
||||||
class EventChoiceMixin:
|
class EventChoiceMixin:
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ class EventWizard(SafeSessionWizardView):
|
|||||||
initial['locales'] = self.clone_from.settings.locales
|
initial['locales'] = self.clone_from.settings.locales
|
||||||
initial['has_subevents'] = self.clone_from.has_subevents
|
initial['has_subevents'] = self.clone_from.has_subevents
|
||||||
elif step == 'basics':
|
elif step == 'basics':
|
||||||
|
initial['request'] = self.request
|
||||||
initial['name'] = self.clone_from.name
|
initial['name'] = self.clone_from.name
|
||||||
|
|
||||||
if re.match('^.*-[0-9]+$', self.clone_from.slug):
|
if re.match('^.*-[0-9]+$', self.clone_from.slug):
|
||||||
@@ -270,7 +271,7 @@ class EventWizard(SafeSessionWizardView):
|
|||||||
user=self.request.user,
|
user=self.request.user,
|
||||||
)
|
)
|
||||||
|
|
||||||
if not EventWizardBasicsForm.has_control_rights(self.request.user, event.organizer):
|
if not EventWizardBasicsForm.has_control_rights(self.request.user, event.organizer, self.request.session):
|
||||||
if basics_data["team"] is not None:
|
if basics_data["team"] is not None:
|
||||||
t = basics_data["team"]
|
t = basics_data["team"]
|
||||||
t.limit_events.add(event)
|
t.limit_events.add(event)
|
||||||
|
|||||||
Reference in New Issue
Block a user