[chronojump-server] New table rfidHistory to store the historical information of the RFIDs Now the server checks against
- From: Marcos Venteo Garcia <mventeo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump-server] New table rfidHistory to store the historical information of the RFIDs Now the server checks against
- Date: Mon, 3 Jul 2017 19:12:42 +0000 (UTC)
commit be14c713c09e1781b855e8ce7aa4e989a91af45c
Author: Marcos Venteo García <mventeo gmail com>
Date: Mon Jul 3 21:12:32 2017 +0200
New table rfidHistory to store the historical information of the RFIDs
Now the server checks against the new table rfidHistory if the RFID has been registered before.
Each time a new player or the rfid is updated, the server add a new record in rfidHistory Table
chronojumpserver/api.py | 10 +++++-----
chronojumpserver/models.py | 23 +++++++++++++++++++++++
chronojumpserver/views.py | 16 +++++++++++++++-
3 files changed, 43 insertions(+), 6 deletions(-)
---
diff --git a/chronojumpserver/api.py b/chronojumpserver/api.py
index 8327adb..ff905e1 100755
--- a/chronojumpserver/api.py
+++ b/chronojumpserver/api.py
@@ -6,7 +6,7 @@
from chronojumpserver import app
from chronojumpserver.database import db_session
from chronojumpserver.models import Person, ResultEncoder, Station, Task
-from chronojumpserver.models import ResultSprint, Exercise
+from chronojumpserver.models import ResultSprint, Exercise, RFIDHistory
from flask import jsonify, request
from sqlalchemy.exc import IntegrityError, InvalidRequestError, OperationalError
from time import sleep
@@ -78,7 +78,6 @@ def register_rfid():
"""Call an external program to read rfid and return the value read."""
status_code = 200
msg = ""
-
# From original crhonojump-flask source read RFID
rfidFile = '/tmp/chronojump_rfid.txt'
if os.environ.get('NO_MONO', False):
@@ -101,13 +100,14 @@ def register_rfid():
if rfid:
"""Check if the RFID exists."""
- p = Person.query.filter(Person.rfid == rfid).first()
+ p = RFIDHistory.query.filter(RFIDHistory.rfid == rfid).first()
if p:
+ # Aquest RFID ja ha estat registrada amb anterioritat.
status_code = 404
- msg = "RFID ERROR: El RFID %s ja està assignat a un altre jugador." % rfid
+ msg = "ATENCIÓ: El RFID %s ja ha estat registrat amb anterioritat." % rfid
else:
status_code = 404
- msg = "RFID ERROR: No s'ha pogut llegir cap rfid en el temps assignat."
+ msg = "ERROR: No s'ha pogut llegir cap RFID en el temps assignat."
# Return response
response = jsonify(rfid=rfid, msg=msg)
diff --git a/chronojumpserver/models.py b/chronojumpserver/models.py
index 8fcdf8d..91a2593 100755
--- a/chronojumpserver/models.py
+++ b/chronojumpserver/models.py
@@ -77,6 +77,29 @@ class Person(HelperMixin, Base):
db_session.commit()
+class RFIDHistory(Base):
+ """RFIDHistory class to control rfid history."""
+
+ __tablename__ = 'rfidHistory'
+
+ rfid = Column(String(23), primary_key=True)
+ person_id = Column(Integer, nullable=False)
+
+ def __init__(self, rfid=None, person_id=None):
+ self.rfid = rfid
+ self.person_id = person_id
+
+ @property
+ def serialize(self):
+ return {
+ 'rfid': self.rfid,
+ 'person_id': self.person_id
+ }
+
+ def __repr__(self):
+ return '<RFIDHistory %r,%d>' % (self.rfid, self.person_id)
+
+
class Station(HelperMixin, Base):
"""Station model.
diff --git a/chronojumpserver/views.py b/chronojumpserver/views.py
index 2e896ec..8329916 100755
--- a/chronojumpserver/views.py
+++ b/chronojumpserver/views.py
@@ -3,7 +3,7 @@
from chronojumpserver import app
from flask import render_template, request, redirect, url_for
from flask_wtf.file import FileField
-from chronojumpserver.models import Person, Station
+from chronojumpserver.models import Person, Station, RFIDHistory
from chronojumpserver.forms import PersonForm
from chronojumpserver.database import db_session
@@ -130,6 +130,14 @@ def player_detail(player_id):
if form.photo.data:
_update_player_photo(player_id, form.photo.data, player.imageName)
+ # If rfid is new, add the new rfid into history table
+ r = RFIDHistory.query.filter(RFIDHistory.rfid == form.rfid.data).first()
+ if not r:
+ # Add this new rfid into rfidHistory table
+ r = RFIDHistory(rfid=form.rfid.data,
+ person_id=player_id)
+ db_session.add(r)
+ db_session.commit()
# Update done
@@ -167,6 +175,12 @@ def add_player():
if form.photo.data:
_update_player_photo(player.id, form.photo.data, None)
+ # Add the rfid into rfidHistory table
+ r = RFIDHistory(rfid=form.rfid.data,
+ person_id=player_id)
+ db_session.add(r)
+ db_session.commit()
+
msg = "Ej jugador %s s'ha creat correctament." % (form.fullname.data,)
return redirect('/player_list')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]