def __init__(self, *args, **kwargs): # /event/url/submissions self.event = kwargs.get('event', None) # /event/url/lesson/id/submissions self.lesson = kwargs.get('lesson', None) # /event/url/sheet/id/assignment/id/submissions self.assignment = kwargs.get('assignment', None) # /event/url/sheet/id/submissions self.sheet = kwargs.get('sheet', None) if self.event: pass elif self.lesson: self.event = self.lesson.event elif self.assignment: self.event = self.assignment.sheet.event elif self.sheet: self.event = self.sheet.event else: # pragma: no cover log.warn('SubmissionController without any filter') flash('You can not view Submissions without any constraint.', 'error') abort(400) # Allow access for event teacher and lesson teacher self.allow_only = Any( user_is_in('teachers', self.event), user_is_in('tutors', self.lesson), has_permission('manage'), msg=u'You have no permission to manage this Lesson' ) self.table = SubmissionTable(DBSession) self.table_filler = SubmissionTableFiller(DBSession, lesson=self.lesson)
def __init__(self, *args, **kwargs): # /event/url/submissions self.event = kwargs.get('event', None) # /event/url/lesson/id/submissions self.lesson = kwargs.get('lesson', None) # /event/url/sheet/id/assignment/id/submissions self.assignment = kwargs.get('assignment', None) # /event/url/sheet/id/submissions self.sheet = kwargs.get('sheet', None) if self.event: pass elif self.lesson: self.event = self.lesson.event elif self.assignment: self.event = self.assignment.sheet.event elif self.sheet: self.event = self.sheet.event else: # pragma: no cover log.warn('SubmissionController without any filter') flash('You can not view Submissions without any constraint.', 'error') abort(400) # Allow access for event teacher and lesson teacher self.allow_only = Any( user_is_in('teachers', self.event), user_is_in('tutors', self.lesson), has_permission('manage'), msg=u'You have no permission to manage this Lesson') self.table = SubmissionTable(DBSession) self.table_filler = SubmissionTableFiller(DBSession, lesson=self.lesson)
def __init__(self, event): self.event = event self.allow_only = Any( user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'You have no permission to manage Lessons for this Event')
def __init__(self, event): self.event = event self.allow_only = Any( user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'You have no permission to manage Lessons for this Event' )
def __init__(self, sheet): self.sheet = sheet self.event = sheet.event self.assignments = AssignmentsController(sheet=self.sheet) c.sheet = self.sheet self.allow_only = Any(is_public(self.sheet), user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'This Sheet is not public') self.submissions = SubmissionsController(sheet=self.sheet)
def __init__(self, assignment): self.assignment = assignment self.sheet = assignment.sheet self.event = self.sheet.event c.assignment = self.assignment self.allow_only = Any(is_public(self.assignment), user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'This Assignment is not public') self.submissions = SubmissionsController(assignment=self.assignment) self.similarity = SimilarityController(assignment=self.assignment)
def __init__(self, sheet): self.sheet = sheet self.event = sheet.event self.assignments = AssignmentsController(sheet=self.sheet) c.sheet = self.sheet self.allow_only = Any( is_public(self.sheet), user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'This Sheet is not public' ) self.submissions = SubmissionsController(sheet=self.sheet)
def __init__(self, assignment): self.assignment = assignment self.sheet = assignment.sheet self.event = self.sheet.event c.assignment = self.assignment self.allow_only = Any( is_public(self.assignment), user_is_in('teachers', self.event), user_is_in('tutors', self.event), has_permission('manage'), msg=u'This Assignment is not public' ) self.submissions = SubmissionsController(assignment=self.assignment) self.similarity = SimilarityController(assignment=self.assignment)
def __init__(self, submission): self.submission = submission self.assignment = submission.assignment self.event = self.assignment.event predicates = (user_is_in('tutors', l) for l in submission.lessons) self.allow_only = Any( is_public(submission), user_is('user', self.submission), user_is_in('team', self.submission), user_is_in('teachers', self.event), has_permission('manage'), msg=u'You are not allowed to view this submission', *predicates )
def __init__(self, assignment): self.assignment = assignment self.submissions = sorted((s for s in self.assignment.submissions if s.source), key=lambda s: s.id) self.key = str(self.assignment.id) if self.submissions: self.key += '_' + '-'.join(str(s.id) for s in self.submissions) self.key += '_' + (max(self.submissions, key=lambda s: s.modified) .modified.strftime('%Y-%m-%d-%H-%M-%S')) self.allow_only = Any( user_is_in('teachers', self.assignment.sheet.event), user_is_in('tutors', self.assignment.sheet.event), has_permission('manage'), msg=u'You are not allowed to access this page.' )
def __init__(self, event): self.event = event self.sheets = SheetsController(event=self.event) self.lessons = LessonsController(event=self.event) self.admin = EventAdminController(event=self.event) self.submissions = SubmissionsController(event=self.event) c.event = self.event self.allow_only = Any( is_public(self.event), user_is_in('teachers', self.event), has_permission('manage'), msg=u'This Event is not public' ) c.sub_menu = menu(self.event, True)
def __init__(self, event, **kwargs): self.event = event menu_items = OrderedDict(( ('./events/', 'Event'), ('./tutors/', 'Tutors'), ('./lessons/', 'Lessons'), ('./teams/', 'Teams'), ('./students/', 'Students'), ('./sheets/', 'Sheets'), ('./assignments/', 'Assignments'), ('./tests/', 'Tests'), ('./newsitems/', 'NewsItems'), )) self.menu_items = menu_items super(EventAdminController, self).__init__(**kwargs) self.events = EventsCrudController( inject=dict(teacher=request.user), query_modifier=lambda qry: qry.filter_by(id=self.event.id), menu_items=self.menu_items, allow_new=False, allow_delete=False, **kwargs) self.lessons = LessonsCrudController( inject=dict(event=self.event), query_modifier=lambda qry: qry.filter_by(event_id=self.event.id), query_modifiers={ # Disabled so that the teacher can assign any users as tutors #'tutor': lambda qry: qry.filter(User.id.in_((t.id for t in self.event.tutors))), 'teams': lambda qry: qry.join(Team.lesson).filter_by(event_id=self.event .id), }, menu_items=self.menu_items, **kwargs) self.teams = TeamsCrudController( #query_modifier=lambda qry: qry.filter(Team.lesson_id.in_((l.id for l in self.event.lessons))), query_modifier=lambda qry: qry.join(Team.lesson).filter_by( event_id=self.event.id), query_modifiers={ 'lesson': lambda qry: qry.filter_by(event_id=self.event.id), # Disabled so that the teacher can assign any users as members #'members': lambda qry: qry.filter(User.id.in_((u.id for u in self.lesson.event.members))), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.students = StudentsCrudController( query_modifier=lambda qry: qry.select_from( union( qry.join(event_members).join(Event).filter_by( id=self.event.id).order_by(None), qry.join(lesson_members).join(Lesson).filter_by( event_id=self.event.id).order_by(None), qry.join(team_members).join(Team).join(Lesson).filter_by( event_id=self.event.id).order_by(None), )).order_by(User.user_name), query_modifiers={ #'teams': lambda qry: qry.filter(Team.lesson_id.in_((l.id for l in self.event.lessons))), 'teams': lambda qry: qry.join(Team.lesson).filter_by(event_id=self.event .id), '_lessons': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.tutors = TutorsCrudController( query_modifier=lambda qry: (qry.join(lesson_tutors).join( Lesson).filter_by(event_id=self.event.id).order_by(User.id)), query_modifiers={ 'tutored_lessons': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.sheets = SheetsCrudController( inject=dict(event=self.event, _teacher=request.user), query_modifier=lambda qry: qry.filter_by(event_id=self.event.id), menu_items=self.menu_items, **kwargs) self.assignments = AssignmentsCrudController( inject=dict(_teacher=request.user), query_modifier=lambda qry: qry.join(Assignment.sheet).filter_by( event_id=self.event.id), query_modifiers={ 'sheet': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.tests = TestsCrudController( inject=dict(user=request.user), query_modifier=lambda qry: (qry.join(Test.assignment).join( Assignment.sheet).filter_by(event_id=self.event.id)), query_modifiers={ 'assignment': lambda qry: qry.join(Assignment.sheet).filter_by(event_id=self. event.id), }, menu_items=self.menu_items, **kwargs) self.newsitems = NewsItemController( inject=dict(user=request.user), query_modifier=lambda qry: qry.filter( or_(NewsItem.event == None, NewsItem.event == self.event)), query_modifiers={ 'event': lambda qry: qry.filter_by(id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.allow_only = Any( user_is_in('teachers', self.event), has_permission('manage'), msg=u'You have no permission to manage this Event')
def __init__(self, event, **kwargs): self.event = event menu_items = OrderedDict(( ('./events/', 'Event'), ('./tutors/', 'Tutors'), ('./lessons/', 'Lessons'), ('./teams/', 'Teams'), ('./students/', 'Students'), ('./sheets/', 'Sheets'), ('./assignments/', 'Assignments'), ('./tests/', 'Tests'), ('./newsitems/', 'NewsItems'), )) self.menu_items = menu_items super(EventAdminController, self).__init__(**kwargs) self.events = EventsCrudController( inject=dict(teacher=request.user), query_modifier=lambda qry: qry.filter_by(id=self.event.id), menu_items=self.menu_items, allow_new=False, allow_delete=False, **kwargs) self.lessons = LessonsCrudController( inject=dict(event=self.event), query_modifier=lambda qry: qry.filter_by(event_id=self.event.id), query_modifiers={ # Disabled so that the teacher can assign any users as tutors #'tutor': lambda qry: qry.filter(User.id.in_((t.id for t in self.event.tutors))), 'teams': lambda qry: qry.join(Team.lesson).filter_by(event_id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.teams = TeamsCrudController( #query_modifier=lambda qry: qry.filter(Team.lesson_id.in_((l.id for l in self.event.lessons))), query_modifier=lambda qry: qry.join(Team.lesson).filter_by(event_id=self.event.id), query_modifiers={ 'lesson': lambda qry: qry.filter_by(event_id=self.event.id), # Disabled so that the teacher can assign any users as members #'members': lambda qry: qry.filter(User.id.in_((u.id for u in self.lesson.event.members))), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.students = StudentsCrudController( query_modifier=lambda qry: qry.select_from(union( qry.join(event_members).join(Event) .filter_by(id=self.event.id).order_by(None), qry.join(lesson_members).join(Lesson) .filter_by(event_id=self.event.id).order_by(None), qry.join(team_members).join(Team).join(Lesson) .filter_by(event_id=self.event.id).order_by(None), )).order_by(User.user_name), query_modifiers={ #'teams': lambda qry: qry.filter(Team.lesson_id.in_((l.id for l in self.event.lessons))), 'teams': lambda qry: qry.join(Team.lesson).filter_by(event_id=self.event.id), '_lessons': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.tutors = TutorsCrudController( query_modifier=lambda qry: (qry.join(lesson_tutors).join(Lesson) .filter_by(event_id=self.event.id).order_by(User.id)), query_modifiers={ 'tutored_lessons': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, hints=dict(event=self.event), **kwargs) self.sheets = SheetsCrudController( inject=dict(event=self.event, _teacher=request.user), query_modifier=lambda qry: qry.filter_by(event_id=self.event.id), menu_items=self.menu_items, **kwargs) self.assignments = AssignmentsCrudController( inject=dict(_teacher=request.user), query_modifier=lambda qry: qry.join(Assignment.sheet).filter_by(event_id=self.event.id), query_modifiers={ 'sheet': lambda qry: qry.filter_by(event_id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.tests = TestsCrudController( inject=dict(user=request.user), query_modifier=lambda qry: (qry.join(Test.assignment).join(Assignment.sheet) .filter_by(event_id=self.event.id)), query_modifiers={ 'assignment': lambda qry: qry.join(Assignment.sheet).filter_by(event_id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.newsitems = NewsItemController( inject=dict(user=request.user), query_modifier=lambda qry: qry.filter(or_(NewsItem.event == None, NewsItem.event == self.event)), query_modifiers={ 'event': lambda qry: qry.filter_by(id=self.event.id), }, menu_items=self.menu_items, **kwargs) self.allow_only = Any( user_is_in('teachers', self.event), has_permission('manage'), msg=u'You have no permission to manage this Event' )
def __init__(self, lesson, **kwargs): self.lesson = lesson menu_items = OrderedDict(( ('./lessons/', 'Lesson'), ('./tutors/', 'Tutor'), ('./teams/', 'Teams'), ('./students/', 'Students'), #('./submissions/', 'Submissions'), )) self.menu_items = menu_items super(LessonController, self).__init__(**kwargs) self.lessons = LessonsCrudController( # inject=dict(tutor=request.user, event=self.lesson.event), # No new lesson to be created query_modifier=lambda qry: qry.filter_by(id=self.lesson.id), query_modifiers={ # Tutors can only delegate ownership to other tutors #'tutor': lambda qry: qry.filter(User.id.in_((t.id for t in self.lesson.event.tutors))), 'tutor': lambda qry: qry.join(User.tutored_lessons).filter_by(event_id=self.lesson.event.id) }, allow_new=False, allow_delete=False, menu_items=self.menu_items, **kwargs) self.students = StudentsCrudController( inject=dict(_lessons=[self.lesson]), query_modifier=lambda qry: qry.select_from(union( qry.join(lesson_members).filter_by(lesson_id=self.lesson.id).order_by(None), qry.join(team_members).join(Team).filter_by(lesson_id=self.lesson.id).order_by(None), )).order_by(User.id), query_modifiers={ 'teams': lambda qry: qry.filter_by(lesson_id=self.lesson.id), '_lessons': lambda qry: qry.filter_by(id=self.lesson.id), }, menu_items=self.menu_items, allow_delete=False, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.teams = TeamsCrudController( # inject=dict(lesson=self.lesson), # Field shows only one value query_modifier=lambda qry: qry.filter_by(lesson_id=self.lesson.id), query_modifiers={ #'members': lambda qry: qry.filter(User.id.in_((u.id for u in self.lesson.event.members))), 'members': lambda qry: qry.select_from(union( qry.join(lesson_members).join(Lesson).filter_by(event_id=self.lesson.event.id).order_by(None), qry.join(team_members).join(Team).join(Team.lesson).filter_by(event_id=self.lesson.event.id).order_by(None), )).order_by(User.id), 'lesson': lambda qry: qry.filter_by(id=self.lesson.id), }, menu_items=self.menu_items, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.tutors = TutorsCrudController( query_modifier=lambda qry: (qry.join(lesson_tutors).filter_by(lesson_id=self.lesson.id) .order_by(User.id)), query_modifiers={ 'tutored_lessons': lambda qry: qry.filter(Lesson.event == self.lesson.event), }, menu_items=self.menu_items, allow_new=False, allow_delete=False, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.submissions = SubmissionsController(lesson=self.lesson, menu_items=self.menu_items, **kwargs) # Allow access for event teacher and lesson teacher self.allow_only = Any( user_is_in('teachers', self.lesson.event), user_is_in('tutors', self.lesson), has_permission('manage'), msg=u'You have no permission to manage this Lesson' )
def __init__(self, lesson, **kwargs): self.lesson = lesson menu_items = OrderedDict(( ('./lessons/', 'Lesson'), ('./tutors/', 'Tutor'), ('./teams/', 'Teams'), ('./students/', 'Students'), #('./submissions/', 'Submissions'), )) self.menu_items = menu_items super(LessonController, self).__init__(**kwargs) self.lessons = LessonsCrudController( # inject=dict(tutor=request.user, event=self.lesson.event), # No new lesson to be created query_modifier=lambda qry: qry.filter_by(id=self.lesson.id), query_modifiers={ # Tutors can only delegate ownership to other tutors #'tutor': lambda qry: qry.filter(User.id.in_((t.id for t in self.lesson.event.tutors))), 'tutor': lambda qry: qry.join(User.tutored_lessons).filter_by( event_id=self.lesson.event.id) }, allow_new=False, allow_delete=False, menu_items=self.menu_items, **kwargs) self.students = StudentsCrudController( inject=dict(_lessons=[self.lesson]), query_modifier=lambda qry: qry.select_from( union( qry.join(lesson_members).filter_by(lesson_id=self.lesson.id ).order_by(None), qry.join(team_members).join(Team).filter_by( lesson_id=self.lesson.id).order_by(None), )).order_by(User.id), query_modifiers={ 'teams': lambda qry: qry.filter_by(lesson_id=self.lesson.id), '_lessons': lambda qry: qry.filter_by(id=self.lesson.id), }, menu_items=self.menu_items, allow_delete=False, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.teams = TeamsCrudController( # inject=dict(lesson=self.lesson), # Field shows only one value query_modifier=lambda qry: qry.filter_by(lesson_id=self.lesson.id), query_modifiers={ #'members': lambda qry: qry.filter(User.id.in_((u.id for u in self.lesson.event.members))), 'members': lambda qry: qry.select_from( union( qry.join(lesson_members).join(Lesson).filter_by( event_id=self.lesson.event.id).order_by(None), qry.join(team_members).join(Team).join(Team.lesson). filter_by(event_id=self.lesson.event.id).order_by(None ), )).order_by(User.id), 'lesson': lambda qry: qry.filter_by(id=self.lesson.id), }, menu_items=self.menu_items, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.tutors = TutorsCrudController( query_modifier=lambda qry: (qry.join(lesson_tutors).filter_by( lesson_id=self.lesson.id).order_by(User.id)), query_modifiers={ 'tutored_lessons': lambda qry: qry.filter(Lesson.event == self.lesson.event), }, menu_items=self.menu_items, allow_new=False, allow_delete=False, hints=dict(lesson=self.lesson, event=self.lesson.event), **kwargs) self.submissions = SubmissionsController(lesson=self.lesson, menu_items=self.menu_items, **kwargs) # Allow access for event teacher and lesson teacher self.allow_only = Any( user_is_in('teachers', self.lesson.event), user_is_in('tutors', self.lesson), has_permission('manage'), msg=u'You have no permission to manage this Lesson')