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)
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()