- add: support for multible rfid tags
This commit is contained in:
@@ -52,11 +52,11 @@ def get_user(u):
|
|||||||
u.password=row[2]
|
u.password=row[2]
|
||||||
u.longname=row[3]
|
u.longname=row[3]
|
||||||
u.email=row[4]
|
u.email=row[4]
|
||||||
u.rfid_id=row[5]
|
|
||||||
u.isblack=row[6]
|
u.isblack=row[6]
|
||||||
u.isbaron=row[7]
|
u.isbaron=row[7]
|
||||||
u.isshown=row[8]
|
u.isshown=row[8]
|
||||||
u.autoblack=row[9]
|
u.autoblack=row[9]
|
||||||
|
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||||
logging.info(u)
|
logging.info(u)
|
||||||
return u
|
return u
|
||||||
|
|
||||||
@@ -70,16 +70,16 @@ def get_user_by_name(name):
|
|||||||
u.password=row[2]
|
u.password=row[2]
|
||||||
u.longname=row[3]
|
u.longname=row[3]
|
||||||
u.email=row[4]
|
u.email=row[4]
|
||||||
u.rfid_id=row[5]
|
|
||||||
u.isblack=row[6]
|
u.isblack=row[6]
|
||||||
u.isbaron=row[7]
|
u.isbaron=row[7]
|
||||||
u.isshown=row[8]
|
u.isshown=row[8]
|
||||||
u.autoblack=row[9]
|
u.autoblack=row[9]
|
||||||
logging.debug(u)
|
logging.debug(u)
|
||||||
|
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||||
return u
|
return u
|
||||||
|
|
||||||
def get_user_by_rfid(rfidid):
|
def get_user_by_id(id):
|
||||||
row = query_db("SELECT * FROM USERS WHERE RFID_ID = ?", [rfidid], one=True)
|
row = query_db("SELECT * FROM USERS WHERE ID = ?", [id], one=True)
|
||||||
u = User()
|
u = User()
|
||||||
if row is None:
|
if row is None:
|
||||||
return None
|
return None
|
||||||
@@ -88,11 +88,19 @@ def get_user_by_rfid(rfidid):
|
|||||||
u.password=row[2]
|
u.password=row[2]
|
||||||
u.longname=row[3]
|
u.longname=row[3]
|
||||||
u.email=row[4]
|
u.email=row[4]
|
||||||
u.rfid_id=row[5]
|
|
||||||
u.isblack=row[6]
|
u.isblack=row[6]
|
||||||
u.isbaron=row[7]
|
u.isbaron=row[7]
|
||||||
u.isshown=row[8]
|
u.isshown=row[8]
|
||||||
u.autoblack=row[9]
|
u.autoblack=row[9]
|
||||||
|
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||||
|
logging.debug(u)
|
||||||
|
return u
|
||||||
|
|
||||||
|
def get_user_by_rfid(rfidid):
|
||||||
|
row = query_db("SELECT * FROM rfid WHERE RFID_ID = ?", [rfidid], one=True)
|
||||||
|
if row is None:
|
||||||
|
return None
|
||||||
|
u = get_user_by_id(row[1])
|
||||||
logging.debug(u)
|
logging.debug(u)
|
||||||
return u
|
return u
|
||||||
|
|
||||||
@@ -106,23 +114,49 @@ def get_users():
|
|||||||
u.password=row[2]
|
u.password=row[2]
|
||||||
u.longname=row[3]
|
u.longname=row[3]
|
||||||
u.email=row[4]
|
u.email=row[4]
|
||||||
u.rfid_id=row[5]
|
|
||||||
u.isblack=row[6]
|
u.isblack=row[6]
|
||||||
u.isbaron=row[7]
|
u.isbaron=row[7]
|
||||||
u.isshown=row[8]
|
u.isshown=row[8]
|
||||||
u.autoblack=row[9]
|
u.autoblack=row[9]
|
||||||
|
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||||
users.append(u)
|
users.append(u)
|
||||||
return users
|
return users
|
||||||
|
|
||||||
|
|
||||||
def add_user(u):
|
def add_user(u):
|
||||||
query_db("INSERT INTO USERS (NAME, PASSWORD, LONGNAME, EMAIL, RFID_ID) VALUES (? ,? ,?, ?, ?)", (u.name, u.password, u.longname, u.email, u.rfid_id))
|
query_db("INSERT INTO USERS (NAME, PASSWORD, LONGNAME, EMAIL) VALUES (? ,? ,?, ?)", (u.name, u.password, u.longname, u.email))
|
||||||
|
user_id = get_user_by_name(u.name).id
|
||||||
|
set_rfid_to_userid(u.rfid_id, user_id)
|
||||||
get_db().commit()
|
get_db().commit()
|
||||||
|
|
||||||
|
def get_rfid_ids_by_userid(user_id):
|
||||||
|
rows = query_db("SELECT * FROM Rfid WHERE userid = ?", [user_id])
|
||||||
|
rfid_ids = []
|
||||||
|
for row in rows:
|
||||||
|
rfid_ids.append(row[2])
|
||||||
|
return rfid_ids
|
||||||
|
|
||||||
|
def set_rfid_to_userid(rfid_ids, user_id):
|
||||||
|
new_rfids = rfid_ids.replace(" ","").split(";")
|
||||||
|
|
||||||
|
for rfid_id in new_rfids: # add new rfid_ids
|
||||||
|
u = get_user_by_rfid(rfid_id)
|
||||||
|
if not u: #rfid id is not assigned to a user, so it should be added
|
||||||
|
add_rfid_id(rfid_id, user_id)
|
||||||
|
|
||||||
|
for old_rfid in get_rfid_ids_by_userid(user_id):
|
||||||
|
if old_rfid not in new_rfids:
|
||||||
|
query_db("DELETE FROM Rfid WHERE rfid_id = ?", (old_rfid, ))
|
||||||
|
|
||||||
|
|
||||||
|
def add_rfid_id(rfid_id, userid):
|
||||||
|
rfid_id = rfid_id.lower();
|
||||||
|
query_db("INSERT INTO Rfid (userid, rfid_id) values (?, ?)", (userid, rfid_id))
|
||||||
|
|
||||||
def update_user(u):
|
def update_user(u):
|
||||||
#query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id))
|
#query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id))
|
||||||
query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, RFID_ID=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=? WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.autoblack, u.id))
|
query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, ISBLACK=?, ISBARON=?, ISSHOWN=?, AUTOBLACK=? WHERE ID=?", (u.name, u.longname, u.email, u.isblack, u.isbaron, u.isshown, u.autoblack, u.id))
|
||||||
|
set_rfid_to_userid(u.rfid_id, u.id)
|
||||||
get_db().commit()
|
get_db().commit()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<td>{{user.name}}</td>
|
<td>{{user.name}}</td>
|
||||||
<td>{{user.longname}}</td>
|
<td>{{user.longname}}</td>
|
||||||
<td>{{user.email}}</td>
|
<td>{{user.email}}</td>
|
||||||
<td>{{user.rfid_id}}</td>
|
<td>{% if user.rfid_id %} {% for rfid_id in user.rfid_id %} {{rfid_id}};{% endfor %} {% endif %}</td>
|
||||||
<td>{% if user.isblack %} ☑ {% else %} ☐ {% endif %} </td>
|
<td>{% if user.isblack %} ☑ {% else %} ☐ {% endif %} </td>
|
||||||
<td>{% if user.isbaron %} ☑ {% else %} ☐ {% endif %} </td>
|
<td>{% if user.isbaron %} ☑ {% else %} ☐ {% endif %} </td>
|
||||||
<td>{% if user.isshown %} ☑ {% else %} ☐ {% endif %} </td>
|
<td>{% if user.isshown %} ☑ {% else %} ☐ {% endif %} </td>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
Passwort wiederholen:<br><input type="password" name=password2 required placeholder="Password"><br>
|
Passwort wiederholen:<br><input type="password" name=password2 required placeholder="Password"><br>
|
||||||
Name:<br><input type="text" name=longname required placeholder="Vorname Nachname"><br>
|
Name:<br><input type="text" name=longname required placeholder="Vorname Nachname"><br>
|
||||||
Email:<br><input type="email" name=email required placeholder="petra@fet.at"><br>
|
Email:<br><input type="email" name=email required placeholder="petra@fet.at"><br>
|
||||||
Euml ID:<br><input type="text" name=rfid_id required placeholder="0xDEADBEEF"><br>
|
Euml ID (falls mehrere durch ; trennen):<br><input type="text" name=rfid_id placeholder="0xDEADBEEF"><br>
|
||||||
<input type="submit" value="Hinzufügen">
|
<input type="submit" value="Hinzufügen">
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
Username:<br><input type="text" name="username" required value="{{user_to_edit.name}}" /> <br>
|
Username:<br><input type="text" name="username" required value="{{user_to_edit.name}}" /> <br>
|
||||||
Name:<br><input type="text" name="longname" required value="{{user_to_edit.longname}}" /><br>
|
Name:<br><input type="text" name="longname" required value="{{user_to_edit.longname}}" /><br>
|
||||||
Email:<br><input type="email" name="email" required value="{{user_to_edit.email}}" /><br>
|
Email:<br><input type="email" name="email" required value="{{user_to_edit.email}}" /><br>
|
||||||
Euml ID:<br><input type="text" name="rfid_id" required value="{{user_to_edit.rfid_id}}" /><br>
|
Euml ID: (falls mehrere durch ; trennen)<br><input type="text" name="rfid_id" value="{% if user_to_edit.rfid_id %}{% for rfid_id in user_to_edit.rfid_id %}{{rfid_id}};{% endfor %}{% endif %}" /><br>
|
||||||
Geschwärzt: <input type="checkbox" name="isblack" {% if user_to_edit.isblack %} checked {% endif %} /> <br>
|
Geschwärzt: <input type="checkbox" name="isblack" {% if user_to_edit.isblack %} checked {% endif %} /> <br>
|
||||||
Baron: <input type="checkbox" name="isbaron" {% if user_to_edit.isbaron %} checked {% endif %} /> <br>
|
Baron: <input type="checkbox" name="isbaron" {% if user_to_edit.isbaron %} checked {% endif %} /> <br>
|
||||||
Angezeigt: <input type="checkbox" name="isshown" {% if user_to_edit.isshown %} checked {% endif %} /><br>
|
Angezeigt: <input type="checkbox" name="isshown" {% if user_to_edit.isshown %} checked {% endif %} /><br>
|
||||||
|
|||||||
@@ -75,6 +75,16 @@ CREATE TABLE Deposits(
|
|||||||
FOREIGN KEY(userid) REFERENCES USERS(id)
|
FOREIGN KEY(userid) REFERENCES USERS(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Rfid(
|
||||||
|
di INTEGER PRIMARY KEY,
|
||||||
|
userid INTEGER NOT NULL,
|
||||||
|
rfid_id TEXT,
|
||||||
|
is_valid BOOLEAN DEFAULT 1,
|
||||||
|
|
||||||
|
FOREIGN KEY(userid) REFERENCES USERS(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
-- The table Config stores basic config data, this is for the admins and the barons
|
-- The table Config stores basic config data, this is for the admins and the barons
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
test/database.db
BIN
test/database.db
Binary file not shown.
Reference in New Issue
Block a user