]> git.parisson.com Git - telemeta.git/commitdiff
change permissions
authoryomguy <yomguy@parisson.com>
Fri, 4 Mar 2011 16:56:09 +0000 (17:56 +0100)
committeryomguy <yomguy@parisson.com>
Fri, 4 Mar 2011 16:56:09 +0000 (17:56 +0100)
telemeta/models/system.py
telemeta/templates/telemeta_default/base.html
telemeta/templates/telemeta_default/collection_detail.html
telemeta/templates/telemeta_default/mediaitem_detail.html
telemeta/web/base.py

index 4f6f327d8d98141a0ee74bbfcd66949153f9c785..b08379a6da85904b7b824a557e5b923e21d0559e 100644 (file)
@@ -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'))    
index 3b33b3a06871bc0b123be32e0fbb4508c06f67ab..15934e982457de6115ca5a6d405db3323b9f3c88 100644 (file)
@@ -64,7 +64,7 @@ Help |
 <li class="green"><a href="{% url telemeta-items %}">{% trans "Items" %}</a></li>
 <li class="yellow" {% if not user.is_authenticated %} class="last" {% endif %}><a href="{% url telemeta-geo-continents %}">{% trans "Geo Navigator" %}</a></li>
 <li class="orange"><a href="{% url telemeta-search-criteria %}">{% trans "Advanced search" %}</a></li>
-{% if user.is_authenticated %}
+{% if user.is_staff %}
 <li class="red" class="last"><a href="{% url telemeta-admin %}">{% trans "Admin" %}</a></li>
 {% endif %}
 </ul>
index 4e0166e31aa7bc0aac3be28f5237316b77ecfef4..7e2dcf4903b0a0dbffa2763944ecc41a8ec17548 100644 (file)
@@ -14,7 +14,7 @@
     <div>
     <a href="{% url telemeta-collection-dublincore collection.public_id %}">Dublin Core</a>
     
-    {% if user.is_authenticated %} 
+    {% if user.is_authenticated and perms.telemeta.change_mediacollection %}
      {% block tools %}
      <a href="{% url telemeta-collection-detail-edit collection.public_id %}">
       <img src="images/edit_page.png" alt="EDIT" style="vertical-align:middle" /></a>
index a13efc49b422abee5120620af49bf0e26ceca093..24a1270042e2a0b032adabab60cc4b451b432eee 100644 (file)
@@ -38,7 +38,7 @@
                 <a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a>
             </td>
             <td align="right">
-                {% if user.is_authenticated and user.is_staff%}
+                {% if user.is_authenticated and perms.telemeta.change_mediaitem %}
                 {% block tools %}
                 <a href="{% url telemeta-item-detail-edit item.public_id %}"><img src="images/edit_page.png" alt="EDIT"></a>
                 {% endblock tools %}
index 1ef1315543ecb52e3592ef3bd1348076ec02abcd..4b6836cf67319bb0f168dd1ebb8c15f34e05c436 100644 (file)
@@ -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'])