Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
    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))