Exemplo n.º 1
0
def test_get_active_session(db):
    cm = courses_model.Courses(db, 4)  # art history
    seid = cm.get_active_session()
    assert seid == 2

    cm = courses_model.Courses(db, 1)  # running, no active session
    seid = cm.get_active_session()
    assert seid == -1
Exemplo n.º 2
0
def test_get_num_sessions(db):
    cm = courses_model.Courses(db, 3)  # german 3, has no sessions
    num_sessions = cm.get_num_sessions()
    assert num_sessions == 0

    cm = courses_model.Courses(db, 4)  # art history, has 2 sessions
    num_sessions = cm.get_num_sessions()
    assert num_sessions == 2
Exemplo n.º 3
0
def main_teacher():
    tm = teachers_model.Teachers(flask.session['id'])

    if request.method == 'POST':
        cm = courses_model.Courses()
        if "close" in request.form.keys():
            cid = request.form["close"]
            cm.cid = cid
            cm.close_session(cm.get_active_session())
        elif "open" in request.form.keys():
            cid = request.form["open"]
            cm.cid = cid
            cm.open_session()

    courses = tm.get_courses_with_session()
    empty = True if len(courses) == 0 else False
    context = dict(data=courses)

    disable_rest_open_windows = False
    for item in context['data']:
        if item['active'] == 1:
            disable_rest_open_windows = True

    return render_template('main_teacher.html',
                           empty=empty,
                           disable_rest_open_windows=disable_rest_open_windows,
                           **context)
Exemplo n.º 4
0
def test_add_student(db):
    cm = courses_model.Courses(db, 4)  # art history

    # check length before
    student_list = cm.get_students()
    assert len(student_list) == 2

    # check for a valid add_student call
    add_student_result = cm.add_student('jp9122')  # adding Jaina Proudmoore
    assert add_student_result == 0

    # check length after
    student_list = cm.get_students()
    assert len(student_list) == 3

    # check for adding a student already in the class
    add_student_result = cm.add_student('jp9122')
    assert add_student_result == -2

    # check length to make sure it remains
    student_list = cm.get_students()
    assert len(student_list) == 3

    # check for adding a non-existent student
    add_student_result = cm.add_student('nonexistent')
    assert add_student_result == -1

    # check length to make sure it remains
    student_list = cm.get_students()
    assert len(student_list) == 3
Exemplo n.º 5
0
def main_teacher():
    tid = flask.session['id']
    if request.method == 'GET':
        index = index_model.Index(tid)
        if (not index.is_teacher()):
            return render_template('error.html')
    tm = teachers_model.Teachers(tid)
    ssm = sessions_model.Sessions()
    if request.method == 'POST':
        if "close" in request.form.keys():
            cid = request.form["close"]
            ssm.open_session(cid)
            ssm.close_window()
        elif "open" in request.form.keys():
            cid = int(request.form["open"])
            new_seid = ssm.open_session(cid)
            ssm.open_window(new_seid)
            course = courses_model.Courses()
            students = course.get_students_sids(cid)
            for student in students:
                sm = students_model.Students(student['sid'])
                sm.insert_attendance_record(new_seid)
    courses = tm.get_courses_with_session()
    empty = True if len(courses) == 0 else False
    context = dict(data=courses)
    return render_template('main_teacher.html', empty=empty, **context)
Exemplo n.º 6
0
def test_add_teacher(db):
    cm = courses_model.Courses(db, 6) # test_add_teacher course

    teachers = cm.get_teachers()
    assert len(teachers) == 1
    assert teachers[0]['email'] == '*****@*****.**'

    # insert a fake user
    result = cm.add_teacher('*****@*****.**')
    assert result[0] == False
    assert 'User [email protected] not found' in result[1]

    # insert a user that isn't a teacher
    result = cm.add_teacher('*****@*****.**')
    assert result[0] == True

    #insert a user that is a teacher
    result = cm.add_teacher('*****@*****.**')
    assert result[0] == True

    teachers = cm.get_teachers()
    assert len(teachers) == 3

    cm.remove_teacher(11)
    teachers = cm.get_teachers()
    assert len(teachers) == 2
