def __init__(self, *args, **kw): # /event/url/submissions self.event = kw.get('event', None) # /event/url/lesson/id/submissions self.lesson = kw.get('lesson', None) # /event/url/sheet/id/assignment/id/submissions self.assignment = kw.get('assignment', None) # /event/url/sheet/id/submissions self.sheet = kw.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: 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( has('teachers', self.event), has('tutors', self.lesson), # has_teacher(self.event), # has_teachers(self.event), # has_teacher(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 index(self): #TODO: Ugly. memberships = defaultdict(list) if request.user: memberships['teams'] = request.user.teams memberships['lessons'] = request.user._lessons memberships['tutored_lessons'] = request.user.tutored_lessons #memberships['events'] = request.user.events c.table = SubmissionTable(DBSession) # events = set((event for event in memberships['events'])) # events |= set((lesson.event for lesson in memberships['lessons'])) # events |= set((team.lesson.event for team in memberships['teams'])) # # for event in events: # for sheet in event.sheets: # for assignment in sheet.assignments: # pass teammates = set() for team in memberships['teams']: teammates |= set(team.students) teammates.discard(request.user) values = SubmissionTableFiller(DBSession).get_value( user_id=request.user.id) for teammate in teammates: values.extend( SubmissionTableFiller(DBSession).get_value( user_id=teammate.id)) return dict(page='user', user=request.user, values=values, memberships=memberships)
def index(self, page=1, *args, **kwargs): '''Assignment detail page''' values = [] if request.user: c.table = SubmissionTable(DBSession) values = SubmissionTableFiller(DBSession).get_value( assignment_id=self.assignment.id, user_id=request.user.id, ) teams = set() for lesson in self.assignment.sheet.event.lessons: teams |= set(lesson.teams) teams &= set(request.user.teams) teammates = set() for team in teams: teammates |= set(team.members) teammates.discard(request.user) for teammate in teammates: values.extend( SubmissionTableFiller(DBSession).get_value( assignment_id=self.assignment.id, user_id=teammate.id, )) lexer_name = self.assignment.allowed_languages[0].lexer_name \ if len(self.assignment.allowed_languages) == 1 else '' c.pygmentize = Pygmentize(lexer_name=lexer_name) return dict(page='assignments', event=self.event, assignment=self.assignment, values=values)
def index(self, page=1, *args, **kwargs): '''Submission listing page''' c.table = SubmissionTable(DBSession) #TODO: Ugly and stolen from controllers.user # teammates = set() # for team in request.user.teams: # teammates |= set(team.students) # teammates.discard(request.user) values = SubmissionTableFiller(DBSession).get_value(user_id=request.user.id) # for teammate in teammates: # values.extend(SubmissionTableFiller(DBSession).get_value(user_id=teammate.id)) return dict(page='submissions', view=None, user=request.user, values=values)