Example #1
0
def changestatus():
    if 'email' not in session:
        return redirect(url_for('signin'))

    user = User.query.filter_by(email=session['email']).first()

    if user is None:
        return redirect(url_for('signin'))
    else:
        form = ChangeStatusForm()
        courses = Course.query.filter_by(ins_id=user.uid).all()
        courseChoices = []
        for course in courses:
            courseChoices.append(
                (course.code, course.code + '-' + course.cname))
        form.course.choices = courseChoices
        studentChoices = []
        studentLinks = StudentCourseLink.query.filter_by(
            cid=courses[0].cid).all()
        for link in studentLinks:
            stu = Student.query.filter_by(sid=link.sid).first()
            sname = stu.sfirstname + ' ' + stu.slastname
            studentChoices.append((link.sid, str(link.sid) + ' - ' + sname))
        form.student.choices = studentChoices

        if request.method == 'POST':
            status = form.att.data
            stu_id = form.student.data
            date = form.time.data
            course_code = form.course.data
            course_id = Course.query.filter_by(code=course_code).first().cid
            stu2 = Student.query.filter_by(sid=int(stu_id)).first()
            sname2 = stu2.sfirstname + ' ' + stu2.slastname
            exsiting = Attendance.query.filter_by(stu_id=stu_id,
                                                  course_id=course_id,
                                                  date=date).first()
            checkin_time = ''
            checkout_time = ''
            if exsiting is not None:
                checkin_time = exsiting.checkin_time
                checkout_time = exsiting.checkout_time
                db.session.delete(exsiting)
                db.session.commit()
            additional = 'manually checked in'
            newatt = Attendance(checkin_time, checkout_time, date, status,
                                sname2, stu_id, course_code, course_id,
                                additional)
            db.session.add(newatt)
            db.session.commit()

        return render_template('changestatus.html', form=form)