def get(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarters = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = SettingModel.quarter() year = SettingModel.year() num_labs = SettingModel.num_labs() template_values = { 'repeat_partners': SettingModel.repeat_partners(), 'cross_section_partners': SettingModel.cross_section_partners(), 'year': year, 'quarter': quarter, 'quarters': sorted(quarters.items()), 'num_labs': num_labs if num_labs else 1, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } template = JINJA_ENV.get_template('/templates/admin_edit_settings.html') return self.response.write(template.render(template_values))
def get(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarters = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = SettingModel.quarter() year = SettingModel.year() num_labs = SettingModel.num_labs() template_values = { 'repeat_partners': SettingModel.repeat_partners(), 'cross_section_partners': SettingModel.cross_section_partners(), 'year': year, 'quarter': quarter, 'quarters': sorted(quarters.items()), 'num_labs': num_labs if num_labs else 1, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } template = JINJA_ENV.get_template( '/templates/admin_edit_settings.html') return self.response.write(template.render(template_values))
def post(self): quarter = SettingModel.quarter() year = SettingModel.year() user = users.get_current_user() selector = StudentModel.get_student_by_email(quarter, year, user.email()) selected = StudentModel.get_student_by_student_id( quarter, year, self.request.get('selected_partner')) try: selected_assign = int(self.request.get('selected_assign')) time.sleep(0.1) except ValueError: return self.redirect( '/partner/selection?error=You must choose an assignment number' ) # redirect with errors... if PartnershipModel.were_partners_previously( [selector, selected]) and not SettingModel.repeat_partners(): return self.redirect('/partner?message=' + MessageModel.worked_previously(selected)) elif InvitationModel.have_open_invitations(selector, selected, selected_assign): return self.redirect('/partner?message=' + MessageModel.have_open_invitations(selected)) elif PartnershipModel.student_has_partner_for_assign( selector, selected_assign): return self.redirect( '/partner?message=' + MessageModel.already_has_partner(False, False)) else: InvitationModel.create_invitation(selector, selected, selected_assign) return self.redirect('/partner?message=' + MessageModel.sent_invitation(selected))
def get(self): quarter = SettingModel.quarter() year = SettingModel.year() user = users.get_current_user() student = StudentModel.get_student_by_email(quarter, year, user.email()) selector = StudentModel.get_student_by_email(quarter, year, user.email()) selectees = StudentModel.get_students_by_lab(quarter, year, selector.lab) active_assigns = AssignmentModel.get_active_assigns(quarter, year) # get course config repeat = SettingModel.repeat_partners() cross_section = SettingModel.cross_section_partners() # get default parameter default_assgn = int(self.request.get("assgn")) if self.request.get( "assgn") is not "" else -1 # get all current_partnerships for partnership status partnerships = PartnershipModel.get_all_partnerships_for_assign( quarter, year, default_assgn) partner_history = PartnershipModel.get_all_partner_history_for_student( student, quarter, year) members = [] for p in partner_history: if p.active: members += p.members for p in partnerships: if p.members not in members: members += p.members # build dict to store information about partnership status available = [] for s in selectees: if (s.key not in members) or repeat: available.append((s.ucinetid, (s.key in partnerships, s))) available = sorted(available, key=get_result_priority) av_list = [] for av in available: av_list.append((av[0], get_shared_hours(selector.availability, av[1][1].availability))) # get error message, if any e = self.request.get('error') # check to see if partner selection period has closed selection_closed = len(active_assigns) == 0 template_values = { 'error': e, 'selector': selector, 'selectees': available, 'selection_closed': selection_closed, 'assgn': default_assgn, 'active': active_assigns, 'default_assgn': default_assgn, 'repeat': repeat, 'cross_section': cross_section, 'availability_list': av_list, } template = JINJA_ENV.get_template('/templates/partner_selection.html') self.response.write(template.render(template_values))
def get(self): quarter = SettingModel.quarter() year = SettingModel.year() user = users.get_current_user() selector = StudentModel.get_student_by_email(quarter, year, user.email()) student = StudentModel.get_student_by_email(quarter, year, user.email()) repeat = SettingModel.repeat_partners() if not selector: return self.redirect('/partner') # use selector info to find students in same lab section selectees = StudentModel.get_students_by_lab(quarter, year, selector.lab) current_assignment = AssignmentModel.get_active_assign_with_latest_fade_in_date( quarter, year) # if there are no assignments for this quarter, redirect to avoid errors if not current_assignment: return self.redirect( '/partner?message=There are no assignments open for partner selection.' ) # get error message, if any e = self.request.get('error') # check to see if partner selection period has closed selection_closed = (datetime.now() - timedelta(hours=7) > current_assignment.close_date) # get all current_partnerships for partnership status partnerships = PartnershipModel.get_all_partnerships_for_assign( quarter, year, current_assignment.number) partner_history = PartnershipModel.get_all_partner_history_for_student( student, quarter, year) members = [] for p in partner_history: if p.active: members += p.members for p in partnerships: if p.members not in members: members += p.members # build dict to store information about partnership status available = [] for s in selectees: if (s.key not in members) or repeat: available.append((s.ucinetid, (s.key in partnerships, s))) available = sorted(available, key=get_result_priority) # pass template values... template_values = { 'error': e, 'student': student, 'selector': selector, 'selectees': available, 'selection_closed': selection_closed, 'current': current_assignment, 'user': user, 'sign_out': users.create_logout_url('/'), } template = JINJA_ENV.get_template('/templates/partner_browse.html') self.response.write(template.render(template_values))