~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/database.py

  • Committer: William Grant
  • Date: 2009-02-24 13:29:44 UTC
  • Revision ID: grantw@unimelb.edu.au-20090224132944-lm29zd1li1rjg77p
Privileges (apart from admin) are now offering-local, not global.

Offering privileges are granted by Enrolment.role, and global admin
by User.admin. ivle.caps is dead.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
                         Reference, ReferenceSet, Bool, Storm, Desc
32
32
 
33
33
import ivle.conf
34
 
import ivle.caps
35
34
 
36
35
__all__ = ['get_store',
37
36
            'User',
87
86
    login = Unicode()
88
87
    passhash = Unicode()
89
88
    state = Unicode()
90
 
    rolenm = Unicode()
 
89
    admin = Bool()
91
90
    unixid = Int()
92
91
    nick = Unicode()
93
92
    pass_exp = DateTime()
99
98
    studentid = Unicode()
100
99
    settings = Unicode()
101
100
 
102
 
    def _get_role(self):
103
 
        if self.rolenm is None:
104
 
            return None
105
 
        return ivle.caps.Role(self.rolenm)
106
 
    def _set_role(self, value):
107
 
        if not isinstance(value, ivle.caps.Role):
108
 
            raise TypeError("role must be an ivle.caps.Role")
109
 
        self.rolenm = unicode(value)
110
 
    role = property(_get_role, _set_role)
111
 
 
112
101
    __init__ = _kwarg_init
113
102
 
114
103
    def __repr__(self):
125
114
            return None
126
115
        return self.hash_password(password) == self.passhash
127
116
 
128
 
    def hasCap(self, capability):
129
 
        """Given a capability (which is a Role object), returns True if this
130
 
        User has that capability, False otherwise.
131
 
        """
132
 
        return self.role.hasCap(capability)
133
 
 
134
117
    @property
135
118
    def password_expired(self):
136
119
        fieldval = self.pass_exp
212
195
        return store.find(cls, cls.login == unicode(login)).one()
213
196
 
214
197
    def get_permissions(self, user):
215
 
        if user and user.rolenm == 'admin' or user is self:
 
198
        if user and user.admin or user is self:
216
199
            return set(['view', 'edit'])
217
200
        else:
218
201
            return set()
239
222
        perms = set()
240
223
        if user is not None:
241
224
            perms.add('view')
242
 
            if user.rolenm == 'admin':
 
225
            if user.admin:
243
226
                perms.add('edit')
244
227
        return perms
245
228
 
302
285
        perms = set()
303
286
        if user is not None:
304
287
            perms.add('view')
305
 
            if user.rolenm in ('admin', 'lecturer'):
 
288
            if user.admin:
306
289
                perms.add('edit')
307
290
        return perms
308
291
 
314
297
    user = Reference(user_id, User.id)
315
298
    offering_id = Int(name="offeringid")
316
299
    offering = Reference(offering_id, Offering.id)
 
300
    role = Unicode()
317
301
    notes = Unicode()
318
302
    active = Bool()
319
303
 
435
419
    def get_permissions(self, user):
436
420
        perms = set()
437
421
        if user is not None:
438
 
            if user.rolenm in ('admin', 'lecturer'):
 
422
            if user.admin:
439
423
                perms.add('edit')
440
424
                perms.add('view')
441
425
        return perms