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

« back to all changes in this revision

Viewing changes to ivle/database.py

  • Committer: David Coles
  • Date: 2010-02-13 00:59:09 UTC
  • Revision ID: coles.david@gmail.com-20100213005909-ecl1nd4g0criri21
docs: Don't show stubbed end user documentation. It looks bad, especially when some of it has lurked for years\!

Show diffs side-by-side

added added

removed removed

Lines of Context:
227
227
        """Find a user in a store by login name."""
228
228
        return store.find(cls, cls.login == unicode(login)).one()
229
229
 
230
 
    def get_permissions(self, user):
 
230
    def get_permissions(self, user, config):
231
231
        """Determine privileges held by a user over this object.
232
232
 
233
233
        If the user requesting privileges is this user or an admin,
257
257
    def __repr__(self):
258
258
        return "<%s '%s'>" % (type(self).__name__, self.short_name)
259
259
 
260
 
    def get_permissions(self, user):
 
260
    def get_permissions(self, user, config):
261
261
        """Determine privileges held by a user over this object.
262
262
 
263
263
        If the user requesting privileges is an admin, they may edit.
371
371
                               Enrolment.offering_id == self.id).one()
372
372
        Store.of(enrolment).remove(enrolment)
373
373
 
374
 
    def get_permissions(self, user):
 
374
    def get_permissions(self, user, config):
375
375
        perms = set()
376
376
        if user is not None:
377
377
            enrolment = self.get_enrolment(user)
378
378
            if enrolment or user.admin:
379
379
                perms.add('view')
380
 
            if (enrolment and enrolment.role in (u'tutor', u'lecturer')) \
381
 
               or user.admin:
382
 
                perms.add('edit')
 
380
            if enrolment and enrolment.role == u'tutor':
 
381
                perms.add('view_project_submissions')
 
382
                # Site-specific policy on the role of tutors
 
383
                if config['policy']['tutors_can_enrol_students']:
 
384
                    perms.add('enrol')
 
385
                    perms.add('enrol_student')
 
386
                if config['policy']['tutors_can_edit_worksheets']:
 
387
                    perms.add('edit_worksheets')
 
388
                if config['policy']['tutors_can_admin_groups']:
 
389
                    perms.add('admin_groups')
383
390
            if (enrolment and enrolment.role in (u'lecturer')) or user.admin:
 
391
                perms.add('view_project_submissions')
 
392
                perms.add('admin_groups')
 
393
                perms.add('edit_worksheets')
 
394
                perms.add('edit')           # Can edit projects & details
384
395
                perms.add('enrol')          # Can see enrolment screen at all
385
396
                perms.add('enrol_student')  # Can enrol students
386
397
                perms.add('enrol_tutor')    # Can enrol tutors
469
480
        return "<%s %d in %r>" % (type(self).__name__, self.id,
470
481
                                  self.offering)
471
482
 
472
 
    def get_permissions(self, user):
473
 
        return self.offering.get_permissions(user)
 
483
    def get_permissions(self, user, config):
 
484
        return self.offering.get_permissions(user, config)
474
485
 
475
486
    def get_groups_for_user(self, user):
476
487
        """List all groups in this offering of which the user is a member."""
574
585
 
575
586
        return ps
576
587
 
577
 
    def get_permissions(self, user):
578
 
        return self.project_set.offering.get_permissions(user)
 
588
    def get_permissions(self, user, config):
 
589
        return self.project_set.offering.get_permissions(user, config)
579
590
 
580
591
    @property
581
592
    def latest_submissions(self):
659
670
            (not active_only) or (Semester.state == u'current'))
660
671
 
661
672
 
662
 
    def get_permissions(self, user):
 
673
    def get_permissions(self, user, config):
663
674
        if user.admin or user in self.members:
664
675
            return set(['submit_project'])
665
676
        else:
842
853
    def __repr__(self):
843
854
        return "<%s %s>" % (type(self).__name__, self.name)
844
855
 
845
 
    def get_permissions(self, user):
846
 
        return self.global_permissions(user)
 
856
    def get_permissions(self, user, config):
 
857
        return self.global_permissions(user, config)
847
858
 
848
859
    @staticmethod
849
 
    def global_permissions(user):
 
860
    def global_permissions(user, config):
850
861
        """Gets the set of permissions this user has over *all* exercises.
851
862
        This is used to determine who may view the exercises list, and create
852
863
        new exercises."""
859
870
            elif u'lecturer' in set((e.role for e in user.active_enrolments)):
860
871
                perms.add('edit')
861
872
                perms.add('view')
862
 
            elif u'tutor' in set((e.role for e in user.active_enrolments)):
 
873
            elif (config['policy']['tutors_can_edit_worksheets']
 
874
            and u'tutor' in set((e.role for e in user.active_enrolments))):
 
875
                # Site-specific policy on the role of tutors
863
876
                perms.add('edit')
864
877
                perms.add('view')
865
878
 
926
939
        store.find(WorksheetExercise,
927
940
            WorksheetExercise.worksheet == self).remove()
928
941
 
929
 
    def get_permissions(self, user):
930
 
        return self.offering.get_permissions(user)
 
942
    def get_permissions(self, user, config):
 
943
        # Almost the same permissions as for the offering itself
 
944
        perms = self.offering.get_permissions(user, config)
 
945
        # However, "edit" permission is derived from the "edit_worksheets"
 
946
        # permission of the offering
 
947
        if 'edit_worksheets' in perms:
 
948
            perms.add('edit')
 
949
        else:
 
950
            perms.discard('edit')
 
951
        return perms
931
952
 
932
953
    def get_xml(self):
933
954
        """Returns the xml of this worksheet, converts from rst if required."""
978
999
        return "<%s %s in %s>" % (type(self).__name__, self.exercise.name,
979
1000
                                  self.worksheet.identifier)
980
1001
 
981
 
    def get_permissions(self, user):
982
 
        return self.worksheet.get_permissions(user)
 
1002
    def get_permissions(self, user, config):
 
1003
        return self.worksheet.get_permissions(user, config)
983
1004
 
984
1005
 
985
1006
class ExerciseSave(Storm):
1032
1053
    complete = Bool()
1033
1054
    active = Bool()
1034
1055
 
1035
 
    def get_permissions(self, user):
 
1056
    def get_permissions(self, user, config):
1036
1057
        return set(['view']) if user is self.user else set()
1037
1058
 
1038
1059
class TestSuite(Storm):