def test_default_all_system(self):
     today = util.today()
     y = today.year
     term = util.get_term(today)
     sec = Section(year=y, term=term, number=1, start_date=util.today())
     sec2 = Section(year=y, term=term, number=2, start_date=util.today())
     sec3 = Section(year=2019, term=term, number=3, start_date=util.today())
     partner.db.session.add(sec)
     partner.db.session.add(sec2)
     partner.db.session.add(sec3)
     partner.db.session.commit()
     response = self.app.get('/rest/sections')
     assert 200 == response.status_code
     json_data = response.get_json()
     assert 2 == len(json_data)
     s1 = json_data[0]
     s2 = json_data[1]
     assert s1['number'] == sec.number
     assert s1['year'] == sec.year
     assert s1['term'] == sec.term
     assert s1['start_date'] == util.date_to_mdy(sec.start_date)
     assert s2['number'] == sec2.number
     assert s2['year'] == sec2.year
     assert s2['term'] == sec2.term
     assert s2['start_date'] == util.date_to_mdy(sec2.start_date)
Beispiel #2
0
def roster_admin():
    tab = request.form.get('tab')
    year = request.form.get('year') or request.args.get('year')
    if not year:
        year = util.get_current_year()
    term = request.form.get('term') or request.args.get('term')
    if not term:
        term = util.get_current_term()
    section = None

    dt = request.args.get('date')  # mm/dd/yyyy format
    if not dt:
        date = util.today()
        dt = util.date_to_mdy(date)

    if request.method == 'POST':

        if tab == 'section':
            return process_admin_section_form(year, term, dt, request)
        else:
            sec_id = request.form.get('labId')
            if not sec_id:
                flash('Please select a section')
                return redirect(url_for('roster_admin', term=request.form.get('term'), year=request.form.get('year')))
            section = Section.query.filter_by(id=sec_id).first_or_404()
            section.start_date = util.mdy_to_date(request.form.get('startDate'))
            file = request.files['file']
            # if user does not select file, browser also
            # submit an empty part without filename
            # if file.filename == '':
            #     flash('No selected file')
            #     return redirect(request.url)
            process_roster_file_upload(file, section)
            db.session.commit()
            return redirect(url_for('roster_admin', section_id=section.id))
                #TODO alter rosters_page to take a roster as input rather than meeting_time
                # return redirect(url_for('rosters_page',meeting_time='wed1')) # show the roster page for the created roster
    else:
        sec_id = request.args.get('section_id')
        if sec_id:
            section = Section.query.filter_by(id=sec_id).first_or_404()
            dt = util.date_to_mdy(section.start_date) if section.start_date else dt
    sections = Section.query.filter_by(year=year, term=term).all()

    return render_template('admin.html', title='admin', tab='rosters', year=year, term=term, section=section, dt=dt, sections=sections)
Beispiel #3
0
 def to_dict(self):
     d = {}
     d['title'] = self.full_title
     d['short_title'] = self.title
     d['id'] = self.id
     d['number'] = self.number
     d['start_date'] = util.date_to_mdy(self.start_date)
     d['year'] = self.year
     d['term'] = self.term
     return d
 def test_get_by_term(self):
     today = util.today()
     y = today.year
     sec = Section(year=y, term='spring', number=1, start_date=today)
     sec2 = Section(year=2019,
                    term='fall',
                    number=2,
                    start_date=util.today())
     partner.db.session.add(sec)
     partner.db.session.add(sec2)
     partner.db.session.commit()
     t = sec.term
     response = self.app.get(f'/rest/sections?term={t}')
     assert 200 == response.status_code
     json_data = response.get_json()
     assert 1 == len(json_data)
     s1 = json_data[0]
     assert s1['number'] == sec.number
     assert s1['year'] == sec.year
     assert s1['term'] == sec.term
     assert s1['start_date'] == util.date_to_mdy(sec.start_date)
Beispiel #5
0
def rosters_page():
    year = util.get_current_year()
    term = util.get_current_term()
    lab_num = request.args.get('lab_number')
    dt = request.args.get('date')  # mm/dd/yyyy format
    if not dt:
        date = util.today()
        dt = util.date_to_mdy(date)
    else:
        date = util.parse_date(dt)
        year = date.year
    sections = models.Section.query.filter_by(year=year, term=term).all()
    sec = models.Section.query.filter_by(year=year, term=term, number=lab_num).first()
    if not sec:
        # TODO set error message so that 404 indicates missing resource is the sections for term/year
        sec = models.Section.query.filter_by(year=year, term=term).first_or_404()
    r = models.Roster.query.filter_by(section_id=sec.id).first_or_404("Roster not found for lab {}.  You need to create it from spreadsheet in admin page".format(sec.number))
    students = r.sorted_students()
    AttendanceMgr.set_attendance_status(students, date)
    groups = GroupGenerator().get_existing_groups(r, date)
    return render_template('roster.html', title='Attendance', dt=dt, section=sec, sections=sections, groups=groups,
                           roster=r, students=students, num_students=len(list(r.students)))
 def test_get_by_id(self):
     sec = Section(year=2020,
                   term='spring',
                   number=1,
                   start_date=util.today())
     sec2 = Section(year=2019,
                    term='fall',
                    number=2,
                    start_date=util.today())
     partner.db.session.add(sec)
     partner.db.session.add(sec2)
     partner.db.session.commit()
     id = sec.id
     # lookup by id does not use default term or year
     response = self.app.get(f'/rest/sections?id={id}')
     assert 200 == response.status_code
     json_data = response.get_json()
     assert 1 == len(json_data)
     s1 = json_data[0]
     assert s1['number'] == sec.number
     assert s1['year'] == sec.year
     assert s1['term'] == sec.term
     assert s1['start_date'] == util.date_to_mdy(sec.start_date)
 def test_get_by_year(self):
     today = util.today()
     y = today.year
     term = util.get_term(today)
     sec = Section(year=y, term=term, number=1, start_date=today)
     sec2 = Section(year=2019,
                    term='fall',
                    number=2,
                    start_date=util.today())
     partner.db.session.add(sec)
     partner.db.session.add(sec2)
     partner.db.session.commit()
     yr = sec.year
     # today's month will be used to figure out a term for default in lookup
     response = self.app.get(f'/rest/sections?year{yr}')
     assert 200 == response.status_code
     json_data = response.get_json()
     # its no longer 2019 so we should only get back one section for today's year
     assert 1 == len(json_data)
     s1 = json_data[0]
     assert s1['number'] == sec.number
     assert s1['year'] == sec.year
     assert s1['term'] == sec.term
     assert s1['start_date'] == util.date_to_mdy(sec.start_date)