class ZKUtil(object): def __init__(self, logger, ip, port=4370): self.log = logger self.sep = ',' self.zk_sttg = None self.zk_ip = ip self.zk_port = port self.zk_conn = None self.timeout = 5 self.passwd = 0 self.fc_udp = False self.om_png = False def _zk_connect(self): ret = 1 try: self.zk_conn = ZK(self.zk_ip, self.zk_port, self.timeout, self.passwd, self.fc_udp, self.om_png) self.zk_conn = self.zk_conn.connect() self.log.info(f" connected to machine, ip {self.zk_ip}") ret = 0 except Exception as e: self.log.error( f"Except error to connect -> {self.zk_ip}, detail -> {e}") self.log.error(f"Except zk error, {sys.exc_info()}") finally: return ret def _zk_is_connected(self): try: if self.zk_conn: return True else: self.log.error(f"zk conn is {self.zk_conn}") return False except Exception as e: self.log.info(f"Except -> {e} ") self.log.error(f" Except {sys.exc_info()}") def _zk_disconnect(self): ret = 1 try: if self._zk_is_connected(): self.zk_conn.disconnect() self.log.info( f" disconnect from fingerprint, ip => {self.zk_ip}") ret = 0 except Exception as e: self.log.info(f"Except -> {e} ") self.log.error(f" Except {sys.exc_info()}") finally: return ret def _zk_firmware(self): ret = 1 try: if self._zk_is_connected(): ret = self.zk_conn.get_firmware_version() except Exception as e: self.log.error(f" Except error , detail -> {e}") self.log.error(f" Except {sys.exc_info()}") finally: return ret def _zk_live_attendance(self): ret = 1 try: if self._zk_is_connected(): ret = self.zk_conn.get_firmware_version() except Exception as e: self.log.error(f" Except error , detail -> {e}") self.log.error(f" Except {sys.exc_info()}") finally: return ret def _zk_get_attendance(self): ret = [] tmp = { '1': "47714351", '2': "46373211", '4': "47598830", '5': "45448470", '6': "46027680" } try: if self._zk_is_connected(): ret = self.zk_conn.get_attendance() if len(ret) == 0: self.log.error(f"attendance is len = 0, {attendance}") except Exception as e: self.log.error(f" Except error , detail -> {e}") self.log.error(f" Except {sys.exc_info()}") finally: return ret def _zk_clear_attendance(self): ret = 1 try: if self._zk_is_connected(): self.zk_conn.clear_attendance() ret = 0 except Exception as e: self.log.error(f"Except error, detail -> {e}") self.log.error(f"Except {sys.exc_info()}") finally: return ret def _zk_reboot_machine(self): ret = 1 try: if self._zk_is_connected(): self.zk_conn.restart() ret = 0 except Exception as e: self.log.error(f" Except error , detail -> {e}") self.log.error(f" Except {sys.exc_info()}") finally: return ret
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() # Calculate time maxTime = None minTime = None dateNow = datetime.date.today() timeTempIn = datetime.time(9, 0, 0) # Time in timeTempOut = datetime.time(18, 0, 0) # Time out timeTempLate = datetime.time() timeTempEarly = datetime.time() dataTempDate = [None] # Check user for us in users: cur.execute("SELECT iduser FROM timetable WHERE date = '" + str(dateNow) + "' AND iduser = '******'")