Exemplo n.º 1
0
def set_punch_out(attendance, outTime):
    if not attendance or not attendance.punch_in:
        return (
            jsonify(dict(status="fail", message="Cannot puch out before puch in")),
            200,
        )
    if attendance.punch_out:
        return jsonify(dict(status="fail", message="student already punched out")), 200
    isValid, dateOrError = parseDate(outTime, "%H:%M:%S")
    if not isValid:
        return (
            jsonify(
                dict(status="fail", message="time is not valid {}".format(outTime))
            ),
            200,
        )

    attendance.punch_out = outTime
    attendance.punch_out_by_id = request.user.id
    db.session.add(attendance)
    db.session.commit()
    return (
        jsonify(
            dict(
                status="success",
                message="student successfuly puched out",
                attendance=attendance.serialize(),
            )
        ),
        200,
    )
Exemplo n.º 2
0
def set_punch_in(attendance, inTime, studentid=None):
    if attendance and attendance.punch_in:
        return jsonify(dict(status="fail", message="student already punched in")), 200
    isValid, dateOrError = parseDate(inTime, "%H:%M:%S")
    if not isValid:
        return (
            jsonify(dict(status="fail", message="time is not valid {}".format(inTime))),
            200,
        )

    attendance = Attendance(
        date=datetime.today().date(),
        student_id=studentid,
        punch_in=inTime,
        punch_in_by_id=request.user.id,
    )
    db.session.add(attendance)
    db.session.commit()
    return (
        jsonify(
            dict(
                status="success",
                message="student successfuly puched in",
                attendance=attendance.serialize(),
            )
        ),
        200,
    )
Exemplo n.º 3
0
def set_punch_in(attendance, date, inTime, studentid=None):
    msg = ("student successfuly puched in", )
    if inTime == "" and attendance:
        attendance.punch_in = None
        db.session.delete(attendance)
        msg = "attendance delete"
    else:
        isValid, dateOrError = parseDate(inTime, "%H:%M:%S")
        if not isValid:
            return (
                jsonify(
                    dict(status="fail",
                         message="time is not valid {}".format(inTime))),
                200,
            )
        if attendance:
            attendance.punch_in = inTime
        else:
            attendance = Attendance(
                date=date,
                student_id=studentid,
                punch_in=inTime,
                punch_in_by_id=request.user.id,
            )
            db.session.add(attendance)
    db.session.commit()
    return (
        jsonify(
            dict(status="success",
                 message=msg,
                 attendance=attendance.serialize())),
        200,
    )
Exemplo n.º 4
0
def set_attendance(studentid, what):
    res = dict(status="fail")
    res_code = 200

    if what not in ["in", "out", "comment"]:
        res["message"] = "Invalid url"
        return jsonify(res), res_code

    faculty = Faculty.query.get(request.user.id)

    data = request.json or request.data or request.form

    if what in ("in", "out"):
        isValid, timeOrError = parseDate(data.get(what), "%H:%M:%S")
        if not isValid:
            res["message"] = "Invalid time format "
            return jsonify(res), res_code

    student = Student.query.get(studentid)
    if not student:
        res["message"] = "Invalid student id"
        return jsonify(res), res_code

    attendance = Attendance.query.filter_by(
        date=datetime.today().date(), student_id=student.id
    ).first()

    if what == "in":
        return set_punch_in(attendance, data.get("in"), studentid=studentid)
    elif what == "out":
        return set_punch_out(attendance, data.get("out"))
    elif what == "comment":
        return set_comment(attendance, data.get("comment"))
Exemplo n.º 5
0
def set_attendance(date, studentid, what):
    res = dict(status="fail")
    res_code = 200

    if what not in ["in", "out", "comment"]:
        res["message"] = "Invalid url"
        return jsonify(res), res_code

    data = request.json or request.data or request.form
    print(data)
    res_code = 200

    isValid, dateOrError = parseDate(date, "%d%m%Y")
    if not isValid:
        res["message"] = "Invalid date format {0}".format(date)
        return jsonify(res), res_code
    date = dateOrError.date()
    print(date)

    student = Student.query.get(studentid)
    print(student)
    if not student:
        res["message"] = "Invalid student id"
        return jsonify(res), res_code

    attendance = Attendance.query.filter_by(date=date,
                                            student_id=student.id).first()
    print(attendance)
    if what == "in":
        return set_punch_in(attendance,
                            date,
                            data.get("in"),
                            studentid=studentid)
    elif what == "out":
        return set_punch_out(attendance, date, data.get("out"))
    elif what == "comment":
        return set_comment(attendance, date, data.get("comment"))