[chronojump-server] New table rfidHistory to store the historical information of the RFIDs Now the server checks against



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]