Ejemplo n.º 1
0
    def post(self):
        # URL will contain 'edit' argument if this request is coming from an assignment edit form
        edit    = self.request.get('edit')
        year    = int(self.request.get('year'))
        quarter = int(self.request.get('quarter'))
        number  = int(self.request.get('assign_num'))

        # if this request didn't come from the edit form...
        if not edit:
            # ...create new assignment and set PK values
            assignment = AssignmentModel.make_assignment_with_pk_vals(quarter, year, number)
        else:
            # ...else get assignment
            assignment = AssignmentModel.get_assign_by_number(quarter, year, number)

        # if an assignment with the same PK values exist, redirect with error; assignment isn't created
        if AssignmentModel.get_assign_by_number(assignment.quarter, assignment.year, assignment.number) and not edit:
            message = 'That assignment is already in the database'
            return self.redirect('/admin/assignment/add?message=' + message)
        else:
            # set dates/times
            kwargs = {
                'assignment'  :   assignment,
                'fade_in_date':   str(self.request.get('fade_in_date')).split('-'),
                'fade_in_time':   str(self.request.get('fade_in_time')).split(':'),
                'due_date':       str(self.request.get('due_date')).split('-'),
                'due_time':       str(self.request.get('due_time')).split(':'),
                'close_date':     str(self.request.get('close_date')).split('-'),
                'close_time':     str(self.request.get('close_time')).split(':'),
                'eval_date':      str(self.request.get('eval_date')).split('-'),
                'eval_time':      str(self.request.get('eval_time')).split(':'),
                'eval_open_date': str(self.request.get('eval_open_date')).split('-'),
                'eval_open_time': str(self.request.get('eval_open_time')).split(':'),
                'fade_out_date':  str(self.request.get('fade_out_date')).split('-'),
                'fade_out_time':  str(self.request.get('fade_out_time')).split(':'),
            }
            AssignmentModel.save_assignment_with_dates(**kwargs)
            # redirct according to action (add vs edit)
            redirect_link = '/admin/assignment/' + ('view' if edit else 'add')
            message       = MessageModel.assignment_edited_or_added(quarter, year, number, edit)
            return self.redirect(redirect_link + '?message=' + message)
Ejemplo n.º 2
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())

        assgn_num = int(self.request.get('n'))
        assignment = AssignmentModel.get_assign_by_number(
            quarter, year, assgn_num)
        partnership = PartnershipModel.get_active_partnerships_involving_students_by_assign(
            [student], assgn_num).get()

        # get list of all partners for student (roundabout solution)
        all_assigns = sorted(AssignmentModel.get_all_assign(quarter, year),
                             key=lambda x: x.number)
        partner_history = PartnershipModel.get_all_partner_history_for_student(
            student, quarter, year)
        all_partners = dict([
            (x.number,
             PartnershipModel.get_partner_from_partner_history_by_assign(
                 student, partner_history, x.number)) for x in all_assigns
        ])

        current_time = datetime.datetime.fromtimestamp(time.time())
        current_time = current_time - datetime.timedelta(hours=7)

        # pass template values...
        template_values = {
            'student': student,
            'partnership': partnership,
            'partner': all_partners[assgn_num][0],
            'assignment': assignment,
            'current_time': current_time,
            'assgn_num': assgn_num
        }
        template = JINJA_ENV.get_template(
            '/templates/cancel_partner_modal.html')
        self.response.write(template.render(template_values))
Ejemplo n.º 3
0
    def get(self):
        quarter    = int(self.request.get('quarter'))                   # grab quarter, year, and assign num from URL
        year       = int(self.request.get('year'))
        number     = int(self.request.get('number'))
        assignment = AssignmentModel.get_assign_by_number(quarter, year, number)

        temp = get_sess_vals(self.session, 'quarter', 'year')           # try to grab current quarter/year from session
        if not temp:                                                    # redirect with error if it doesn't exist
            return self.redirect('/admin?message=Please set a current quarter and year')
        quarter,year = temp
        # 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'}
        template_values = {
            'a':        assignment,
            'fid':      assignment.fade_in_date.strftime('%Y-%m-%d'),
            'fit':      assignment.fade_in_date.strftime('%H:%M'),
            'dd':       assignment.due_date.strftime('%Y-%m-%d'),
            'dt':       assignment.due_date.strftime('%H:%M'),
            'cd':       assignment.close_date.strftime('%Y-%m-%d'),
            'ct':       assignment.close_date.strftime('%H:%M'),
            'eod':      assignment.eval_open_date.strftime('%Y-%m-%d') if assignment.eval_open_date else '00-00-0000',
            'eot':      assignment.eval_open_date.strftime('%H:%M') if assignment.eval_open_date else '00:00',
            'ecd':      assignment.eval_date.strftime('%Y-%m-%d'),
            'ect':      assignment.eval_date.strftime('%H:%M'),
            'fod':      assignment.fade_out_date.strftime('%Y-%m-%d'),
            'fot':      assignment.fade_out_date.strftime('%H:%M'),
            'user':     users.get_current_user(),
            'sign_out': users.create_logout_url('/'),
            'quarter':  quarter,
            'quarters': sorted(quarters.items()),
            'year':     year,
            'number':   number,
        }
        template = JINJA_ENV.get_template('/templates/admin_assignment_edit.html')
        return self.response.write(template.render(template_values))
