Skip to content

Commit

Permalink
Add permissions sidebar control to record page
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Knab committed Jan 10, 2012
1 parent 917abee commit db2fcd7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
14 changes: 10 additions & 4 deletions rooibos/data/models.py
Expand Up @@ -275,16 +275,22 @@ def get_title():
def shared(self): def shared(self):
return bool(self.collectionitem_set.filter(hidden=False).count()) if self.owner else None return bool(self.collectionitem_set.filter(hidden=False).count()) if self.owner else None


def editable_by(self, user): def _check_permission_for_user(self, user, **permissions):
# checks if user is owner or has ACL access # checks if user is owner or has ACL access
if check_access(user, self, write=True): if check_access(user, self, **permissions):
return True return True
# if record does not have individual ACL... # if record does not have individual ACL...
if len(_records_with_individual_acl_by_ids([self.id])) > 0: if len(_records_with_individual_acl_by_ids([self.id])) > 0:
return False return False
# ...check collection access # ...check collection access
return len(accessible_ids(user, self.collection_set, write=True)) > 0 return len(accessible_ids(user, self.collection_set, **permissions)) > 0


def editable_by(self, user):
return self._check_permission_for_user(user, write=True)

def manageable_by(self, user):
return self._check_permission_for_user(user, manage=True)



class MetadataStandard(models.Model): class MetadataStandard(models.Model):
title = models.CharField(max_length=100) title = models.CharField(max_length=100)
Expand Down
11 changes: 11 additions & 0 deletions rooibos/data/templates/data_record.html
Expand Up @@ -2,6 +2,7 @@
{% load ui %} {% load ui %}
{% load viewers %} {% load viewers %}
{% load data %} {% load data %}
{% load access_control %}


{% block javascript %} {% block javascript %}
{{ block.super }} {{ block.super }}
Expand Down Expand Up @@ -220,6 +221,16 @@
</div> </div>
{% endif %} {% endif %}



{% if can_manage %}
<div class="facet active-facet" id="data_record_sidebar_permissions">
<div class="facet-header">Permissions <a href="{% permissions_modify_url record %}"><img src="{% url static 'images/edit.png' %}" class="facet-button" /></a></div>
<div class="facet-body">
{% permissions_display record "Inherited from collection" %}
</div>
</div>
{% endif %}

{% endblock %} {% endblock %}




Expand Down
3 changes: 3 additions & 0 deletions rooibos/data/views.py
Expand Up @@ -72,10 +72,12 @@ def record(request, id, name, contexttype=None, contextid=None, contextname=None
writable_collections = list(accessible_ids(request.user, Collection, write=True)) writable_collections = list(accessible_ids(request.user, Collection, write=True))
readable_collections = list(accessible_ids(request.user, Collection)) readable_collections = list(accessible_ids(request.user, Collection))
can_edit = request.user.is_authenticated() can_edit = request.user.is_authenticated()
can_manage = False


if id and name: if id and name:
record = Record.get_or_404(id, request.user) record = Record.get_or_404(id, request.user)
can_edit = can_edit and record.editable_by(request.user) can_edit = can_edit and record.editable_by(request.user)
can_manage = record.manageable_by(request.user)
else: else:
if request.user.is_authenticated() and (writable_collections or (personal and readable_collections)): if request.user.is_authenticated() and (writable_collections or (personal and readable_collections)):
record = Record() record = Record()
Expand Down Expand Up @@ -290,6 +292,7 @@ class CollectionForm(forms.Form):
'fv_formset': formset, 'fv_formset': formset,
'c_formset': collectionformset, 'c_formset': collectionformset,
'can_edit': can_edit, 'can_edit': can_edit,
'can_manage': can_manage,
'next': request.GET.get('next'), 'next': request.GET.get('next'),
'collection_items': collection_items, 'collection_items': collection_items,
'upload_form': upload_form, 'upload_form': upload_form,
Expand Down

0 comments on commit db2fcd7

Please sign in to comment.