diff options
author | Leif Johansson <leifj@sunet.se> | 2011-05-02 14:42:47 +0200 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2011-05-02 14:42:47 +0200 |
commit | fad0210b1e917d1f6de6755bc236ca23f5f1f313 (patch) | |
tree | 6ca4c186e75e87165de4a404609ee47258e8319f /src/django_co_connector/models.py | |
parent | 69a0a519a58b44bb9fc9c57a00508dd5701be744 (diff) |
acls
Diffstat (limited to 'src/django_co_connector/models.py')
-rw-r--r-- | src/django_co_connector/models.py | 57 |
1 files changed, 4 insertions, 53 deletions
diff --git a/src/django_co_connector/models.py b/src/django_co_connector/models.py index 7cddb9a..4df8bc2 100644 --- a/src/django_co_connector/models.py +++ b/src/django_co_connector/models.py @@ -7,60 +7,10 @@ Created on Apr 5, 2011 from django.db import models from django.db.models.fields import CharField, URLField, DateTimeField, IntegerField from django.contrib.auth.models import Group -from django.db.models.fields.related import OneToOneField, ForeignKey +from django.db.models.fields.related import OneToOneField from django.dispatch.dispatcher import Signal from django_co_connector.settings import CO_ATTRIBUTES -class AccessControlEntry(models.Model): - group = ForeignKey(Group,related_name='+',blank=True,null=True) - permission = CharField(max_length=256) - modify_time = DateTimeField(auto_now=True) - create_time = DateTimeField(auto_now_add=True) - - def __unicode__(self): - return "%s can %s" % (self.group.__unicode__(),self.permission) - - class Meta: - unique_together = ('group','permission') - -def allow(object,group,permission): - if not hasattr(object,'acl'): - raise Exception,"no acl property" - - if group == 'anyone': - ace = object.acl.filter(group=None,permission=permission) - if not ace: - ace = AccessControlEntry.objects.create(group=None,permission=permission) - object.acl.append(ace) - else: - ace = object.acl.filter(group=group,permission=permission) - if not ace: - ace = AccessControlEntry.objects.create(group=group,permission=permission) - object.acl.append(ace) - -def deny(object,group,permission): - if not hasattr(object,'acl'): - raise Exception,"no acl property" - - if group == 'anyone': - ace = object.acl.filter(group=None,permission=permission) - if ace: - object.acl.remove(ace) - else: - ace = object.acl.filter(group=group,permission=permission) - if ace: - object.acl.remove(ace) - -def can(object,user,permission): - if not hasattr(object,'acl'): - raise Exception,"no acl property" - # XXX use more sql here - for ace in object.acl.filter(permission=permission): - if not ace.group or ace.group in user.groups: - return True - - return False - class GroupConnector(models.Model): attribute = CharField(max_length=1024) value = CharField(max_length=1024) @@ -103,8 +53,9 @@ remove_member = Signal(providing_args=['user']) def co_import_from_request(request): for attribute in request.META.get(CO_ATTRIBUTES): - values = request.META.get(attribute) - co_import_av(request.user,attribute,values.split(';')) + values = request.META.get(attribute) + if values and values != "(null)": + co_import_av(request.user,attribute,values.split(';')) def co_import_av(user,attribute,values): for value in values: |