PageRenderTime 18ms CodeModel.GetById 8ms app.highlight 7ms RepoModel.GetById 2ms app.codeStats 0ms

/shabti/templates/auth_couchdb/+package+/lib/auth/permissions.py_tmpl

https://bitbucket.org/gawel/shabti
Unknown | 41 lines | 32 code | 9 blank | 0 comment | 0 complexity | 80a14d210c30ad647a94a05c70930f3b MD5 | raw file
 1from {{package}}.lib.auth import get_user
 2from {{package}} import model
 3import pylons
 4import types
 5
 6# Common permissions. Permission classes must have a 'check' 
 7# method which returns True or False.
 8
 9class SignedIn(object):
10
11    def check(self):
12        return (get_user() is not None)
13
14class InGroup(object):
15
16    def __init__(self, group_name):
17        self.group_name = group_name 
18
19    def check(self):
20        group = model.Group.get_by(name = self.group_name, active = True)
21        if group and get_user() in group.members:
22            return True
23        return False
24
25class HasPermission(object):
26
27    def __init__(self, permission, obj=None):
28        "obj may be string or actual object. If string, object retrieved from Context"
29        self.permission = permission
30        self.obj = obj
31
32    def check(self):
33        user = get_user()
34        if type(self.obj) is types.StringType:
35            c = pylons.c._current_obj()
36            obj = getattr(c, self.obj, None)
37        else:
38            obj = self.obj
39        if user and user.has_permission(self.permission, obj):
40            return True
41        return False