Exemplo n.º 7
0
    def test_a_teacher(self):

        imhere.app.testing = True
        imhere.app.secret_key = str(uuid.uuid4())
        self.app = imhere.app.test_client()

        teacher_instance = teachers_model.Teachers(TEACHER_ACCOUNT_ID)
        classname_1 = "COMS 4111"
        self.__class__.cid_1 = teacher_instance.add_course(classname_1)
        # course_instance_1 = courses_model.Courses(self.__class__.cid_1)
        #course_instance_1.add_student('xz2222')

        classname_2 = "COMS 4112"
        self.__class__.cid_2 = teacher_instance.add_course(classname_2)

        course_instance_2 = courses_model.Courses(self.__class__.cid_2)
        self.__class__.sid_2 = course_instance_2.add_student('xz2222')

        with imhere.app.test_client() as t_t:
            # log in with teacher account
            with t_t.session_transaction() as session_teacher:
                self.login(session_teacher, TEACHER_ACCOUNT,
                           TEACHER_ACCOUNT_ID)
                session_teacher['is_teacher'] = True
            rv = t_t.get('/teacher/')
            self.assertEqual(200, rv.status_code)
Exemplo n.º 8
0
def test_main_student(db):
    with imhere.app.test_client() as c:
        res = c.get('/student/')
        assert 302 == res.status_code

        with c.session_transaction() as sess:
            login(sess, unreg, unreg_id)
            sess['is_teacher'] = False
            sess['is_student'] = True

        cid = db.execute(
            "select cid from courses where name = 'newts big class'").fetchone(
            )['cid']

        res = c.get('/student/')
        assert 'Student View' in res.data
        cm_big = courses_model.Courses(db, cid)
        cm_big.add_student('uu0000')
        res = c.get('/student/')
        assert "newts big class" in res.data
        assert "No sign-in window" in res.data
        serket = cm_big.open_session()
        res = c.get('/student/')
        assert "Sign in now!" in res.data
        res = c.post('/student/')
        assert "Student View" in res.data
        payload = {'secret_code': 0000}
        res = c.post('/student/', data=payload)
        assert "Invalid Secret Code" in res.data
        payload = {'secret_code': serket}
        res = c.post('/student/', data=payload)
        assert "Successful sign-in!" in res.data
        payload = {'secret_code': serket}
        res = c.post('/student/', data=payload)
        assert "Successful sign-in!" not in res.data
Exemplo n.º 9
0
def add_class():
    tm = teachers_model.Teachers(g.conn, flask.session['id'])

    if request.method == 'GET':
        return render_template('add_class.html')

    elif request.method == 'POST':
        # first check that all unis are valid
        um = users_model.Users(g.conn)
        for uni in request.form['unis'].split('\n'):
            uni = uni.strip('\r')
            # always reads at least one empty line from form
            if not uni:
                continue
            if not um.is_valid_uni(uni):
                return render_template('add_class.html', invalid_uni=True)

        # then create course and add students to course
        course_name = request.form['classname']
        cid = tm.add_course(course_name)
        cm = courses_model.Courses(g.conn, cid)

        for uni in request.form['unis'].split('\n'):
            uni = uni.strip('\r')
            cm.add_student(uni)

        return flask.redirect(flask.url_for('main_teacher'))
Exemplo n.º 10
0
def test_get_courses(db):
    dave = students_model.Students(db, 3)

    dave_courses = dave.get_courses()
    assert len(dave_courses) == 1
    art = dave_courses[0]
    assert art['cid'] == 4
    assert art['name'] == 'Art History'

    cm_running = courses_model.Courses(db, 1)
    cm_running.add_student('ds9876')

    dave_courses = dave.get_courses()
    assert len(dave_courses) == 2
    running = dave_courses[0]
    assert running['cid'] == 1
    assert running['name'] == 'Running'
    art = dave_courses[1]
    assert art['cid'] == 4
    assert art['name'] == 'Art History'

    jaina = students_model.Students(db, 6)

    jaina_courses = jaina.get_courses()
    assert len(jaina_courses) == 0
Exemplo n.º 11
0
def filled_db():
    imhere.app.secret_key = str(uuid.uuid4())
    
    um = users_model.Users()
    um.get_or_create_user(stu)
    um.get_or_create_user(newt)

    m = model.Model()
    ds = m.get_client()
        

    key = ds.key('student')
    entity = datastore.Entity(
        key=key)
    entity.update({
        'sid': stu['id'],
        'uni': 'cs4156'
    })
    ds.put(entity)

    key = ds.key('teacher')
    entity = datastore.Entity(
        key=key)
    entity.update({
        'tid': newt['id']
    })
    ds.put(entity)

    tm = teachers_model.Teachers(newt['id'])
    course_name = 'Writing'
    cid = tm.add_course(course_name)
    cm = courses_model.Courses(cid)
    cm.add_student('cs4156')
    yield cid
