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') 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): # 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 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 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 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))