Changeset - 6efc762eb162
[Not reviewed]
default
0 2 0
Branko Majic (branko) - 11 years ago 2013-06-30 00:11:45
branko@majic.rs
Replaced all of the different view permissions with a single view permission, attached to the project model for now. There is simply no need for that fine granularity.
2 files changed with 7 insertions and 29 deletions:
0 comments (0 inline, 0 general)
conntrackt/models.py
Show inline comments
 
@@ -3,25 +3,6 @@ from django.core.exceptions import Valid
 
from django.db import models
 

	
 

	
 
class ViewPermissionModelMetaClass(models.base.ModelBase):
 
    """
 
    Implements a meta class that can be used for automatically adding the view
 
    permission for a model.
 

	
 
    Limitation is that syncdb must be called with --all if using South.
 

	
 
    Original source found at:
 

	
 
    http://stackoverflow.com/questions/725913/dynamic-meta-attributes-for-django-models
 
    """
 

	
 
    def __new__(cls, name, bases, attrs):
 
        cl = super(ViewPermissionModelMetaClass, cls).__new__(cls, name, bases, attrs)
 
        cl._meta.permissions.append(('view_' + cl._meta.module_name, u'Can view %s' % cl._meta.verbose_name))
 

	
 
        return cl
 

	
 

	
 
class Project(models.Model):
 
    """
 
    Implements a model with information about a project. A project has some
 
@@ -37,7 +18,8 @@ class Project(models.Model):
 
    name = models.CharField(max_length=100)
 
    description = models.TextField(blank=True)
 

	
 
    __metaclass__ = ViewPermissionModelMetaClass
 
    class Meta:
 
        permissions = (("view", "Can view information"),)
 

	
 
    def __unicode__(self):
 
        """
 
@@ -75,8 +57,6 @@ class Location(models.Model):
 
    name = models.CharField(max_length=100)
 
    description = models.TextField(blank=True)
 

	
 
    __metaclass__ = ViewPermissionModelMetaClass
 

	
 
    def __unicode__(self):
 
        """
 
        Returns:
 
@@ -111,8 +91,6 @@ class Entity(models.Model):
 
    project = models.ForeignKey(Project)
 
    location = models.ForeignKey(Location)
 

	
 
    __metaclass__ = ViewPermissionModelMetaClass
 

	
 
    class Meta:
 
        """
 
        Overrides some of the default parameters used by Django for this model.
conntrackt/views.py
Show inline comments
 
@@ -24,7 +24,7 @@ class IndexView(MultiplePermissionsRequi
 

	
 
    # Required permissions.
 
    permissions = {
 
        "all": ("conntrackt.view_project", "conntrackt.view_location",),
 
        "all": ("conntrackt.view", "conntrackt.view",),
 
        }
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 
@@ -56,7 +56,7 @@ class ProjectView(MultiplePermissionsReq
 
    model = Project
 

	
 
    permissions = {
 
        "all": ("conntrackt.view_project", "conntrackt.view_location",)
 
        "all": ("conntrackt.view", "conntrackt.view",)
 
        }
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 
@@ -105,7 +105,7 @@ class EntityView(MultiplePermissionsRequ
 

	
 
    # Required permissions.
 
    permissions = {
 
        "all": ("conntrackt.view_entity",)
 
        "all": ("conntrackt.view",)
 
        }
 
    # Raise authorisation denied exception for unmet permissions.
 
    raise_exception = True
 
@@ -128,7 +128,7 @@ class EntityView(MultiplePermissionsRequ
 
        return context
 

	
 

	
 
@permission_required("conntrackt.view_entity", raise_exception = True)
 
@permission_required("conntrackt.view", raise_exception = True)
 
def entity_iptables(request, pk):
 
    """
 
    Custom view that returns response containing iptables rules generated for an
 
@@ -161,7 +161,7 @@ def entity_iptables(request, pk):
 
    return response
 

	
 

	
 
@permission_required("conntrackt.view_entity", raise_exception = True)
 
@permission_required("conntrackt.view", raise_exception = True)
 
def project_iptables(request, project_id, location_id=None):
 
    """
 
    Custom view for obtaining iptables for all entities of a project or project
0 comments (0 inline, 0 general)