def insert_booking(empid, clock_num, dte): #if person not found flag for update and dont save ret = sqlconns.sql_select_single_field( 'SELECT COUNT(*) as FOO from temployee WHERE employee_id = ' + str(empid)) if sqlconns.sql_select_single_field( 'SELECT COUNT(*) as FOO from temployee WHERE employee_id = ' + str(empid)) == "0": ret = sqlconns.sql_command( 'INSERT into d_zpad_events (employee_id) VALUES (?)', empid) terminal_id = sqlconns.sql_select_single_field( "SELECT TOP 1 terminal_id FROM tterminal WHERE number = " + clock_num) if terminal_id == "": terminal_id = "0" if terminal_id == -1: return -1 if terminal_id != "0": ret = sqlconns.sql_command( "UPDATE tterminal SET poll_success = ? WHERE number = ?", datetime.datetime.now(), clock_num) if ret == -1: return booking = "'" + dte + "'" flag = 0 tx = "INSERT INTO twork_unprocessed (employee_id,terminal_id,date_and_time,[type],flag,[key],memo,authorisation,authorisation_finalised,source)" \ " VALUES (" + str(empid) + "," + str(terminal_id) + "," + booking + ",1000," + str(flag) + ",0,'',3,1,0)" ret = sqlconns.sql_command(tx) if ret == -1: return -1 tx = tx.replace("twork_unprocessed", "twork_unprocessed_archive") ret = sqlconns.sql_command(tx) if ret == -1: return -1 return 0
def get_command_info(): global TERMINAL_LIST for n in range(len(TERMINAL_LIST)): tx = "SELECT COUNT(*) AS FOO FROM d_iface_commands WHERE sent <> 1 AND terminal_id=" + str( TERMINAL_LIST[n][0]) the_sum = sqlconns.sql_select_single_field(tx) if the_sum == -1: continue TERMINAL_LIST[n][1] = str(the_sum) tx = "SELECT COUNT(*) AS FOO FROM d_iface_commands WHERE sent = 1 AND completed_flag <> 1 and terminal_id=" + str( TERMINAL_LIST[n][0]) the_sum = sqlconns.sql_select_single_field(tx) if the_sum == -1: continue TERMINAL_LIST[n][2] = str(the_sum) tx = "SELECT COUNT(*) AS FOO FROM d_iface_commands WHERE completed_flag = 1 AND terminal_id=" + str( TERMINAL_LIST[n][0]) the_sum = sqlconns.sql_select_single_field(tx) if the_sum == -1: continue TERMINAL_LIST[n][3] = str(the_sum) tx = "SELECT poll_success FROM tterminal WHERE terminal_id=" + str( TERMINAL_LIST[n][0]) the_sum = sqlconns.sql_select_into_list(tx) if the_sum == -1: continue if the_sum[0][0] == None: the_sum = "None" elif the_sum[0][0] != None: the_sum = str.replace( f.get_sql_date(the_sum[0][0], "dd/mm/yyyy hh:mm:ss"), "'", "") TERMINAL_LIST[n][4] = str(the_sum) tx = "SELECT TOP 1 stamp FROM d_iface_stamps WHERE table_name like 'att_stamp' and terminal_id = " + str( TERMINAL_LIST[n][0]) listy = sqlconns.sql_select(tx) if listy == -1: continue if len(listy) == 0: att = 'None' elif listy[0][0] == None: att = "None" else: att = str(listy[0][0]) tx = "SELECT TOP 1 stamp FROM d_iface_stamps WHERE table_name like 'op_stamp' and terminal_id = " + str( TERMINAL_LIST[n][0]) listy = sqlconns.sql_select(tx) if listy == -1: continue if len(listy) == 0: op = 'None' elif listy[0][0] == None: op = "None" else: op = str(listy[0][0]) TERMINAL_LIST[n][5] = att TERMINAL_LIST[n][6] = op
def get_terminal_id(door_id, terminal_id): sqltxt = """SELECT TOP 1 number from tterminal WHERE terminal_id = """ + str( terminal_id) ret = sqlconns.sql_select_single_field(sqltxt) if ret == -1: return -1 terminal_num = int(ret) + (int(door_id) - 1) sqltxt = """SELECT TOP 1 terminal_id from tterminal WHERE number = """ + str( terminal_num) ret = sqlconns.sql_select_single_field(sqltxt) #preparing for door not existing for whatever reason, do not know why, saw this in testing if ret == -1: return 0 return ret
def get(self): if OLD_TIME == True: old_time_status = 'Oldtime option = ON.<br>' else: old_time_status = 'Oldtime option = OFF.<br>' if gl.face_to_personnel == True: photo_save_status = 'Save face photo to personnel = ON.<br>' else: photo_save_status = 'Save face photo to personnel = OFF.<br>' terminal_configuration_status = "Attendance terminals = configuration " + str(ATTENDANCE_TERMINAL) + '.<br>'\ "Access terminals = configuration " + str(ACCESS_TERMINAL) + '.<br>' data = ("<p>Ifaceserver from " + DISTRIBUTOR + " is broadcasting.</p>" \ + "Iface Server Version = " \ + APP_VERSION + "<br><br>" \ + "SQL Instance: " + str(sqlconns.sql_select_single_field('SELECT @@ServerName')) + "<br>" \ + "HTTP Port: " + str(gl.server_port) + "<br>" \ + "HTTPS Port: " + str(gl.https_port) + "<br><br>" \ + "normaltime = " + str(date_time_string_test('normaltime')) \ + ".<br>****oldtime = " + str(date_time_string_test('oldtime')) + '.<br>' \ + old_time_status + terminal_configuration_status + photo_save_status \ + 'Fingerprint delete old scan set to ' + str(FINGER_DELETION_MINS) +' mins.' + '<br>' \ + 'Using Inbio Communication (ensure inbio tables are setup)= ' + str(INBIO_USED) + '.<br>' \ + 'S680 Function keys = ' + str(FUNCTION_KEYS) + '.<br>' \ + 'S680 Cost Centre Function keys = ' + str(CC_FUNCTION_KEYS) + '.<br>' \ + """Populating 'Original Bookings' = """ + str(ORIGINAL_BOOKINGS) + '.<br>' \ + 'Iface Function keys = ' + str(IFACE_FUNCTION_KEYS) + '.<br><br>' \ + 'License Year = ' + str(return_version()) + '.<br><br>'\ + 'Min Stamp = ' + str(MIN_STAMP) + '.<br>'\ + 'Max Stamp = ' + str(MAX_STAMP) + '<br><br>') self.render('templates/ifaceinformation.html', data=data)
def get(self): print('tested') if OLD_TIME == True: old_time_status = 'Oldtime option = ON.<br>' else: old_time_status = 'Oldtime option = OFF.<br>' if gl.face_to_personnel == True: photo_save_status = 'Save face photo to personnel = ON.<br>' else: photo_save_status = 'Save face photo to personnel = OFF.<br>' terminal_configuration_status = "Attendance terminals = configuration " + str(ATTENDANCE_TERMINAL) + '.<br>'\ "Access terminals = configuration " + str(ACCESS_TERMINAL) + '.<br>' data = ("<HTML>Ifaceserver from " + DISTRIBUTOR + " is broadcasting.<br>Iface Server Version = " \ + APP_VERSION + "<br><br>" \ + "SQL Instance: " + str(sqlconns.sql_select_single_field('SELECT @@ServerName')) + "<br><br>" \ + "normaltime = " + str(date_time_string_test('normaltime')) + ".<br>****oldtime = " + str(date_time_string_test('oldtime')) + '.<br>' \ + old_time_status + terminal_configuration_status + photo_save_status \ + 'Fingerprint delete old scan set to ' + str(FINGER_DELETION_MINS) +' mins.' + '<br>' \ + 'Using Inbio Communication (ensure inbio tables are setup)= ' + str(INBIO_USED) + '.<br><br>' \ + 'S680 Function keys = ' + str(FUNCTION_KEYS) + '.<br>' \ + 'Iface Function keys = ' + str(IFACE_FUNCTION_KEYS) + '.<br><br>' \ + 'License Year = ' + str(return_version()) + '<br><br>'\ + get_terminal_status_list() +'</HTML>') self.write(data)
def test_inbio_sql_tables(): sql = """IF OBJECT_ID (N'd_inbio_events', N'U') IS NOT NULL SELECT 1 AS res ELSE SELECT 0 AS res""" ret = sqlconns.sql_select_single_field(sql) if ret == '0': return 0 elif ret == -1: return 0 else: sql = """IF OBJECT_ID (N'd_inbio_misc', N'U') IS NOT NULL SELECT 1 AS res ELSE SELECT 0 AS res""" ret = sqlconns.sql_select_single_field(sql) if ret == '0': return 0 elif ret == -1: return 0 else: return 1
def bAttFound(sn, emp_id, booking): tx = "select TOP 1 [d_iface_att_id] from d_iface_att WHERE sn = '" + sn + "' AND emp_id = " + str( emp_id) + " AND date_and_time = " + booking ret = sqlconns.sql_select_single_field(tx) if ret == "": return False if int(ret) > 0: tx = "If ("\ "SELECT count(*) from d_iface_att" \ " where d_iface_att_id = "+str(int(ret))+ " and repoll_count is null) > 0"\ " UPDATE d_iface_att"\ " SET repoll_count = 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_att_id ="+ str(int(ret))+ ""\ " ELSE"\ " UPDATE d_iface_att"\ " SET repoll_count = repoll_count + 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_att_id = "+ str(int(ret)) ret = sqlconns.sql_command(tx) return True else: return False
def build_power_on_get_request(sn): terminal_id = get_terminal_id_from_sn(sn) if terminal_id=="": return "" att_stamp = 1 op_stamp = 1 tx = "SELECT table_name,stamp FROM d_iface_stamps WHERE terminal_id = " + str(terminal_id) ret = sqlconns.sql_select_into_list(tx) if ret!=-1: for index in range(len(ret)): if ret[index][0]== "att_stamp": att_stamp = ret[index][1] if ret[index][0]== "op_stamp": op_stamp = ret[index][1] else: return ret tx = "SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + sn + "'" notepad_options = str.lower(sqlconns.sql_select_single_field(tx)) #tidy up on stamps based on latest push firmware, refer to older backups if you need to revert this. trans_flag_string = "1" if 'uface' in notepad_options: trans_flag_string = 'TransData AttLog\tOpLog\tAttPhoto\tEnrollUser\tChgUser\tEnrollFP\tChgFP\tFACE\tUserPic' xx = "GET OPTION FROM:" + sn + \ "\r\nStamp=" + str(att_stamp) +\ "\r\nOpStamp=" + str(op_stamp) + \ "\r\nPhotoStamp=" + str(op_stamp) + \ "\r\nErrorDelay=3" +\ "\r\nDelay=5" + \ "\r\nTransTimes=" + "00:00;14:05" + \ "\r\nTransInterval=" + "1" + \ "\r\nTransFlag=" + trans_flag_string + \ "\r\nRealtime=1" + \ "\r\nTimeZone=1" + \ "\r\nATTLOGStamp=" + str(att_stamp) + \ "\r\nOPERLOGStamp=" + str(op_stamp) + \ "\r\nATTPHOTOStamp=" + str(op_stamp) + \ "\r\n" return xx
def version_check(): if os.path.isfile(gl.LICENSE_TXT): fob = open(gl.LICENSE_TXT, "r") listme = fob.readlines() fob.close() try: version_year = sqlconns.decrypt_with_key(listme[0]) ret = sqlconns.sql_select_single_field( "SELECT TOP 1 [data] FROM tversion WHERE [property] like 'database version'" ) if ret == -1: return False database_version = str.split(ret, '.') if int(version_year) >= int('20' + database_version[0]): return True else: f.error_logging(APPNAME, "Version is out of date....cannot start.", "error_log", "") return False except Exception as e: return False else: f.error_logging(APPNAME, "Error reading license.txt file.", "error_log", "") return False
def get_commands_list(sn): terminal_id = sqlconns.sql_select_single_field("SELECT TOP 1 terminal_id FROM tterminal WHERE ip_address = '" + sn+"'") if terminal_id == "": return -1 if int(terminal_id) > 0: data_list = sqlconns.sql_select_into_list("SELECT top 50 iface_command_id,command FROM d_iface_commands where sent <> 1 and terminal_id ="+terminal_id+"ORDER BY iface_command_id") if data_list==-1: return -1 return data_list else: return -1
def check_spool_transactions(): global SPOOL_TRANSACTIONS ret = sqlconns.sql_select_single_field( "SELECT TOP 1 value FROM d_inbio_misc WHERE property like 'SPOOL_TRANSACTIONS'" ) if ret == "1": SPOOL_TRANSACTIONS = 1 else: SPOOL_TRANSACTIONS = 0
def get(self): list = self.request.uri.split("?SN=") list2 = list[1].split("&") sn = list2[0] uface = False #TODO this line is legacy. can it be removed tx = "SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + sn + "'" notepad_options = str.lower(sqlconns.sql_select_single_field(tx)) if "uface" in str.lower(notepad_options): uface = True #TODO this line is legacy, can it be removed data_list = get_commands_list(sn) if data_list == -1: return ret = sqlconns.sql_command( "UPDATE tterminal SET poll_success = ? WHERE ip_address = ?", datetime.now(), sn) if ret == -1: return counter = 0 reboot = 0 clear_data = 0 data = "" #used to do this for uface terminals now do for all if len(data_list) == 0: ok = "OK" self.write(ok) for index in range(len(data_list)): if data_list[index][1] == "REBOOT": reboot = 1 elif data_list[index][1] == "CLEAR DATA": clear_data = 1 else: counter += 1 if sys.getsizeof(data + ("C:ID" + str(data_list[index][0]) + ":" + data_list[index][1] + "\r\n")) > 39000: break data = data + "C:ID" + str( data_list[index][0]) + ":" + data_list[index][1] + "\r\n" ret = update_commands_to_sent_status(data_list[index][0]) if ret == -1: return if data != "": self.write(data) dte = date_time_string(sn) bDateHeader = False # are we sending the date header? if dte != None: bDateHeader = True self.device_headers(dte, bDateHeader) return if clear_data == 1: self.write("C:ID" + str(data_list[index][0]) + ":CLEAR DATA\r\n") self.write(data) if reboot == 1: self.write("C:ID" + str(data_list[index][0]) + ":REBOOT\r\n") dte = date_time_string(sn) bDateHeader = False # are we sending the date header? if dte != None: bDateHeader = True self.device_headers(dte, bDateHeader)
def date_time_string_old(serial_number): dte = datetime.now() if OLD_TIME == True: tx = sqlconns.sql_select_single_field("SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + serial_number + "'") if 'oldtime' in str(tx): dte = dte - timedelta(hours = 1) now = time.mktime(dte.timetuple()) year, month, day, hh, mm, ss, wd, y, z = time.localtime(now) s = "%s,%02d %3s %4d %02d:%02d:%02d GMT" % ( dte.strftime('%a'), day, dte.strftime('%b'), year,hh, mm, ss) return s
def date_time_string(serial_number): notepad_options = sqlconns.sql_select_single_field( "SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + serial_number + "'") if 'notime' in str.lower(notepad_options): return None dte = datetime.now() if OLD_TIME == True: if 'oldtime' in str.lower(notepad_options): dte = dte - timedelta(hours = 1) #'timezone mod, use timezone=1 in the notepad option for Denmark' dte = timezone_difference(dte,str(notepad_options)) now = time.mktime(dte.timetuple()) year, month, day, hh, mm, ss, wd, y, z = time.localtime(now) s = "%s,%02d %3s %4d %02d:%02d:%02d GMT" % ( dte.strftime('%a'), day, dte.strftime('%b'), year,hh, mm, ss) return s
def date_time_string_power(serial_number): #probably not used anymore since not setting time and date in power on get request dte = datetime.now() if OLD_TIME == True: tx = sqlconns.sql_select_single_field("SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + serial_number + "'") if 'oldtime' in str(tx): dte = dte - timedelta(hours = 1) #'are we using timezones' if 'timezone' in str(tx): dte = timezone_difference (dte,tx) now = time.mktime(dte.timetuple()) year, month, day, hh, mm, ss, wd, y, z = time.localtime(now) s = "%s,%02d %3s %4d %02d:%02d:%02d GMT" % ( dte.strftime('%a'), day, dte.strftime('%b'), year,hh, mm, ss) return s
def date_time_string(self): now = time.time() year, month, day, hh, mm, ss, wd, y, z = time.localtime(now) #there was a space between first , and %02d s = "%s,%02d %3s %4d %02d:%02d:%02d GMT" % ( self.weekdayname[wd], day, self.monthname[month], year, hh, mm, ss) if self.serial_number == '': return s #bug out if oldtime is false if OLD_TIME == False: return s tx = sqlconns.sql_select_single_field( "SELECT TOP 1 notepad from tterminal WHERE ip_address = '" + self.serial_number + "'") if 'oldtime' in str(tx): dte = datetime.now() dte = dte - timedelta(hours=1) now = time.mktime(dte.timetuple()) year, month, day, hh, mm, ss, wd, y, z = time.localtime(now) s = "%s,%02d %3s %4d %02d:%02d:%02d GMT" % ( self.weekdayname[wd], day, self.monthname[month], year, hh, mm, ss) return s
def bAttEventFound (terminal_id,emp_id,booking): tx = "select TOP 1 [d_iface_att_id] from d_iface_att WHERE terminal_id = "+ str(terminal_id) + " AND emp_id = "+ str(emp_id)+ " AND date_and_time = "+ booking ret = sqlconns.sql_select_single_field(tx) if ret == "": return False if int(ret) > 0: tx = "If (" "SELECT count(*) from d_iface_att_event" " where d_iface_events_id = "+str(int(ret))+ " and repoll_count is null) > 0" " UPDATE d_iface_att_event" " SET repoll_count = 1," " repoll_date = getdate()" " WHERE d_iface_events_id ="+ str(int(ret))+ "" " ELSE" " UPDATE d_iface_att_event" " SET repoll_count = repoll_count + 1," " repoll_date = getdate()" " WHERE d_iface_events_id = "+ str(int(ret)) ret = sqlconns.sql_command(tx) return True else: return False
def save_user_finger(xx, terminal_id): list = xx.split("\t") user_id = list[0].replace("FP PIN=", "") if user_id == "": return 0 fid = list[1].replace("FID=", "") size = list[2].replace("Size=", "") valid = list[3].replace("Valid=", "") tmp = list[4].replace("TMP=", "") #check if exists tx = "Select top 1 [d_iface_finger_id] from d_iface_finger WHERE employee_id =" + user_id + " AND fid=" + fid + " AND tmp = '" + tmp + "'" ret = sqlconns.sql_select_single_field(tx) if ret != "" and int(ret) > 0: tx = "If ("\ "SELECT count(*) from d_iface_finger"\ " where d_iface_finger_id = "+str(int(ret))+ " and repoll_count is null) > 0"\ " UPDATE d_iface_finger"\ " SET repoll_count = 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_finger_id ="+ str(int(ret))+ ""\ " ELSE"\ " UPDATE d_iface_finger"\ " SET repoll_count = repoll_count + 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_finger_id = "+ str(int(ret)) ret = sqlconns.sql_command(tx) return 1 #clear old templates tx = "DELETE from d_iface_finger WHERE employee_id = " + str( user_id) + " AND date_added < dateadd(minute,-" + str( FINGER_DELETION_MINS) + ",getdate())" sqlconns.sql_command(tx) date_now = f.get_sql_date(datetime.now(), "yyyy-mm-dd hh:mm:ss") tx = "UPDATE d_iface_finger SET size = '" + size + "',[valid]="+valid+", [tmp]='" + tmp + "',date_added="+date_now+",terminal_id="+str(terminal_id)+" WHERE employee_id =" + user_id + " AND fid="+fid+"" \ " IF @@ROWCOUNT=0" \ " INSERT INTO d_iface_finger(employee_id,size,tmp,date_added,[valid],fid,terminal_id) VALUES ('"+user_id+"','"+size+"','"+tmp+"',"+date_now+","+valid+","+fid+","+str(terminal_id)+")" ret = sqlconns.sql_command(tx) if ret == -1: return ret ret = update_tevent_update(user_id) return ret
def save_user_face(xx,terminal_id): list = xx.split("\t") user_id = list[0].replace("FACE PIN=","") if user_id=="":return 0 fid = list[1].replace("FID=","") size = list[2].replace("SIZE=","") valid = list[3].replace("VALID=","") tmp = list[4].replace("TMP=","") date_now = f.get_sql_date(datetime.now(),"yyyy-mm-dd hh:mm:ss") #check if already there tx = "SELECT TOP 1 d_iface_face_id from d_iface_tmp WHERE employee_id ="+ user_id+ " AND fid="+fid+" AND [tmp] ='"+ tmp+ "'" ret = sqlconns.sql_select_single_field(tx) if ret!= "" and int(ret) > 0: tx = "If ("\ "SELECT count(*) from d_iface_tmp"\ " where d_iface_face_id = " + str(int(ret)) + " and repoll_count is null) > 0"\ " UPDATE d_iface_tmp"\ " SET repoll_count = 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_face_id =" + str(int(ret)) + ""\ " ELSE"\ " UPDATE d_iface_tmp"\ " SET repoll_count = repoll_count + 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_Face_id = " + str(int(ret)) ret = sqlconns.sql_command(tx) return 1 tx = "UPDATE d_iface_tmp SET size = '" + size + "',[valid]="+valid+", [tmp]='" + tmp + "',date_added="+date_now+",terminal_id="+str(terminal_id)+" WHERE employee_id =" + user_id + " AND fid="+fid+"" \ " IF @@ROWCOUNT=0" \ " INSERT INTO d_iface_tmp(employee_id,size,tmp,date_added,[valid],fid,terminal_id) VALUES ('"+user_id+"','"+size+"','"+tmp+"',"+date_now+","+valid+","+fid+","+str(terminal_id)+")" ret = sqlconns.sql_command(tx) if ret==-1: return ret #if fid = 11 then check recently got 12 from this terminal that are new and put entry into tevent_update AND clear new flag if fid=="11": ret = update_tevent_update(user_id) return ret
def save_user_photo(xx,terminal_id): list = xx.split("\t") user_id = list[0].replace("USERPIC PIN=","") file_name = list[1].replace("FileName=","") size = list[2].replace("Size=","") content = list[3].replace("Content=","") date_now = f.get_sql_date(datetime.now(),"yyyy-mm-dd hh:mm:ss") #check exixts and dont write tx = "Select top 1 [d_iface_photo_id] from d_iface_photo WHERE employee_id =" + user_id + " AND content = '"+ content + "'" ret = sqlconns.sql_select_single_field(tx) if ret != "" and int(ret) > 0: tx = "If ("\ "SELECT count(*) from d_iface_photo"\ " where d_iface_photo_id = "+str(int(ret))+ " and repoll_count is null) > 0"\ " UPDATE d_iface_photo"\ " SET repoll_count = 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_photo_id ="+ str(int(ret))+ ""\ " ELSE"\ " UPDATE d_iface_photo"\ " SET repoll_count = repoll_count + 1,"\ " repoll_date = getdate()"\ " WHERE d_iface_photo_id = "+ str(int(ret)) ret = sqlconns.sql_command(tx) return 1 #photo does not exist, carry on tx = "UPDATE d_iface_photo SET size = '" + size + "', content='" + content + "',date_added="+date_now+",terminal_id="+str(terminal_id)+",new=1 WHERE employee_id =" + user_id + "" \ " IF @@ROWCOUNT=0" \ " INSERT INTO d_iface_photo(employee_id,file_name,size,content,date_added,terminal_id,new) VALUES ('"+user_id+"','"+file_name+"','"+size+"','"+content+"',"+date_now+","+str(terminal_id)+",1)" ret = sqlconns.sql_command(tx) if ret==0: if gl.face_to_personnel==True: content = base64.b64decode(content) tx = "UPDATE temployee SET photo = ? WHERE employee_id = ?" ret = sqlconns.sql_command_args(tx,content,user_id) return ret
def update_inbio(self,event): ret = wx.MessageDialog(None,'Do you wish to update all terminal tables in Inbio ' + self.terminal_ip + '?', 'User Option', wx.YES_NO) ret1 = ret.ShowModal() if ret1 == wx.ID_NO: ret.Destroy() return -1 #keep track of how many items to send for the progress bar later progressMax = 0 sql_text = "Select * From taccess_pattern" access_patterns = sqlconns.sql_select_into_list(sql_text) access_list = build_access_string(access_patterns) personnel_list, personnel_auth_list,finger_template_list = build_personnel_list(self.terminal_ip) progressMax +=len(personnel_list) + len(access_list) + len(personnel_auth_list) +len(finger_template_list) if len(personnel_list) == 0: wx.MessageBox('No data to send, please check personnel.','User Alert') return progressMax+=1 constr = create_string_buffer(str.encode('protocol=TCP,ipaddress='+ self.terminal_ip + ',port=4370,timeout=' + str(gl.COMM_TIMEOUT) +',passwd=')) commpro = windll.LoadLibrary("plcommpro.dll") hcommpro = commpro.Connect(constr) if hcommpro == 0: wx.MessageBox('No communications, please check connections.','User Alert') return #relay times term_list = get_doors_from_ip(self.terminal_ip) for index in range(len(term_list)): tx = 'select top 1 relay_trip_seconds from tterminal where terminal_id = ' + str(term_list[index][0]) relay_time= sqlconns.sql_select_single_field(tx) if relay_time == - 1: wx.MessageBox('Error during communications (relay list)...' + '(' + str(relay_time) + ')','User Alert') commpro.Disconnect(hcommpro) return if term_list[index][1]%100 == 1: door_relay = 'Door1Drivertime=' + str(relay_time) p_items = create_string_buffer(str.encode(door_relay)) ret = commpro.SetDeviceParam(hcommpro, p_items) if ret < 0: wx.MessageBox('Error during communications (door relay)...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return if term_list[index][1]%100 == 2: door_relay = 'Door2Drivertime=' + str(relay_time) p_items = create_string_buffer(str.encode(door_relay)) ret = commpro.SetDeviceParam(hcommpro, p_items) if ret < 0: wx.MessageBox('Error during communications (door relay)...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return if term_list[index][1]%100 == 3: door_relay = 'Door3Drivertime=' + str(relay_time) p_items = create_string_buffer(str.encode(door_relay)) ret = commpro.SetDeviceParam(hcommpro, p_items) if ret < 0: wx.MessageBox('Error during communications (door relay)...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return if term_list[index][1]%100 == 4: door_relay = 'Door4Drivertime=' + str(relay_time) p_items = create_string_buffer(str.encode(door_relay)) ret = commpro.SetDeviceParam(hcommpro, p_items) if ret < 0: wx.MessageBox('Error during communications (door relay)...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return p_data = create_string_buffer(str.encode("")) p_table = create_string_buffer(str.encode("userauthorize")) ret = commpro.DeleteDeviceData(hcommpro,p_table,p_data,"") p_table = create_string_buffer(str.encode("user")) ret = commpro.DeleteDeviceData(hcommpro,p_table,p_data,"") p_table = create_string_buffer(str.encode("timezone")) dialog = wx.ProgressDialog("Progress Information", ("Sending Settings to Inbio = " + self.terminal_ip+"."), progressMax) counter = 0 for index in range(len(access_list)): ret = commpro.SetDeviceData(hcommpro,p_table,create_string_buffer(str.encode(access_list[index])),"") if ret < 0: wx.MessageBox('Error during communications...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return counter +=1 dialog.Update(counter) p_table = create_string_buffer(str.encode("user")) for index in range(len(personnel_list)): ret = commpro.SetDeviceData(hcommpro,p_table,create_string_buffer(str.encode(personnel_list[index])),"") if ret < 0: dialog.Destroy() wx.MessageBox('Error during communications...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return counter +=1 dialog.Update(counter) p_table = create_string_buffer(str.encode("userauthorize")) for index in range(len(personnel_auth_list)): ret = commpro.SetDeviceData(hcommpro,p_table,create_string_buffer(str.encode(personnel_auth_list[index])),"") if ret < 0: dialog.Destroy() wx.MessageBox('Error during communications...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return counter +=1 dialog.Update(counter) #finger part p_table = create_string_buffer(str.encode("templatev10")) for index in range(len(finger_template_list)): ret = commpro.SetDeviceData(hcommpro,p_table,create_string_buffer(str.encode(finger_template_list[index])),"") if ret < 0: dialog.Destroy() wx.MessageBox('Error during communications...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return counter +=1 dialog.Update(counter) #time, do other params here if you need, make sure set as two way up above if need be ret = commpro.SetDeviceParam(hcommpro,create_string_buffer(str.encode("DateTime="+str(convert_now_to_int())))) if ret < 0: dialog.Destroy() wx.MessageBox('Error during communications...' + '(' + str(ret) + ')','User Alert') commpro.Disconnect(hcommpro) return counter +=1 dialog.Update(counter) wx.MessageBox('Send all Settings to Inbio ' + self.terminal_ip + ' was successful.','User Alert') return
def get_terminal_id_from_sn(sn): tx = "SELECT TOP 1 terminal_id from tterminal WHERE ip_address = '" + sn+"'" ret = sqlconns.sql_select_single_field(tx) if ret==-1: return "" return ret