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