BROKEN! MIGRATE! BIG UPD: not yet complete support for publish[ed|ing]_[web|facebook]

This commit is contained in:
2019-01-23 18:36:11 +01:00
parent 7f7b596b20
commit e6a5f9818a
19 changed files with 503 additions and 210 deletions

View File

@@ -31,20 +31,20 @@ class EventListView(generic.ListView):
user = self.request.user
if user.is_superuser:
qs = self.model.objects.all()
elif has_role(user, 'manage_all'):
elif has_role(user, 'manager_super'):
qs = self.model.objects.all()
else:
filter = Q(owner=user)
user_sports_list = list()
for k in ('W', 'S', 'M', 'K', 'B'):
role = 'manage_{}'.format(k.lower())
role = 'manager_{}'.format(k.lower())
if has_role(user, role):
user_sports_list.append(k)
filter |= Q(sport__in=user_sports_list)
if has_role(user, 'publish') or has_role(user, 'publish_incremental'):
if has_role(user, 'publisher'):
filter |= Q(flags__status__code='accepted')
qs = self.model.objects.filter(filter)
@@ -54,7 +54,7 @@ class EventListView(generic.ListView):
def get_context_data(self, **kwargs):
context = super(EventListView, self).get_context_data(**kwargs)
user = self.request.user
context['has_permission_export'] = user.is_superuser or has_role(user, 'publish')
context['has_permission_export'] = workflow.has_global_permission(user, 'export')
return context
@method_decorator(login_required)
@@ -112,8 +112,8 @@ class EventListExportView(generic.FormView):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
user = request.user
if not user.is_superuser and not has_role(user, 'publish'):
raise PermissionDenied('publish')
if not workflow.has_global_permission(user, 'export'):
raise PermissionDenied('export')
return super(EventListExportView, self).dispatch(request, *args, **kwargs)
@@ -122,45 +122,7 @@ class EventPermissionMixin(object):
def has_permission(self, permission, obj):
user = self.request.user
if user.is_superuser:
return True
if permission == 'view':
if user == obj.owner:
return True
if has_role(user, 'manage_all'):
return True
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
return True
if has_role(user, 'publish_incremental') and obj.is_flagged('accepted'):
return True
if has_role(user, 'publish') and obj.is_flagged('accepted'):
return True
elif permission == 'submit':
if user == obj.owner:
return True
elif permission == 'accept':
if has_role(user, 'manage_all'):
return True
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
return True
elif permission == 'publish':
if has_role(user, 'publish') or has_role(user, 'publish_incremental'):
return True
elif permission == 'update':
if not obj.is_flagged('submitted'):
if user == obj.owner:
return True
elif not obj.is_flagged('accepted'):
if has_role(user, 'manage_all'):
return True
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
return True
elif has_role(user, 'publish') or has_role(user, 'publish_incremental'):
return True
return False
return workflow.has_object_permission(user, permission, obj)
def enforce_permission(self, obj):
permission = self.permission
@@ -197,13 +159,13 @@ class EventConfirmStatusView(EventPermissionMixin, generic.DetailView):
status = kwargs.get('status')
event = self.get_object()
if status == 'submitted':
if status.startswith('submit'):
if not self.has_permission('submit', event):
raise PermissionDenied(status)
elif status == 'accepted':
elif status.startswith('accept'):
if not self.has_permission('accept', event):
raise PermissionDenied(status)
elif status == 'publishing' or status == 'published':
elif status.startswith('publish'):
if not self.has_permission('publish', event):
raise PermissionDenied(status)
else:
@@ -221,11 +183,11 @@ class EventConfirmStatusView(EventPermissionMixin, generic.DetailView):
event.confirm_status(status, request.user)
if status == 'submitted':
if status.startswith('submit'):
messages.success(request, _(u'Veranstaltung eingereicht.'))
elif status == 'accepted':
elif status.startswith('accept'):
messages.success(request, _(u'Veranstaltung freigegeben.'))
elif status == 'publishing' or status == 'published':
elif status.startswith('publish'):
messages.success(request, _(u'Veröffentlichung registriert.'))
else:
messages.success(request, _(u'Veranstaltungsstatus registriert.'))