first working version
This commit is contained in:
parent
bc61d8a0bd
commit
ca8d008e77
@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"station_id": "1",
|
"station_id": 2,
|
||||||
"host": "https://beta.alkator.cz",
|
"host": "https://beta.alkator.cz",
|
||||||
"login": "station_register@alkator.cz",
|
"login": "station_register@alkator.cz",
|
||||||
"password": "password_heslo"
|
"password": "password_heslo",
|
||||||
|
"countdown_seconds": 60
|
||||||
}
|
}
|
@ -12,9 +12,14 @@ gi.require_version('Gtk', '4.0')
|
|||||||
from gi.repository import Gtk, Gio, Gdk
|
from gi.repository import Gtk, Gio, Gdk
|
||||||
from requests.adapters import HTTPAdapter, Retry
|
from requests.adapters import HTTPAdapter, Retry
|
||||||
|
|
||||||
|
|
||||||
|
with open('config.json', 'r') as f:
|
||||||
|
config = json.load(f)
|
||||||
|
|
||||||
|
|
||||||
activeCards = []
|
activeCards = []
|
||||||
|
|
||||||
TIME = 600
|
TIME = config['countdown_seconds']
|
||||||
|
|
||||||
USB_IF = 0 # Interface
|
USB_IF = 0 # Interface
|
||||||
USB_TIMEOUT = 5 # Timeout in ms
|
USB_TIMEOUT = 5 # Timeout in ms
|
||||||
@ -25,8 +30,6 @@ db = {}
|
|||||||
|
|
||||||
queue_to_send = []
|
queue_to_send = []
|
||||||
|
|
||||||
with open('config.json', 'r') as f:
|
|
||||||
config = json.load(f)
|
|
||||||
|
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
||||||
@ -57,7 +60,7 @@ def refreshDbEvery3mins():
|
|||||||
time.sleep(3 * 60)
|
time.sleep(3 * 60)
|
||||||
|
|
||||||
|
|
||||||
Thread(target=refreshDbEvery3mins).start()
|
threading.Thread(target=refreshDbEvery3mins).start()
|
||||||
|
|
||||||
|
|
||||||
def sendQueueToSend():
|
def sendQueueToSend():
|
||||||
@ -78,7 +81,7 @@ def sendQueueToSend():
|
|||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
Thread(target=sendQueueToSend).start()
|
threading.Thread(target=sendQueueToSend).start()
|
||||||
|
|
||||||
|
|
||||||
class UsbCardReader():
|
class UsbCardReader():
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
import sys
|
import sys
|
||||||
import datetime
|
import datetime
|
||||||
import requests
|
import requests
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
import json
|
import json
|
||||||
import usb.core
|
import usb.core
|
||||||
import usb.util
|
import usb.util
|
||||||
from PyQt6 import QtWidgets, uic, QtGui
|
from PyQt6 import QtWidgets, uic, QtGui
|
||||||
|
from queue import Queue
|
||||||
|
|
||||||
from requests.adapters import HTTPAdapter, Retry
|
from requests.adapters import HTTPAdapter, Retry
|
||||||
|
|
||||||
@ -40,31 +43,53 @@ response = session.get(config['host'] + '/api/racers')
|
|||||||
racers = response.json()
|
racers = response.json()
|
||||||
|
|
||||||
|
|
||||||
|
db = []
|
||||||
|
|
||||||
|
|
||||||
|
with open('db.json', 'r') as f:
|
||||||
|
db = json.loads(f.read())
|
||||||
|
|
||||||
|
|
||||||
|
queue = Queue()
|
||||||
|
|
||||||
|
|
||||||
|
def worker():
|
||||||
|
while True:
|
||||||
|
item = queue.get()
|
||||||
|
db.append(item)
|
||||||
|
with open('db.json', 'w') as f:
|
||||||
|
f.write(json.dumps(db))
|
||||||
|
response = session.post(item['url'], json=item['json'])
|
||||||
|
print(item, response)
|
||||||
|
|
||||||
|
|
||||||
|
threading.Thread(target=worker).start()
|
||||||
|
|
||||||
|
|
||||||
def register_racer():
|
def register_racer():
|
||||||
card_id = last_card
|
card_id = last_card
|
||||||
index = window.racers.currentIndex()
|
index = window.racers.currentIndex()
|
||||||
|
if not index:
|
||||||
|
mb = QtWidgets.QMessageBox(text='Prosím vyberte závodníka!')
|
||||||
|
mb.exec()
|
||||||
|
return
|
||||||
racer_id = int(index.data().split(' ')[-1])
|
racer_id = int(index.data().split(' ')[-1])
|
||||||
try:
|
try:
|
||||||
starting_number = max(filter(lambda r: r['starting_number'], racers), key=lambda racer: racer['starting_number'])['starting_number'] + 1
|
starting_number = max(filter(lambda r: r['starting_number'], racers), key=lambda racer: racer['starting_number'])['starting_number'] + 1
|
||||||
except ValueError:
|
except ValueError:
|
||||||
starting_number = 1
|
starting_number = 1
|
||||||
|
|
||||||
response = session.post(config['host'] + '/api/card/register', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id})
|
queue.put({
|
||||||
if response.status_code == 400:
|
'url': config['host'] + '/api/card/register',
|
||||||
mb = QtWidgets.QMessageBox(text="Zaregistrování selhalo! Je špatně vyplněné startovní číslo nebo karta už je přiřazená k jinému závodníku.")
|
'json': {'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id}
|
||||||
mb.exec()
|
})
|
||||||
return
|
|
||||||
if response.status_code != 200:
|
|
||||||
mb = QtWidgets.QMessageBox(text=f"Neznámá chyba! {response.status_code} {response.content}")
|
|
||||||
mb.exec()
|
|
||||||
return
|
|
||||||
|
|
||||||
racer = list(filter(lambda x: x['racer_id'] == racer_id, racers))[0]
|
racer = list(filter(lambda x: x['racer_id'] == racer_id, racers))[0]
|
||||||
racer['card_id'] = card_id
|
racer['card_id'] = card_id
|
||||||
racer['starting_number'] = starting_number
|
racer['starting_number'] = starting_number
|
||||||
racer['started'] = False
|
racer['started'] = False
|
||||||
updateRacers()
|
updateRacers()
|
||||||
mb = QtWidgets.QMessageBox(text=f"Úspěšné zaregistrování závodníka se startovním číslem {starting_number}!")
|
mb = QtWidgets.QMessageBox(text=f"Úspěšné zaregistrování závodníka {racer['first_name']} {racer['last_name']} se startovním číslem {starting_number}!")
|
||||||
mb.exec()
|
mb.exec()
|
||||||
|
|
||||||
|
|
||||||
@ -101,36 +126,28 @@ def updateLastCard(card_id):
|
|||||||
racer = findByCard(card_id)
|
racer = findByCard(card_id)
|
||||||
if racer:
|
if racer:
|
||||||
if racer['started']:
|
if racer['started']:
|
||||||
response = session.post(config['host'] + '/api/station/register', json={'card_id': card_id, 'time': time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 6})
|
queue.put({
|
||||||
if response != 200:
|
'url': config['host'] + '/api/station/register',
|
||||||
mb = QtWidgets.QMessageBox(text="Selhalo zapsání na Stanici!")
|
'json': {'card_id': card_id, 'time': time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 6}
|
||||||
mb.exec()
|
})
|
||||||
return
|
|
||||||
|
|
||||||
racer = list(filter(lambda x: x['card_id'] == card_id, racers))[0]
|
racer = list(filter(lambda x: x['card_id'] == card_id, racers))[0]
|
||||||
starting_number = racer['starting_number']
|
starting_number = racer['starting_number']
|
||||||
racer_id = racer['racer_id']
|
racer_id = racer['racer_id']
|
||||||
racer['card_id'] = None
|
racer['card_id'] = None
|
||||||
|
|
||||||
response = session.post(config['host'] + '/api/card/unregister', json={'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id})
|
queue.put({
|
||||||
|
'url': config['host'] + '/api/card/unregister',
|
||||||
if response.status_code != 200:
|
'json': {'racer_id': racer_id, 'starting_number': starting_number, 'card_id': card_id},
|
||||||
mb = QtWidgets.QMessageBox(text="Registrace na stanici proběhla úspěšně, ale karta nebyla odhlášena!")
|
})
|
||||||
mb.exec()
|
#mb = QtWidgets.QMessageBox(text=f"Úspěšné odhlášení závodníka {starting_number}!")
|
||||||
return
|
#mb.exec()
|
||||||
|
|
||||||
json = response.json()
|
|
||||||
|
|
||||||
mb = QtWidgets.QMessageBox(text=f"Úspěšné odhlášení závodníka! Finální čas je: {json['time']}")
|
|
||||||
mb.exec()
|
|
||||||
else:
|
else:
|
||||||
response = session.post(config['host'] + '/api/station/register', json={'card_id': card_id, 'time': last_time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 1})
|
queue.put({
|
||||||
if response.status_code != 200:
|
'url': config['host'] + '/api/station/register',
|
||||||
mb = QtWidgets.QMessageBox(text="Nastala nějaká chyba na serveru!")
|
'json': {'card_id': card_id, 'time': last_time.strftime('%d.%m.%Y %H:%M:%S.%f'), 'station_id': 1},
|
||||||
mb.exec()
|
})
|
||||||
return
|
#mb = QtWidgets.QMessageBox(text=f"Úspěšné odstartování závodníka {racer['starting_number']}!")
|
||||||
mb = QtWidgets.QMessageBox(text=f"Úspěšné odstartování závodníka {racer['starting_number']}!")
|
#mb.exec()
|
||||||
mb.exec()
|
|
||||||
racer['started'] = True
|
racer['started'] = True
|
||||||
|
|
||||||
|
|
||||||
@ -166,7 +183,7 @@ class UsbCardReader():
|
|||||||
receivedNumber = 10 * receivedNumber + receivedDigit
|
receivedNumber = 10 * receivedNumber + receivedDigit
|
||||||
|
|
||||||
if (( control[0] == 0 )) & (( control[2] == 40 )) & (( not receivedNumber == 0 )):
|
if (( control[0] == 0 )) & (( control[2] == 40 )) & (( not receivedNumber == 0 )):
|
||||||
if last_card != receivedNumber or datetime.datetime.now() - last_time > datetime.timedelta(seconds=10):
|
if last_card != receivedNumber or datetime.datetime.now() - last_time > datetime.timedelta(seconds=60):
|
||||||
last_time = datetime.datetime.now()
|
last_time = datetime.datetime.now()
|
||||||
last_card = receivedNumber
|
last_card = receivedNumber
|
||||||
updateLastCard(receivedNumber)
|
updateLastCard(receivedNumber)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user