Ejemplo n.º 4
0
    def post(self):
        # URL will contain 'edit' argument if this request is coming from an assignment edit form
        edit = self.request.get('edit')
        year = int(self.request.get('year'))
        quarter = int(self.request.get('quarter'))
        number = int(self.request.get('assign_num'))

        # if this request didn't come from the edit form...
        if not edit:
            # ...create new assignment and set PK values
            assignment = AssignmentModel.make_assignment_with_pk_vals(
                quarter, year, number)
        else:
            # delete button pressed
            if self.request.get('deleteButton', None):
                AssignmentModel.delete_assign_by_number(quarter, year, number)
                redirect_link = '/admin/assignment/view'
                message = MessageModel.assignment_deleted(
                    quarter, year, number)
                return self.redirect(redirect_link + '?message=' + message)
            # ...else get assignment
            assignment = AssignmentModel.get_assign_by_number(
                quarter, year, number)
        # if an assignment with the same PK values exist, redirect with error; assignment isn't created
        if AssignmentModel.get_assign_by_number(
                assignment.quarter, assignment.year,
                assignment.number) and not edit:
            message = 'That assignment is already in the database'
            return self.redirect('/admin/assignment/add?message=' + message)
        else:
            # set dates/times
            kwargs = {
                'assignment':
                assignment,
                'fade_in_date':
                str(self.request.get('fade_in_date')).split('-'),
                'fade_in_time':
                str(self.request.get('fade_in_time')).split(':'),
                'due_date':
                str(self.request.get('due_date')).split('-'),
                'due_time':
                str(self.request.get('due_time')).split(':'),
                'close_date':
                str(self.request.get('close_date')).split('-'),
                'close_time':
                str(self.request.get('close_time')).split(':'),
                'eval_date':
                str(self.request.get('eval_date')).split('-'),
                'eval_time':
                str(self.request.get('eval_time')).split(':'),
                'eval_open_date':
                str(self.request.get('eval_open_date')).split('-'),
                'eval_open_time':
                str(self.request.get('eval_open_time')).split(':'),
                'fade_out_date':
                str(self.request.get('fade_out_date')).split('-'),
                'fade_out_time':
                str(self.request.get('fade_out_time')).split(':'),
            }
            AssignmentModel.save_assignment_with_dates(**kwargs)
            # redirct according to action (add vs edit)
            redirect_link = '/admin/assignment/' + ('view' if edit else 'add')
            message = MessageModel.assignment_edited_or_added(
                quarter, year, number, edit)
            return self.redirect(redirect_link + '?message=' + message)
Ejemplo n.º 5
0
    def get(self):
        quarter = int(self.request.get(
            'quarter'))  # grab quarter, year, and assign num from URL
        year = int(self.request.get('year'))
        number = int(self.request.get('number'))
        assignment = AssignmentModel.get_assign_by_number(
            quarter, year, number)

        temp = get_sess_vals(
            self.session, 'quarter',
            'year')  # try to grab current quarter/year from session
        if not temp:  # redirect with error if it doesn't exist
            return self.redirect(
                '/admin?message=Please set a current quarter and year')
        quarter, year = temp
        # 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'}
        template_values = {
            'a':
            assignment,
            'fid':
            assignment.fade_in_date.strftime('%Y-%m-%d'),
            'fit':
            assignment.fade_in_date.strftime('%H:%M'),
            'dd':
            assignment.due_date.strftime('%Y-%m-%d'),
            'dt':
            assignment.due_date.strftime('%H:%M'),
            'cd':
            assignment.close_date.strftime('%Y-%m-%d'),
            'ct':
            assignment.close_date.strftime('%H:%M'),
            'eod':
            assignment.eval_open_date.strftime('%Y-%m-%d')
            if assignment.eval_open_date else '00-00-0000',
            'eot':
            assignment.eval_open_date.strftime('%H:%M')
            if assignment.eval_open_date else '00:00',
            'ecd':
            assignment.eval_date.strftime('%Y-%m-%d'),
            'ect':
            assignment.eval_date.strftime('%H:%M'),
            'fod':
            assignment.fade_out_date.strftime('%Y-%m-%d'),
            'fot':
            assignment.fade_out_date.strftime('%H:%M'),
            'user':
            users.get_current_user(),
            'sign_out':
            users.create_logout_url('/'),
            'quarter':
            quarter,
            'quarters':
            sorted(quarters.items()),
            'year':
            year,
            'number':
            number,
        }
        template = JINJA_ENV.get_template(
            '/templates/admin_assignment_edit.html')
        return self.response.write(template.render(template_values))