Exemplo n.º 12
0
def add_class():
    tid = flask.session['id']
    tm = teachers_model.Teachers(tid)

    if request.method == 'GET':
        return render_template('add_class.html', error=None)

    elif request.method == 'POST':
        # first check that all unis are valid
        um = users_model.Users()
        for uni in request.form['unis'].split('\n'):
            uni = uni.strip('\r')
            # always reads at least one empty line from form
            if not uni:
                continue
            if not um.is_valid_uni(uni):
                invalid_uni = "Invalid UNI's entered, please recreate the class"
                return render_template('add_class.html', error=invalid_uni)

        course_name = request.form['classname']
        cid = tm.add_course(course_name)

        if cid == -1:
            coursename_exists = "There is already a course by this name that you teach"
            return render_template('add_class.html', error=coursename_exists)

        cm = courses_model.Courses(cid)


        for uni in request.form['unis'].split('\n'):
            uni = uni.strip('\r')
            cm.add_student(uni)

        return flask.redirect(flask.url_for('main_teacher'))
Exemplo n.º 13
0
def student_view_attendance():
    sm = students_model.Students(flask.session['id'])
    courses = sm.get_courses()
    records = list()
    course_name=""

    #need to error check for when student is not enrolled in any courses
    if request.method == 'POST':
        cid = request.form['cid']
        course_name = courses_model.Courses(cid).get_course_name()

    elif courses:
        cid = courses[0]['cid']
        course_name = courses[0]['name']
        records = sm.get_course_attendance(cid)
    
    attendance_model = arm.Attendance_Records()
    excuses = attendance_model.get_excuses_multi(sid=flask.session['id'])
    excuse_session_ids = [int(e['seid']) for e in excuses]
    for r in records:
        r['excuse_submitted'] = False
        if r['seid'] in excuse_session_ids:
            r['excuse_submitted'] = True

    return render_template(
        'view_student_record.html',
        courses=courses,
        records=records,
        course_name=course_name
    )
Exemplo n.º 14
0
def test_sql_injection(db):
    cm = courses_model.Courses(db, 1)

    assert cm.add_student("' or 1=1;") == -1
    assert cm.add_student("'little bobby tables'") == -1

    assert cm.remove_student("' or 1=1;") == -1
    assert cm.remove_student("'little bobby tables'") == -1
Exemplo n.º 15
0
def test_open_session(db):
    cm = courses_model.Courses(db, 1)  # running, no active session

    seid = cm.get_active_session()
    assert seid == -1  # no active session

    cm.open_session()

    seid = cm.get_active_session()
    assert seid != -1
Exemplo n.º 16
0
def test_close_session(db):
    cm = courses_model.Courses(db, 4)  # art history, has open session

    seid = cm.get_active_session()
    assert seid == 2

    cm.close_session(seid)

    # checking if seid is -1 for same class that was just open
    seid = cm.get_active_session()
    assert seid == -1
Exemplo n.º 17
0
def view_class():
    if request.method == 'GET':
        flask.redirect(flask.url_for('main_teacher'))

    elif request.method == 'POST':
        cm = courses_model.Courses()

        if 'close' in request.form.keys():
            cid = request.form['close']
            cm.cid = cid
            cm.close_session(cm.get_active_session())
        elif 'open' in request.form.keys():
            cid = request.form['open']
            cm.cid = cid
            cm.open_session()
        else:
            cid = request.form['cid']
            cm.cid = cid

        res = 0
        uni = None
        if 'add_student' in request.form.keys():
            uni = request.form['add_student']
            res = cm.add_student(uni)
        elif 'remove_student' in request.form.keys():
            uni = request.form['remove_student']
            res = cm.remove_student(uni)

        course_name = cm.get_course_name()
        secret = cm.get_secret_code()
        num_sessions = cm.get_num_sessions()
        students = cm.get_students()
        students_with_ar = []
        for student in students:
            sm = students_model.Students(student['id'])
            student_uni = sm.get_uni()
            num_ar = sm.get_num_attendance_records(cid)
            students_with_ar.append([student, student_uni, num_ar])

        context = dict(students=students_with_ar)
        return render_template(
                'view_class.html',
                cid=cid,
                secret=secret,
                course_name=course_name,
                num_sessions=num_sessions,
                uni=uni,
                res=res,
                **context)
