diff --git a/dav_events/templates/dav_events/event_detail.html b/dav_events/templates/dav_events/event_detail.html
index 8c48cab..c149cf6 100644
--- a/dav_events/templates/dav_events/event_detail.html
+++ b/dav_events/templates/dav_events/event_detail.html
@@ -14,12 +14,12 @@
{% trans 'Details' %}
-
-
+ {% trans 'Freigeben' %}
-
-
+ {% trans 'Ändern' %}
diff --git a/dav_events/views/events.py b/dav_events/views/events.py
index b941305..a37f30a 100644
--- a/dav_events/views/events.py
+++ b/dav_events/views/events.py
@@ -31,12 +31,20 @@ class EventListView(generic.ListView):
elif has_role(user, 'manage_all'):
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())
if has_role(user, role):
user_sports_list.append(k)
- qs = self.model.objects.filter(Q(owner=user) | Q(sport__in=user_sports_list))
+
+ filter |= Q(sport__in=user_sports_list)
+
+ if has_role(user, 'publish') or has_role(user, 'publish_incremental'):
+ filter |= Q(accepted=True)
+
+ qs = self.model.objects.filter(filter)
return qs
@@ -110,10 +118,21 @@ class EventPermissionMixin(object):
return True
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
return True
- elif permission in ('update', 'accept'):
- if has_role(user, 'manage_all'):
+ if obj.accepted and (has_role(user, 'publish') or has_role(user, 'publish_incremental')):
return True
- if has_role(user, 'manage_{}'.format(obj.sport.lower())):
+ elif permission == 'accept':
+ if not obj.accepted:
+ if has_role(user, 'manage_all'):
+ return True
+ if has_role(user, 'manage_{}'.format(obj.sport.lower())):
+ return True
+ elif permission == 'update':
+ if not obj.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