BROKEN! MIGRATE! BIG UPD: not yet complete support for publish[ed|ing]_[web|facebook]
This commit is contained in:
@@ -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.'))
|
||||
|
||||
Reference in New Issue
Block a user