Exemplo n.º 18
0
def test_get_students(db):
    cm = courses_model.Courses(db, 4)  # art history
    student_list = cm.get_students()

    assert type(student_list) is list
    assert len(student_list) == 2

    assert 3 in student_list[0].items()[0]
    assert 'Dave' in student_list[0].items()[1]
    assert 'Student' in student_list[0].items()[2]
    assert '*****@*****.**' in student_list[0].items()[3]

    assert 5 in student_list[1].items()[0]
    assert 'Grommash' in student_list[1].items()[1]
    assert 'Hellscream' in student_list[1].items()[2]
    assert '*****@*****.**' in student_list[1].items()[3]
Exemplo n.º 19
0
    def test_e_students_signin(self):
        with imhere.app.test_client() as t_s:
            rv = t_s.get("/student/")
            self.assertEqual(302, rv.status_code)

            with t_s.session_transaction() as session_student:

                self.login(session_student, STUDENT_ACCOUNT_2,
                           self.sid_2)  # STUDENT_ACCOUNT_2_ID
                session_student['is_teacher'] = False
                session_student['is_student'] = True

                # add student, nto yet open window
            rv = t_s.get('/student/')
            #pdb.set_trace()
            self.assertIn("Switch To Teacher View", rv.data)

            course_1 = courses_model.Courses(self.cid_1)
            course_1.add_student("xz2222")

            rv = t_s.get("/student/")
            self.assertIn("COMS 4111", rv.data)
            self.assertIn("No Sign-in Window Available!", rv.data)

            # Open Sign-in & get secret code
            real_secret_code = course_1.open_session()
            rv = t_s.get('/student/')
            self.assertIn("Sign in now!", rv.data)
            self.assertIn("Student View", rv.data)
            data = {'secret_code': 0000}
            rv = t_s.post("/student/", data=data, follow_redirects=True)
            self.assertIn("Invalid Secret Code", rv.data)

            data = {'secret_code': real_secret_code}
            rv = t_s.post("/student/", data=data, follow_redirects=True)

            self.assertEqual(200, rv.status_code)
            self.assertIn("Successful sign-in!", rv.data)

            # Check timstamp & coordiantes
            self.assertIn("Time", rv.data)
            self.assertIn("Coordinate", rv.data)

            t_s.get('/oauth/logout')
            rv = t_s.get('/student/')
            self.assertEqual(302, rv.status_code)
Exemplo n.º 20
0
def test_get_secret_code(db):
    cm = courses_model.Courses(db, 2)  # writing, has no active session

    seid = cm.get_active_session()
    assert seid == -1  # make sure no active session exists

    randsecret = cm.open_session()
    seid = cm.get_active_session()
    assert seid != -1  # make sure an active session exists now

    secret = cm.get_secret_code()
    assert randsecret == secret
    assert secret is not None

    cm.close_session(seid)
    secret = cm.get_secret_code()
    assert secret is None
Exemplo n.º 21
0
def test_remove_student(db):
    cm = courses_model.Courses(db, 4)  # art history

    # check length before (Jaina now in class)
    student_list = cm.get_students()
    assert len(student_list) == 3

    # check for a valid remove_student call
    remove_student_result = cm.remove_student('jp9122')  # removing Jaina
    assert remove_student_result == 0

    # check length after valid remove
    student_list = cm.get_students()
    assert len(student_list) == 2

    # check for removing a student not in the class
    remove_student_result = cm.remove_student('jp9122')
    assert remove_student_result == -3

    # check length to make sure it remains the same
    student_list = cm.get_students()
    assert len(student_list) == 2

    # check for removing a nonexistent student
    remove_student_result = cm.remove_student('nonexistent')
    assert remove_student_result == -1

    # check length to make sure it remains the same
    student_list = cm.get_students()
    assert len(student_list) == 2

    ###########################################################################
    # now test that remove_student takes away attendance records
    # testing with Dave, who has an AR in an old session of art history
    query = ('select * from attendance_records '
             'where sid = %s'
             % 3)
    result = db.execute(query)
    assert result.rowcount == 2  # Dave is in two sessions of this course

    # now remove Dave
    cm.remove_student('ds9876')

    result = db.execute(query)
    assert result.rowcount == 0
