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

« back to all changes in this revision

Viewing changes to ivle/database.py

  • Committer: William Grant
  • Date: 2010-02-25 03:18:21 UTC
  • Revision ID: grantw@unimelb.edu.au-20100225031821-mi9a2tm5679fht4d
Shuffle things around so that req.user and req.store only construct when actually retrieved, and ensure they're not retrieved for media files. Saves 50ms of DB connection time per request.

Show diffs side-by-side

added added

removed removed

Lines of Context:
325
325
    semester = Reference(semester_id, Semester.id)
326
326
    description = Unicode()
327
327
    url = Unicode()
 
328
    show_worksheet_marks = Bool()
 
329
    worksheet_cutoff = DateTime()
328
330
    groups_student_permissions = Unicode()
329
331
 
330
332
    enrolments = ReferenceSet(id, 'Enrolment.offering_id')
393
395
                perms.add('view_project_submissions')
394
396
                perms.add('admin_groups')
395
397
                perms.add('edit_worksheets')
 
398
                perms.add('view_worksheet_marks')
396
399
                perms.add('edit')           # Can edit projects & details
397
400
                perms.add('enrol')          # Can see enrolment screen at all
398
401
                perms.add('enrol_student')  # Can enrol students
435
438
            newws.identifier = worksheet.identifier
436
439
            newws.name = worksheet.name
437
440
            newws.assessable = worksheet.assessable
 
441
            newws.published = worksheet.published
438
442
            newws.data = worksheet.data
439
443
            newws.format = worksheet.format
440
444
            newws.offering = self
958
962
    identifier = Unicode()
959
963
    name = Unicode()
960
964
    assessable = Bool()
 
965
    published = Bool()
961
966
    data = Unicode()
962
967
    seq_no = Int()
963
968
    format = Unicode()
995
1000
            WorksheetExercise.worksheet == self).remove()
996
1001
 
997
1002
    def get_permissions(self, user, config):
998
 
        # Almost the same permissions as for the offering itself
999
 
        perms = self.offering.get_permissions(user, config)
1000
 
        # However, "edit" permission is derived from the "edit_worksheets"
1001
 
        # permission of the offering
1002
 
        if 'edit_worksheets' in perms:
 
1003
        offering_perms = self.offering.get_permissions(user, config)
 
1004
 
 
1005
        perms = set()
 
1006
 
 
1007
        # Anybody who can view an offering can view a published
 
1008
        # worksheet.
 
1009
        if 'view' in offering_perms and self.published:
 
1010
            perms.add('view')
 
1011
 
 
1012
        # Any worksheet editors can both view and edit.
 
1013
        if 'edit_worksheets' in offering_perms:
 
1014
            perms.add('view')
1003
1015
            perms.add('edit')
1004
 
        else:
1005
 
            perms.discard('edit')
 
1016
 
1006
1017
        return perms
1007
1018
 
1008
1019
    def get_xml(self):
1080
1091
 
1081
1092
    def __repr__(self):
1082
1093
        return "<%s %s by %s at %s>" % (type(self).__name__,
1083
 
            self.exercise.name, self.user.login, self.date.strftime("%c"))
 
1094
            self.worksheet_exercise.exercise.name, self.user.login,
 
1095
            self.date.strftime("%c"))
1084
1096
 
1085
1097
class ExerciseAttempt(ExerciseSave):
1086
1098
    """An attempt at solving an exercise.