From: yomguy Date: Fri, 4 Mar 2011 16:56:09 +0000 (+0100) Subject: change permissions X-Git-Tag: 1.1~406 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=b4b076a0878df14603a82e7687c2bd82f8f0da4a;p=telemeta.git change permissions --- diff --git a/telemeta/models/system.py b/telemeta/models/system.py index 4f6f327d..b08379a6 100644 --- a/telemeta/models/system.py +++ b/telemeta/models/system.py @@ -37,6 +37,7 @@ from telemeta.models.core import * from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ + class User(ModelCore): "Telemeta user" LEVEL_CHOICES = (('user', 'user'), ('maintainer', 'maintainer'), ('admin', 'admin')) diff --git a/telemeta/templates/telemeta_default/base.html b/telemeta/templates/telemeta_default/base.html index 3b33b3a0..15934e98 100644 --- a/telemeta/templates/telemeta_default/base.html +++ b/telemeta/templates/telemeta_default/base.html @@ -64,7 +64,7 @@ Help |
  • {% trans "Items" %}
  • {% trans "Geo Navigator" %}
  • {% trans "Advanced search" %}
  • -{% if user.is_authenticated %} +{% if user.is_staff %}
  • {% trans "Admin" %}
  • {% endif %} diff --git a/telemeta/templates/telemeta_default/collection_detail.html b/telemeta/templates/telemeta_default/collection_detail.html index 4e0166e3..7e2dcf49 100644 --- a/telemeta/templates/telemeta_default/collection_detail.html +++ b/telemeta/templates/telemeta_default/collection_detail.html @@ -14,7 +14,7 @@
    Dublin Core - {% if user.is_authenticated %} + {% if user.is_authenticated and perms.telemeta.change_mediacollection %} {% block tools %} EDIT diff --git a/telemeta/templates/telemeta_default/mediaitem_detail.html b/telemeta/templates/telemeta_default/mediaitem_detail.html index a13efc49..24a12700 100644 --- a/telemeta/templates/telemeta_default/mediaitem_detail.html +++ b/telemeta/templates/telemeta_default/mediaitem_detail.html @@ -38,7 +38,7 @@ Dublin Core - {% if user.is_authenticated and user.is_staff%} + {% if user.is_authenticated and perms.telemeta.change_mediaitem %} {% block tools %} EDIT {% endblock tools %} diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 1ef13155..4b6836cf 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -50,7 +50,7 @@ from django.shortcuts import render_to_response, redirect from django.views.generic import list_detail from django.conf import settings from django.contrib import auth -from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import login_required, permission_required from django.core.context_processors import csrf from django.forms.models import modelformset_factory @@ -80,7 +80,7 @@ def stream_from_processor(decoder, processor): yield _chunk def stream_from_file(file): - chunk_size = 0xFFFF + chunk_size = 0xFFFFF f = open(file, 'r') while True: _chunk = f.read(chunk_size) @@ -116,6 +116,7 @@ class WebView(object): collection = MediaCollection.objects.get(public_id=public_id) return render(request, template, {'collection': collection}) + @method_decorator(permission_required('telemeta.change_mediacollection')) def collection_detail_edit(self, request, public_id, template='telemeta/collection_detail_edit.html'): collection = MediaCollection.objects.get(public_id=public_id) if request.method == 'POST': @@ -186,6 +187,7 @@ class WebView(object): 'previous' : previous, 'next' : next, }) + @method_decorator(permission_required('telemeta.change_mediaitem')) def item_detail_edit(self, request, public_id, template='telemeta/mediaitem_detail_edit.html'): """Show the details of a given item""" item = MediaItem.objects.get(public_id=public_id) @@ -461,19 +463,19 @@ class WebView(object): def __get_admin_context_vars(self): return {"enumerations": self.__get_enumerations_list()} - @method_decorator(login_required) + @method_decorator(permission_required('sites.change_site')) def admin_index(self, request): return render(request, 'telemeta/admin.html', self.__get_admin_context_vars()) - @method_decorator(login_required) + @method_decorator(permission_required('sites.change_site')) def admin_general(self, request): return render(request, 'telemeta/admin_general.html', self.__get_admin_context_vars()) - @method_decorator(login_required) + @method_decorator(permission_required('sites.change_site')) def admin_enumerations(self, request): return render(request, 'telemeta/admin_enumerations.html', self.__get_admin_context_vars()) - @method_decorator(login_required) + @method_decorator(permission_required('sites.change_site')) def admin_instruments(self, request): objects = Instrument.objects.all() instruments = [] @@ -494,7 +496,7 @@ class WebView(object): return model - @method_decorator(login_required) #@login_required + @method_decorator(permission_required('telemeta.change_keyword')) def edit_enumeration(self, request, enumeration_id): enumeration = self.__get_enumeration(enumeration_id) @@ -507,7 +509,7 @@ class WebView(object): vars["enumeration_values"] = enumeration.objects.all() return render(request, 'telemeta/enumeration_edit.html', vars) - @method_decorator(login_required) #@login_required + @method_decorator(permission_required('telemeta.add_keyword')) def add_to_enumeration(self, request, enumeration_id): enumeration = self.__get_enumeration(enumeration_id) @@ -519,7 +521,7 @@ class WebView(object): return self.edit_enumeration(request, enumeration_id) - @method_decorator(login_required) #@login_required + @method_decorator(permission_required('telemeta.change_keyword')) def update_enumeration(self, request, enumeration_id): enumeration = self.__get_enumeration(enumeration_id) @@ -531,7 +533,7 @@ class WebView(object): return self.edit_enumeration(request, enumeration_id) - @method_decorator(login_required) #@login_required + @method_decorator(permission_required('telemeta.change_keyword')) def edit_enumeration_value(self, request, enumeration_id, value_id): enumeration = self.__get_enumeration(enumeration_id) @@ -544,7 +546,7 @@ class WebView(object): vars["enumeration_record"] = enumeration.objects.get(id__exact=value_id) return render(request, 'telemeta/enumeration_edit_value.html', vars) - @method_decorator(login_required) #@login_required + @method_decorator(permission_required('telemeta.change_keyword')) def update_enumeration_value(self, request, enumeration_id, value_id): if request.POST.has_key("save"): @@ -639,8 +641,8 @@ class WebView(object): auth.logout(request) return redirect('telemeta-home') - @jsonrpc_method('telemeta.add_marker') + @method_decorator(permission_required('telemeta.add_marker')) def add_marker(request, marker): # marker must be a dict if isinstance(marker, dict): @@ -659,6 +661,7 @@ class WebView(object): raise 'Error : Bad marker dictionnary' @jsonrpc_method('telemeta.del_marker') + @method_decorator(permission_required('telemeta.delete_marker')) def del_marker(request, public_id): m = MediaItemMarker.objects.get(public_id=public_id) m.delete() @@ -678,6 +681,7 @@ class WebView(object): return list @jsonrpc_method('telemeta.update_marker') + @method_decorator(permission_required('telemeta.change_marker')) def update_marker(request, marker): if isinstance(marker, dict): m = MediaItemMarker.objects.get(public_id=marker['public_id'])