コード例 #1
0
ファイル: views.py プロジェクト: hassanjafar/HR_VS
def dash_report(request):
    count = 0
    att_sliced = []
    q = Device.objects.values()
    var = 0
    for i in q:
        var = i['id']
    try:
        zk = ZK('192.168.8.100',
                port=4370,
                timeout=5,
                password=0,
                force_udp=False,
                ommit_ping=False)
        print(zk)
        dev = Device()
        conn = zk.connect()

        if zk.is_connect:
            #    print("we are inside")

            #   print(zk.get_users())

            if var > 0:
                print("if near online block", var)
                conn.get_users()
                conn.get_attendance()
                dev.id = var
                dev.ip_address = str(zk._ZK__address)
                dev.mac_address = str(zk.get_mac())
                dev.serial_number = str(zk.get_serialnumber())
                dev.user_count = str(conn.users)
                dev.record_count = str(conn.records)

                dev.status = "online"
                dev.save()
            else:
                print("else near online block")
                conn.get_users()
                conn.get_attendance()
                dev.ip_address = str(zk._ZK__address)
                dev.mac_address = str(zk.get_mac())
                dev.serial_number = str(zk.get_serialnumber())
                dev.user_count = str(conn.users)
                dev.record_count = str(conn.records)
                dev.status = "online"
                dev.save()
                print(zk)

        att = conn.get_attendance()
        last = CheckLogs.objects.values('date').last()
        obj = CheckLogs()
        if last:
            #print("we are in last")
            last_val = last['date']
            print("last value =", last, type(last))

            for i in att:
                count = count + 1
                att_val = i.timestamp.date()
                if last_val == att_val:
                    att_sliced = att[count:]
                    break
            if count != 0:
                print("reaching if count!=0")
                for a in att_sliced:
                    #print("true a ==", a.user_id)
                    date_val = a.timestamp.date()
                    time_val = a.timestamp.time()
                    check_val = CheckLogs.objects.values().filter(
                        date=date_val, time=time_val)
                    # print(check_val.count())
                    if check_val.count() == 0:
                        u_id = a.user_id
                        #print("u_id=",u_id)
                        check_user = Personnel.objects.filter(id=u_id)
                        print(check_user)
                        if check_user.count() != 0:
                            #print(time_val,"we can insert straightly")
                            obj.personnel = Personnel(a.user_id)
                            obj.date = date_val
                            obj.time = time_val
                            obj.save()
            elif att:
                for i in att:
                    per = i.user_id
                    check_user = Personnel.objects.filter(id=per)
                    print(check_user)
                    if check_user.count() != 0:
                        date_val = i.timestamp.date()

                        obj.personnel = Personnel(per)
                        time_val = i.timestamp.time()
                        obj.date = date_val
                        obj.time = time_val

                        obj.save()
    # except:  double check validity of this condition
            if var < 0:
                print("not reached here")

                for i in q:
                    dev.id = i['id']
                    dev.ip_address = i['ip_address']
                    dev.mac_address = i['mac_address']
                    dev.serial_number = i['serial_number']
                    dev.user_count = i['user_count']
                    dev.record_count = i['user_count']
                    dev.status = "offline"
                    dev.save()

        else:
            att = conn.get_attendance()
            for i in att:
                obj.time = i.timestamp.time()
                obj.date = i.timestamp.date()
                obj.personnel = Personnel(i.user_id)
                obj.save()
        # print("we are here")
    except:
        if zk.is_connect == False:
            for i in q:
                dev.id = i['id']
                dev.ip_address = i['ip_address']
                dev.mac_address = i['mac_address']
                dev.serial_number = i['serial_number']
                dev.user_count = i['user_count']
                dev.record_count = i['user_count']
                dev.status = "offline"
                dev.save()
        print("network error")

    date_sel = datetime.today().date()
    vip = Personnel.objects.filter(deptment_id__deptName='VIP').count()
    que = CheckLogs.objects.filter(date=date_sel).count()
    staff = Personnel.objects.values().count()
    query_res = CheckLogs.objects.count()

    context = {'query': query_res, 'vip': vip, 'staff': staff, 'que': que}
    return JsonResponse(context, safe=False)
コード例 #2
0
ファイル: pullData.py プロジェクト: ithoq/X628-C
zkt.connect()
conZkt = zkt.is_connect

# Pulling data
while True:
    statusConnect = zk.connect()
    if statusConnect:
        print("Connected to device")
    else:
        print("No connected to devive")
        print("Pulling")
    if statusConnect:
        users = zkt.get_users()
        attendances = zkt.get_attendance()
        tempDate = zk.getTime().date()
        zkt.get_serialnumber()
        for us in users:
            for att in attendances:
                if us.user_id == att.user_id:
                    dataTime = ({
                        "iduser": format(us.user_id),
                        "name": us.name,
                        "date": format(att.timestamp.date()),
                        "time": format(att.timestamp.time()),
                        "method_swipe": format(att.status)
                    })
                    cur.execute(
                        "INSERT INTO datatable (iduser,name,date,time,method_swipe) VALUES (%(iduser)s, %(name)s, %(date)s, %(time)s, %(method_swipe)s)",
                        dataTime)
                    connectDB.commit()
        zkt.clear_attendance()