Exemplo n.º 22
0
    def setUp(self):
        super(AttendanceTestCase, self).setUp()

        self.context = {}
        self.context['student'] = [self.store_model('student', **STUDENT)]
        self.context['courses'] = [
            self.store_model('courses', **course) for course in COURSES
        ]
        self.context['enrolled_in'] = [
            self.store_model('enrolled_in', **e) for e in ENROLLS
        ]
        self.context['sessions'] = [
            self.store_model('sessions', **s) for s in SESSIONS
        ]
        self.student = sm.Students(STUDENT['sid']),
        self.courses = [cm.Courses(c['cid']) for c in COURSES],
        self.record = arm.Attendance_Records(sid=RECORD['sid'],
                                             seid=RECORD['seid'])
Exemplo n.º 23
0
def student_view_class(cid):
    cm = courses_model.Courses(g.conn, cid)
    sm = students_model.Students(g.conn, flask.session['id'])

    course_name = cm.get_course_name()
    attendance_record = sm.get_attendance_record(cid)
    present = 0
    total = len(attendance_record)
    for rec in attendance_record:
        if rec['sid'] is not None:
            present += 1

    flask.session['redirect'] = '/student/view_class/%s' % cid

    return render_template('student_view_class.html',
                           course_name=course_name,
                           attendance_record=attendance_record,
                           present=present,
                           total=total)
Exemplo n.º 24
0
def main_teacher():
    tm = teachers_model.Teachers(g.conn, flask.session['id'])

    if request.method == 'POST':
        cm = courses_model.Courses(g.conn)
        if "close" in request.form.keys():
            cid = request.form["close"]
            cm.cid = cid
            cm.close_session(cm.get_active_session())
        elif "open" in request.form.keys():
            cid = request.form["open"]
            cm.cid = cid
            cm.open_session()

    courses = tm.get_courses_with_session()
    empty = True if len(courses) == 0 else False
    context = dict(data=courses)

    return render_template('main_teacher.html', empty=empty, **context)
Exemplo n.º 25
0
def test_sessions(db):

    cid = 7
    student = 15

    cm = courses_model.Courses(db, cid)
    sm = students_model.Students(db, student)

    sessions = cm.get_sessions()
    assert len(sessions) == 0

    secret = cm.open_session()
    seid = cm.get_active_session()

    sessions = cm.get_sessions()
    assert len(sessions) == 1
    assert sessions[0]['enrollment'] == 1
    assert sessions[0]['attendance'] == 0

    sm.insert_attendance_record(seid)
    sessions = cm.get_sessions()
    assert sessions[0]['attendance'] == 1
Exemplo n.º 26
0
def student_view_excuses():
    sid = flask.session['id']
    excuses = arm.Attendance_Records().get_excuses_multi(sid=sid)
    data = {}
    for e in excuses:
        session = arm.Attendance_Records().get_session(e['seid'])
        if session:
            cid = session['cid']
            course_name = courses_model.Courses(cid).get_course_name()

            if not course_name:
                continue

            if not data.get(course_name):
                data[course_name] = []

            #add the excuse message to the session information
            session['excuse'] = e['excuse']
            data[course_name].append(session)

    return render_template("student_excuses.html",
                           data=data)
Exemplo n.º 27
0
def teacher_view_excuses():
    #get courses
    tid = flask.session['id']
    teacher = teachers_model.Teachers(tid)
    courses_taught = teacher.get_courses() 

    #get sessions for selected course id and submitted excuses
    context = dict(data=[])
    if not courses_taught:
        return render_template("teacher_view_excuses.html",
                               courses_taught=courses_taught,
                               **context)

    if request.method == 'POST':
        cid = request.form['cid']
    else:
        cid = courses_taught[0]['cid']
    course = courses_model.Courses(cid)
    sessions = course.get_sessions()

    #get unis and excuse messages for all sessions
    sm = students_model.Students(1)
    results = []
    for s in sessions:
        excuses = arm.Attendance_Records().get_excuses_multi(seid=s['seid'])
        if excuses:
            for e in excuses:
                sm.sid = e['sid']
                e['uni'] = sm.get_uni()
            s['excuses'] = excuses
            results.append(s)
       
    context['data'] = results
    context['course_name'] = course.get_course_name()

    return render_template("teacher_view_excuses.html",
                           courses_taught=courses_taught,
                           **context)
