コード例 #1
0
ファイル: views.py プロジェクト: nkpatil/calendar_app
def save_record(request):
    if request.POST:
        try:
            teacher_name = request.POST['teacher_name']
            grade_no = request.POST['grade_no']
            dt = request.POST['date']
            dt = datetime.datetime.strptime(dt, '%m-%d-%Y')
            tm = request.POST['time']
            tm = datetime.datetime.strptime(tm, "%I:%M%p")
            timestamp = str(dt.date()) + " " + str(tm.time())
            comments = request.POST['comments']
            user = request.user
            record = Record()
            record.user = user
            record.teacher_name = teacher_name
            record.grade = grade_no
            record.timestamp = timestamp
            record.district = user.first_name
            record.comments = comments
            record.save()
            messages.success(request, 'Data saved successfully!')
            return HttpResponseRedirect("/cal/save_record/")
        except Exception as err:
            messages.error(request, 'Error saving data ({0})'.format(str(err)))
            return HttpResponseRedirect("/cal/save_record/")
    else:
        query = Record.objects.filter(user=request.user).values()
        data = []
        for i in query:
            obj = {}
            obj['teacher_name'] = i['teacher_name']
            obj['grade'] = i['grade']
            obj['timestamp'] = str(i['timestamp']).split('+')[0]
            data.append(obj)
        return render(request, "calendar.html", {'message': ' ', 'data': data})
コード例 #2
0
def take_attendance(id):

    if request.method == "POST":
        if not "image" in request.files:
            return "no image found", 400

        file = request.files["image"]

        if not file:
            return "no image found", 400

        image = face_recognition.load_image_file(file)
        encodings = face_recognition.face_encodings(image)

        if (len(encodings) != 1):
            return str(
                len(encodings)) + " faces found. But required only 1 face", 400

        attendance = Attendance.query.get(id)
        if not attendance:
            return "invalid attendance id", 400

        # logic
        candidates = Candidate.query.filter_by(user=attendance.user).all()
        known_encodings = []
        for c in candidates:
            known_encodings.append(c.encoding)

        result = face_recognition.compare_faces(known_encodings, encodings[0])

        for i in range(len(result)):
            if result[i]:
                if Record.query.filter_by(
                        candidate=candidates[i],
                        attendance=attendance).first() is not None:
                    return "success", 200

                record = Record()

                now = datetime.now()
                record.candidate = candidates[i]
                record.attendance = attendance
                record.user = attendance.user
                record.created_at = now
                record.candidate.last_attendance = now

                db.session.add_all([record, record.candidate])
                db.session.commit()

                return "success", 200

        return "unauthorized", 401

    return render_template("take_attendance.html", id=id)