def get(self): quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp assignments = AssignmentModel.get_assigns_for_quarter(int(quarter), int(year)) template = JINJA_ENV.get_template('/templates/admin_assignment_view.html') template_values = { 'assignments': assignments.order(Assignment.number), 'quarter_name': quarter_map[int(quarter)], 'quarter': int(quarter), 'year': int(year), 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } return self.response.write(template.render(template_values))
def get(self): quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get( 'quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp assignments = AssignmentModel.get_assigns_for_quarter( int(quarter), int(year)) template = JINJA_ENV.get_template( '/templates/admin_assignment_view.html') template_values = { 'assignments': assignments.order(Assignment.number), 'quarter_name': quarter_map[int(quarter)], 'quarter': int(quarter), 'year': int(year), 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } return self.response.write(template.render(template_values))
def get(self): quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') # try grabbing 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 = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'quarter': int(quarter), 'year': int(year), 'quarters': sorted(quarters.items()), 'message': self.request.get('message'), } template = JINJA_ENV.get_template('/templates/admin_upload.html') return self.response.write(template.render(template_values))
def get(self): quarter = self.request.get( 'quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals( self.session, 'quarter', 'year') # try grabbing 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 = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'quarter': int(quarter), 'year': int(year), 'quarters': sorted(quarters.items()), 'message': self.request.get('message'), } template = JINJA_ENV.get_template('/templates/admin_upload.html') return self.response.write(template.render(template_values))
def get(self): # pass map of quarter DB representations (ints) to string representation quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) view = self.request.get('view') # check URL for 'view by' options (lab vs class) view = view if view else 'class' if view == 'class': students = StudentModel.get_students_by_active_status(quarter, year).fetch() else: students = StudentModel.get_students_by_lab(quarter, year, int(view)).fetch() current_assign = AssignmentModel.get_active_assign_with_latest_fade_in_date(quarter, year) current_num = 1 if not current_assign else current_assign.number template = JINJA_ENV.get_template('/templates/admin_add_solo_partnership.html') template_values = { 'students': sorted(students, key=lambda x: x.last_name), 'view': str(view), 'quarter': quarter, 'year': year, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'current_num': current_num, 'num_labs': SettingModel.num_labs() if SettingModel.num_labs() else 1, } 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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') if not quarter or not year: # if quarter/year aren't in URL, get from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp quarter, year = int(quarter), int(year) studentid = int( self.request.get('studentid') ) # grab studentid from URL (guaranteed to be there, unless URL was tinkered with) student = StudentModel.get_student_by_student_id( quarter, year, studentid) # if the student wasn't found, he/she might be inactive student = student if student else StudentModel.get_student_by_student_id( quarter, year, studentid, active=False) template_values = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'student': student, 'quarter': quarter, 'year': year, } template = JINJA_ENV.get_template('/templates/admin_student_edit.html') return self.response.write(template.render(template_values))
def post(self): quarter = self.request.get( 'quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals( self.session, 'quarter', 'year') # try grabbing 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 try: students = [] files = [(f.filename, f.file.read()) for f in self.request.POST.getall('picture_files')] for f in files: student = StudentModel.get_student_by_student_id( quarter, year, f[0][:f[0].find(".")]) if student != None: student.avatar = images.resize(f[1], 320, 320) students.append(student) # save student objects... ndb.put_multi(students) # ...and render the response return self.redirect('/admin/roster/view?message=' + 'Successfully uploaded new pictures for ' + str(len(students)) + ' students') except Exception, e: return self.redirect( '/admin?message=' + 'There was a problem uploading the pictures: ' + str(e))
def get(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') if not quarter or not year: # if quarter/year aren't in URL, get from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) studentid = int(self.request.get('studentid')) # grab studentid from URL (guaranteed to be there, unless URL was tinkered with) student = StudentModel.get_student_by_student_id(quarter, year, studentid) # if the student wasn't found, he/she might be inactive student = student if student else StudentModel.get_student_by_student_id(quarter, year, studentid, active=False) template_values = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'student': student, 'quarter': quarter, 'year': year, } template = JINJA_ENV.get_template('/templates/admin_student_edit.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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) active_students = StudentModel.get_students_by_active_status(quarter, year).fetch() inactive_students = StudentModel.get_students_by_active_status(quarter, year, active=False).fetch() active_num = len(active_students) inactive_num = len(inactive_students) template = JINJA_ENV.get_template('/templates/admin_view.html') template_values = { 'students': sorted(active_students + inactive_students, key=lambda x: (x.lab, x.last_name)), 'quarter_name': quarter_map[int(quarter)], 'quarter': int(quarter), 'year': int(year), 'student_num': active_num + inactive_num, 'active_num': active_num, 'inactive_num': inactive_num, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'message': self.request.get('message'), } 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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') # try getting quarter/year from session if not quarter or not year: temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp quarter, year = int(quarter), int(year) student = ndb.Key(urlsafe=self.request.get('student')).get() assign_range = AssignmentModel.get_assign_range(quarter, year) partner_history = PartnershipModel.get_active_partner_history_for_student( student, quarter, year, fill_gaps=assign_range) all_partner_history = PartnershipModel.get_all_partner_history_for_student( student, quarter, year) evals = EvalModel.get_eval_history_by_evaluator( student, True, quarter, year).fetch() evals += EvalModel.get_eval_history_by_evaluator( student, False, quarter, year).fetch() evals = sorted(evals, key=lambda x: x.assignment_number) evals_for = EvalModel.get_eval_history_by_evaluatee( student, True, quarter, year).fetch() evals_for += EvalModel.get_eval_history_by_evaluatee( student, False, quarter, year).fetch() evals_for = sorted(evals_for, key=lambda x: x.assignment_number) log = LogModel.get_log_by_student(student, quarter, year).get() if log: log_arr = log.log else: log_arr = [] template = JINJA_ENV.get_template('/templates/admin_student_view.html') template_values = { 'student': student, 'partners': partner_history, 'all_partners': all_partner_history, 'assign_range': assign_range, 'evals': evals, 'evals_for': evals_for, 'user': users.get_current_user(), 'log': log_arr, 'sign_out': users.create_logout_url('/'), } 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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get( 'quarter') # try grabbing quarter/year from URL year = self.request.get('year') assign_num = self.request.get( 'assign_num') # try grabbing assignment number from URL if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp quarter, year = int(quarter), int(year) current_assignment = AssignmentModel.get_active_assign_with_latest_fade_in_date( quarter, year) if current_assignment and not assign_num: assign_num = current_assignment.number assign_num = int( assign_num ) if assign_num else 1 # (to avoid errors if there are no assignments in the DB last_num = AssignmentModel.get_assign_n(quarter, year, -1) last_num = last_num.number if last_num else assign_num # (to avoid errors if there are no assignments in the DB) first_assign = AssignmentModel.get_assign_n(quarter, year, 0) first_num = 0 if not first_assign else first_assign.number evals = EvalModel.get_all_evals_for_assign( quarter, year, assign_num) # grab evals for assignment... solo_partners = PartnershipModel.get_solo_partnerships_by_assign( quarter, year, assign_num ) # ...and grab endorsed solos (they're exempt from evals) template_values = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'quarter': quarter, 'quarter_name': quarter_map[quarter], 'year': year, 'assign_num': assign_num, 'message': self.request.get('message'), 'evals': evals, 'solos': solo_partners, 'first_num': first_num, 'last_num': last_num, } template = JINJA_ENV.get_template('/templates/admin_evals_view.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 # rethink logic quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) view_by = self.request.get('view_by') # check URL for 'view by' options (lab vs class) view_by = view_by if view_by else 1 if view_by == 'class': # if user wants to view by class, or the view by option wasn't specified... students = StudentModel.get_students_by_active_status(quarter, year).fetch() else: students = StudentModel.get_students_by_lab(quarter, year, int(view_by)).fetch() all_partners = PartnershipModel.get_all_partnerships(quarter, year).fetch() last_assign = AssignmentModel.get_assign_n(quarter, year, -1) last_num = 1 if not last_assign else last_assign.number first_assign = AssignmentModel.get_assign_n(quarter, year, 0) first_num = 0 if not first_assign else first_assign.number keys_to_students = dict(map(lambda x: (x.key,x), students)) # map student objects to keys for easy, fast access from partnership objects keys_to_partnerships = keys_to_partners(all_partners) # map student keys to partnerships for easy, fast access # create mapping of student info to partnership info that the partnership template expects partnership_dict = student_info_to_partner_list(last_num, first_num, keys_to_partnerships, keys_to_students, students) partnership_dict = sorted(partnership_dict.items(), key=lambda x: (x[0][4], x[0][2])) num_labs = SettingModel.num_labs() template_values = { 'partnerships': partnership_dict, 'view_by': str(view_by), 'year': year, 'quarter': quarter, 'num_labs': num_labs if num_labs else 0, 'last_num': last_num, 'first_num': first_num, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } template = JINJA_ENV.get_template('/templates/admin_partnerships.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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get( 'quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp quarter, year = int(quarter), int(year) active_students = StudentModel.get_students_by_active_status( quarter, year).fetch() inactive_students = StudentModel.get_students_by_active_status( quarter, year, active=False).fetch() active_num = len(active_students) inactive_num = len(inactive_students) template = JINJA_ENV.get_template('/templates/admin_view.html') template_values = { 'students': sorted(active_students + inactive_students, key=lambda x: (x.lab, x.last_name)), 'quarter_name': quarter_map[int(quarter)], 'quarter': int(quarter), 'year': int(year), 'student_num': active_num + inactive_num, 'active_num': active_num, 'inactive_num': inactive_num, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'message': self.request.get('message'), } return self.response.write(template.render(template_values))
def post(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') if not quarter or not year: # if quarter/year aren't in URL, check sessions temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect( '/admin?message=Please set a current quarter and year') quarter, year = temp quarter, year = int(quarter), int(year) studentid = int( self.request.get('studentid') ) # grab studentid from URL (guaranteed to be there, unless URL was tinkered with) student = StudentModel.get_student_by_student_id( quarter, year, studentid) # if the student wasn't found, he/she might be inactive student = student if student else StudentModel.get_student_by_student_id( quarter, year, studentid, active=False) message = '' if student: if self.request.get('to_delete') == 'yes': message += 'Student ' + student.first_name + ', ' + student.last_name message += ' (' + str( student.studentid) + ') successfully deleted' student.key.delete() else: student.ucinetid = self.request.get('ucinetid').strip() student.first_name = self.request.get('first_name').strip() student.last_name = self.request.get('last_name').strip() student.email = self.request.get('email').strip() student.lab = int(self.request.get('lab').strip()) student.active = eval(self.request.get('active')) student.put() message += 'Student ' + student.first_name + ', ' + student.last_name message += ' (' + str( student.studentid) + ') successfully updated' self.redirect('/admin/roster/view?message=' + message)
def get(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') assign_num = self.request.get('assign_num') # try grabbing assignment number from URL if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) current_assignment = AssignmentModel.get_active_assign_with_latest_fade_in_date(quarter, year) if current_assignment and not assign_num: assign_num = current_assignment.number assign_num = int(assign_num) if assign_num else 1 # (to avoid errors if there are no assignments in the DB last_num = AssignmentModel.get_assign_n(quarter, year, -1) last_num = last_num.number if last_num else assign_num # (to avoid errors if there are no assignments in the DB) first_assign = AssignmentModel.get_assign_n(quarter, year, 0) first_num = 0 if not first_assign else first_assign.number evals = EvalModel.get_all_evals_for_assign(quarter, year, assign_num) # grab evals for assignment... solo_partners = PartnershipModel.get_solo_partnerships_by_assign(quarter, year, assign_num) # ...and grab endorsed solos (they're exempt from evals) template_values = { 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'quarter': quarter, 'quarter_name': quarter_map[quarter], 'year': year, 'assign_num': assign_num, 'message': self.request.get('message'), 'evals': evals, 'solos': solo_partners, 'first_num': first_num, 'last_num': last_num, } template = JINJA_ENV.get_template('/templates/admin_evals_view.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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') # try getting quarter/year from session if not quarter or not year: temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) student = ndb.Key(urlsafe=self.request.get('student')).get() assign_range = AssignmentModel.get_assign_range(quarter, year) partner_history = PartnershipModel.get_active_partner_history_for_student(student, quarter, year, fill_gaps=assign_range) all_partner_history = PartnershipModel.get_all_partner_history_for_student(student, quarter, year) evals = EvalModel.get_eval_history_by_evaluator(student, True, quarter, year).fetch() evals += EvalModel.get_eval_history_by_evaluator(student, False, quarter, year).fetch() evals = sorted(evals, key=lambda x: x.assignment_number) evals_for = EvalModel.get_eval_history_by_evaluatee(student, True, quarter, year).fetch() evals_for += EvalModel.get_eval_history_by_evaluatee(student, False, quarter, year).fetch() evals_for = sorted(evals_for, key=lambda x: x.assignment_number) template = JINJA_ENV.get_template('/templates/admin_student_view.html') template_values = { 'student': student, 'partners': partner_history, 'all_partners': all_partner_history, 'assign_range': assign_range, 'evals': evals, 'evals_for': evals_for, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), } return self.response.write(template.render(template_values))
def post(self): # pass map of quarter DB representations (ints) to string representation # TODO: # quarters should not be hardcoded quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') year = self.request.get('year') if not quarter or not year: # if quarter/year aren't in URL, check sessions temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) studentid = int(self.request.get('studentid')) # grab studentid from URL (guaranteed to be there, unless URL was tinkered with) student = StudentModel.get_student_by_student_id(quarter, year, studentid) # if the student wasn't found, he/she might be inactive student = student if student else StudentModel.get_student_by_student_id(quarter, year, studentid, active=False) message = '' if student: if self.request.get('to_delete') == 'yes': message += 'Student ' + student.first_name + ', ' + student.last_name message += ' (' + str(student.studentid) + ') successfully deleted' student.key.delete() else: student.ucinetid = self.request.get('ucinetid').strip() student.first_name = self.request.get('first_name').strip() student.last_name = self.request.get('last_name').strip() student.email = self.request.get('email').strip() student.lab = int(self.request.get('lab').strip()) student.active = eval(self.request.get('active')) student.put() message += 'Student ' + student.first_name + ', ' + student.last_name message += ' (' + str(student.studentid) + ') successfully updated' self.redirect('/admin/roster/view?message=' + message)
def get(self): template = JINJA_ENV.get_template('/templates/admin_add_assignment.html') temp = get_sess_vals(self.session, 'quarter', 'year') # try grabbing 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 last_assign = AssignmentModel.get_assign_n(quarter, year, -1) last_num = 0 if not last_assign else last_assign.number today = datetime.date.today().strftime("%Y-%m-%d") # 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 = { 'year': year, 'quarter': quarter, 'quarters': sorted(quarters.items()), 'last_num': last_num, 'today': today, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'fid': (last_assign.fade_in_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'fit': last_assign.fade_in_date.strftime('%H:%M') if last_assign else '00:00', 'dd': (last_assign.due_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'dt': last_assign.due_date.strftime('%H:%M') if last_assign else '00:00', 'cd': (last_assign.close_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'ct': last_assign.close_date.strftime('%H:%M') if last_assign else '00:00', 'eod': (last_assign.eval_open_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'eot': last_assign.eval_open_date.strftime('%H:%M') if last_assign else '00:00', 'ecd': (last_assign.eval_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'ect': last_assign.eval_date.strftime('%H:%M') if last_assign else '00:00', 'fod': (last_assign.fade_out_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'fot': last_assign.fade_out_date.strftime('%H:%M') if last_assign else '00:00', } 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 quarter_map = {1: 'Fall', 2: 'Winter', 3: 'Spring', 4: 'Summer'} quarter = self.request.get('quarter') # try grabbing quarter/year from URL year = self.request.get('year') if not quarter or not year: # if they don't exist, try grabbing from session temp = get_sess_vals(self.session, 'quarter', 'year') if not temp: # if they don't exist there, redirect with error return self.redirect('/admin?message=Please set a current quarter and year') quarter,year = temp quarter,year = int(quarter), int(year) view = self.request.get('view') # check URL for 'view by' options (lab vs class) view = view if view else 'class' if view == 'class': students = StudentModel.get_students_by_active_status(quarter, year).fetch() else: students = StudentModel.get_students_by_lab(quarter, year, int(view)).fetch() current_assign = AssignmentModel.get_active_assign_with_latest_fade_in_date(quarter, year) current_num = 1 if not current_assign else current_assign.number template = JINJA_ENV.get_template('/templates/admin_add_partnership.html') template_values = { 'students': sorted(students, key=lambda x: x.last_name), 'view': str(view), 'quarter': quarter, 'year': year, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'current_num': current_num, 'num_labs': SettingModel.num_labs() if SettingModel.num_labs() else 1, } return 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 get(self): template = JINJA_ENV.get_template( '/templates/admin_add_assignment.html') temp = get_sess_vals(self.session, 'quarter', 'year') # try grabbing 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 last_assign = AssignmentModel.get_assign_n(quarter, year, -1) last_num = 0 if not last_assign else last_assign.number today = datetime.date.today().strftime("%Y-%m-%d") # 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 = { 'year': year, 'quarter': quarter, 'quarters': sorted(quarters.items()), 'last_num': last_num, 'today': today, 'user': users.get_current_user(), 'sign_out': users.create_logout_url('/'), 'fid': (last_assign.fade_in_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'fit': last_assign.fade_in_date.strftime('%H:%M') if last_assign else '07:00', 'dd': (last_assign.due_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'dt': last_assign.due_date.strftime('%H:%M') if last_assign else '07:00', 'cd': (last_assign.close_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'ct': last_assign.close_date.strftime('%H:%M') if last_assign else '07:00', 'eod': (last_assign.eval_open_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'eot': last_assign.eval_open_date.strftime('%H:%M') if last_assign else '07:00', 'ecd': (last_assign.eval_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'ect': last_assign.eval_date.strftime('%H:%M') if last_assign else '07:00', 'fod': (last_assign.fade_out_date + td(days=7)).strftime('%Y-%m-%d') if last_assign else today, 'fot': last_assign.fade_out_date.strftime('%H:%M') if last_assign else '07:00', } return 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))