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

« back to all changes in this revision

Viewing changes to ivle/webapp/tutorial/service.py

  • Committer: Nick Chadwick
  • Date: 2009-03-09 00:45:58 UTC
  • mfrom: (1156 trunk)
  • mto: This revision was merged to the branch mainline in revision 1162.
  • Revision ID: chadnickbok@gmail.com-20090309004558-xvvj990b9h9y23bu
MergedĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
            Worksheet.offering_id == Offering.id,
57
57
            Worksheet.identifier == unicode(worksheet),
58
58
            Offering.subject_id == Subject.id,
59
 
            Subject.code == subject,
 
59
            Subject.short_name == subject,
60
60
            Offering.semester_id == Semester.id,
61
61
            Semester.year == year,
62
62
            Semester.semester == semester).one()
151
151
            Worksheet.identifier == worksheet,
152
152
            Worksheet.offering_id == Offering.id,
153
153
            Offering.subject_id == Subject.id,
154
 
            Subject.code == subject,
 
154
            Subject.short_name == subject,
155
155
            Offering.semester_id == Semester.id,
156
156
            Semester.year == year,
157
157
            Semester.semester == semester).one()
171
171
 
172
172
 
173
173
class WorksheetExerciseRESTView(JSONRESTView):
174
 
    '''REST view of an exercise.'''
175
 
 
176
 
    def get_permissions(self, user):
177
 
        # XXX: Do it properly.
178
 
        # XXX: Does any user have the ability to save as themselves?
179
 
        # XXX: Does a user EVER have permission to save as another user?
180
 
        if user is not None:
181
 
            return set(['save'])
182
 
        else:
183
 
            return set()
184
 
 
185
 
    @named_operation('save')
 
174
    '''REST view of a worksheet exercise.'''
 
175
 
 
176
    def __init__(self, req, subject, year, semester, worksheet, exercise):
 
177
        self.context = req.store.find(WorksheetExercise,
 
178
            WorksheetExercise.exercise_id == exercise,
 
179
            WorksheetExercise.worksheet_id == Worksheet.id,
 
180
            Worksheet.offering_id == Offering.id,
 
181
            Offering.subject_id == Subject.id,
 
182
            Subject.short_name == subject,
 
183
            Offering.semester_id == Semester.id,
 
184
            Semester.year == year,
 
185
            Semester.semester == semester).one()
 
186
        
 
187
        if self.context is None:
 
188
            raise NotFound()
 
189
 
 
190
    @named_operation('view')
186
191
    def save(self, req, text):
187
192
        # Find the appropriate WorksheetExercise to save to. If its not found,
188
193
        # the user is submitting against a non-existant worksheet/exercise
189
 
        worksheet_exercise = req.store.find(WorksheetExercise,
190
 
            WorksheetExercise.exercise_id == self.exercise,
191
 
            WorksheetExercise.worksheet_id == Worksheet.id,
192
 
            Worksheet.offering_id == Offering.id,
193
 
            Offering.subject_id == Subject.id,
194
 
            Subject.code == self.subject,
195
 
            Offering.semester_id == Semester.id,
196
 
            Semester.year == self.year,
197
 
            Semester.semester == self.semester).one()
198
 
        
199
 
        if worksheet_exercise is None:
200
 
            raise NotFound()
201
194
 
202
195
        old_save = req.store.find(ExerciseSave,
203
 
            ExerciseSave.ws_ex_id == worksheet_exercise.id,
 
196
            ExerciseSave.ws_ex_id == self.context.id,
204
197
            ExerciseSave.user == req.user).one()
205
198
        
206
199
        #Overwrite the old, or create a new if there isn't one
210
203
        else:
211
204
            new_save = old_save
212
205
        
213
 
        new_save.worksheet_exercise = worksheet_exercise
 
206
        new_save.worksheet_exercise = self.context
214
207
        new_save.user = req.user
215
208
        new_save.text = unicode(text)
216
209
        new_save.date = datetime.datetime.now()
218
211
        return {"result": "ok"}
219
212
 
220
213
 
221
 
 
222
214
# Note that this is the view of an existing worksheet. Creation is handled
223
215
# by OfferingRESTView (as offerings have worksheets)
224
216
class WorksheetRESTView(JSONRESTView):
225
217
    """View used to update a worksheet."""
226
218
 
227
 
    def get_permissions(self, user):
228
 
        # XXX: Do it properly.
229
 
        # XXX: Lecturers should be allowed to add worksheets Only to subjects
230
 
        #      under their control
231
 
        if user is not None:
232
 
            if user.admin:
233
 
                return set(['save'])
234
 
            else:
235
 
                return set()
236
 
        else:
237
 
            return set()    
238
 
 
239
219
    def __init__(self, req, **kwargs):
240
220
    
241
221
        self.worksheet = kwargs['worksheet']
247
227
            Worksheet.identifier == self.worksheet,
248
228
            Worksheet.offering_id == Offering.id,
249
229
            Offering.subject_id == Subject.id,
250
 
            Subject.code == self.subject,
 
230
            Subject.short_name == self.subject,
251
231
            Offering.semester_id == Semester.id,
252
232
            Semester.year == self.year,
253
233
            Semester.semester == self.semester).one()
255
235
        if self.context is None:
256
236
            raise NotFound()
257
237
    
258
 
    @named_operation('save')
 
238
    @named_operation('edit')
259
239
    def save(self, req, name, assessable, data, format):
260
240
        """Takes worksheet data and saves it."""
261
241
        self.context.name = unicode(name)
269
249
class WorksheetsRESTView(JSONRESTView):
270
250
    """View used to update and create Worksheets."""
271
251
    
272
 
    def get_permissions(self, user):
273
 
        # XXX: Do it properly.
274
 
        # XXX: Lecturers should be allowed to add worksheets Only to subjects
275
 
        #      under their control
276
 
        if user is not None:
277
 
            if user.admin:
278
 
                return set(['edit'])
279
 
            else:
280
 
                return set()
281
 
        else:
282
 
            return set()
283
 
 
284
252
    def __init__(self, req, **kwargs):
285
253
    
286
254
        self.subject = kwargs['subject']
289
257
    
290
258
        self.context = req.store.find(Offering,
291
259
            Offering.subject_id == Subject.id,
292
 
            Subject.code == self.subject,
 
260
            Subject.short_name == self.subject,
293
261
            Offering.semester_id == Semester.id,
294
262
            Semester.year == self.year,
295
263
            Semester.semester == self.semester).one()