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

« back to all changes in this revision

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

Modified worksheets edit view, so now there are links to edit, add,
and re-arranging worksheets.

Show diffs side-by-side

added added

removed removed

Lines of Context:
315
315
        #      under their control
316
316
        if user is not None:
317
317
            if user.rolenm == 'admin':
318
 
                return set(['add_worksheet', 'set_sequence'])
 
318
                return set(['edit'])
319
319
            else:
320
320
                return set()
321
321
        else:
337
337
        if self.context is None:
338
338
            raise NotFound()
339
339
 
340
 
    @named_operation('add_worksheet')
 
340
    @named_operation('edit')
341
341
    def add_worksheet(self, req, identifier, name, assessable, data, format):
342
342
        """Takes worksheet data and adds it."""
343
343
        
359
359
        
360
360
        return {"result": "ok"}
361
361
 
362
 
    @named_operation('set_sequence')
363
 
    def seq_sequence(self, req, worksheet_list):
364
 
        """Takes a list of worksheet-seq_no pairs and updates their 
365
 
        corresponding Worksheet objects to match."""
366
 
        
367
 
        for worksheetid, seq_no in worksheet_list:
368
 
            worksheet = req.store.find(Worksheet,
369
 
                Worksheet.offering_id == self.context.id,
370
 
                Worksheet.identifier == worksheetid).one()
371
 
            if worksheet is None:
372
 
                raise NotFound(worksheet)
373
 
            worksheet.seq_no = seq_no
 
362
    @named_operation('edit')
 
363
    def move_up(self, req, worksheetid):
 
364
        """Takes a list of worksheet-seq_no pairs and updates their 
 
365
        corresponding Worksheet objects to match."""
 
366
        
 
367
        worksheet_below = req.store.find(Worksheet,
 
368
            Worksheet.offering_id == self.context.id,
 
369
            Worksheet.identifier == unicode(worksheetid)).one()
 
370
        if worksheet_below is None:
 
371
            raise NotFound('worksheet_below')
 
372
        worksheet_above = req.store.find(Worksheet,
 
373
            Worksheet.offering_id == self.context.id,
 
374
            Worksheet.seq_no == (worksheet_below.seq_no - 1)).one()
 
375
        if worksheet_above is None:
 
376
            raise NotFound('worksheet_above')
 
377
 
 
378
        worksheet_below.seq_no = worksheet_below.seq_no - 1
 
379
        worksheet_above.seq_no = worksheet_above.seq_no + 1
 
380
        
 
381
        return {'result': 'ok'}
 
382
 
 
383
    @named_operation('edit')
 
384
    def move_down(self, req, worksheetid):
 
385
        """Takes a list of worksheet-seq_no pairs and updates their 
 
386
        corresponding Worksheet objects to match."""
 
387
        
 
388
        worksheet_above = req.store.find(Worksheet,
 
389
            Worksheet.offering_id == self.context.id,
 
390
            Worksheet.identifier == unicode(worksheetid)).one()
 
391
        if worksheet_above is None:
 
392
            raise NotFound('worksheet_below')
 
393
        worksheet_below = req.store.find(Worksheet,
 
394
            Worksheet.offering_id == self.context.id,
 
395
            Worksheet.seq_no == (worksheet_above.seq_no + 1)).one()
 
396
        if worksheet_below is None:
 
397
            raise NotFound('worksheet_above')
 
398
 
 
399
        worksheet_below.seq_no = worksheet_below.seq_no - 1
 
400
        worksheet_above.seq_no = worksheet_above.seq_no + 1
374
401
        
375
402
        return {'result': 'ok'}