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)
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))
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))
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)
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))