Exemplo n.º 28
0
def test_get_course_name(db):
    cm = courses_model.Courses(db, 4)  # art history
    name = cm.get_course_name()

    assert name == 'Art History'
Exemplo n.º 29
0
def view_class():
    if request.method == 'GET':
        flask.redirect(flask.url_for('main_teacher'))

    elif request.method == 'POST':
        cm = courses_model.Courses()
        ssm = sessions_model.Sessions()

        if 'close' in request.form.keys():
            cid = request.form['close']
            cm.cid = cid
            ssm.open_session(cid)
            ssm.close_window()
        elif 'open' in request.form.keys():
            cid = request.form['open']
            cm.cid = cid
            new_seid = ssm.open_session(cid)
            ssm.open_window(new_seid)
        else:
            cid = request.form['cid']
            cm.cid = cid

        res = 0
        uni = None
        if 'add_student' in request.form.keys():
            for uni in request.form['add_student'].split('\n'):
                uni = uni.strip('\r')
                res = cm.add_student(uni)
        elif 'remove_student' in request.form.keys():
            for uni in request.form['remove_student'].split('\n'):
                uni = uni.strip('\r')
                res = cm.remove_student(uni)
        course_name = cm.get_course_name()

        secret = ssm.get_secret_code()
        num_sessions = cm.get_num_sessions()
        sess = cm.get_sessions()
        ssm2 = sessions_model.Sessions()
        labels = []
        values = []
        for ses in sess:
            denom = float(ssm2.get_current_roster_size(ses['seid']))
            numerator = float(ssm2.get_attendance_count(ses['seid']))
            if(denom == 0):
                values.append(0)
            else:
                values.append((float(numerator/denom))*100)
            labels.append(str(ses['date']))
        students = cm.get_students()
        students_with_ar = []
        for student in students:
            sm = students_model.Students(student['id'])
            student_uni = sm.get_uni()
            num_ar = sm.get_num_attendance_records(cid)
            students_with_ar.append([student, student_uni, num_ar])

        context = dict(students=students_with_ar)
        return render_template(
                'view_class.html',
                cid=cid,
                secret=secret,
                course_name=course_name,
                num_sessions=num_sessions,
                uni=uni,
                res=res,
                labels=labels,
                values=values,
                **context)
Exemplo n.º 30
0
def view_class():
    tm = teachers_model.Teachers(flask.session['id'])
    if request.method == 'GET':
        flask.redirect(flask.url_for('main_teacher'))

    elif request.method == 'POST':
        cm = courses_model.Courses()

        if 'close' in request.form.keys():
            cid = request.form['close']
            cm.cid = cid
            cm.close_session(cm.get_active_session())
        elif 'open' in request.form.keys():
            cid = request.form['open']
            cm.cid = cid
            cm.open_session()
        else:
            cid = request.form['cid']
            cm.cid = cid

        res = 0
        uni = None
        if 'add_student' in request.form.keys():
            uni = request.form['add_student']
            res = cm.add_student(uni)
        elif 'remove_student' in request.form.keys():
            uni = request.form['remove_student']
            res = cm.remove_student(uni)

        course_name = cm.get_course_name()
        secret = cm.get_secret_code()

        # Get class timestamp
        timestamp = cm.get_timestamp()

        # Get class coordinate
        coordinate = cm.get_coordinate()

        num_sessions = cm.get_num_sessions()
        students = cm.get_students()
        students_with_ar = []
        for student in students:
            sm = students_model.Students(student['id'])
            student_uni = sm.get_uni()
            num_ar = sm.get_num_attendance_records(cid)
            num_late = sm.get_num_late_attendance_records(cid)
            students_with_ar.append([student, student_uni, num_ar, num_late])

        context = dict(students=students_with_ar)
        if timestamp:
            new_timestamp = timestamp+timedelta(hours=-4)
        else:
            new_timestamp = "NO TIME."


        courses = tm.get_courses_with_session()
        context_course = dict(data=courses)

        disable_rest_open_windows = False
        for item in context_course['data']:
            if item['active'] == 1:
                disable_rest_open_windows = True

        return render_template(
                'view_class.html',
                cid=cid,
                secret=secret,
                timestamp=new_timestamp,
                coordinate=coordinate,
                course_name=course_name,
                num_sessions=num_sessions,
                uni=uni,
                disable_rest_open_windows=disable_rest_open_windows,
                res=res,
                **context)