- add: support for multible rfid tags
This commit is contained in:
@@ -52,11 +52,11 @@ def get_user(u):
|
||||
u.password=row[2]
|
||||
u.longname=row[3]
|
||||
u.email=row[4]
|
||||
u.rfid_id=row[5]
|
||||
u.isblack=row[6]
|
||||
u.isbaron=row[7]
|
||||
u.isshown=row[8]
|
||||
u.autoblack=row[9]
|
||||
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||
logging.info(u)
|
||||
return u
|
||||
|
||||
@@ -70,29 +70,37 @@ def get_user_by_name(name):
|
||||
u.password=row[2]
|
||||
u.longname=row[3]
|
||||
u.email=row[4]
|
||||
u.rfid_id=row[5]
|
||||
u.isblack=row[6]
|
||||
u.isbaron=row[7]
|
||||
u.isshown=row[8]
|
||||
u.autoblack=row[9]
|
||||
logging.debug(u)
|
||||
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||
return u
|
||||
|
||||
def get_user_by_rfid(rfidid):
|
||||
row = query_db("SELECT * FROM USERS WHERE RFID_ID = ?", [rfidid], one=True)
|
||||
def get_user_by_id(id):
|
||||
row = query_db("SELECT * FROM USERS WHERE ID = ?", [id], one=True)
|
||||
u = User()
|
||||
if row is None:
|
||||
return None
|
||||
return None
|
||||
u.id=row[0]
|
||||
u.name=row[1]
|
||||
u.password=row[2]
|
||||
u.longname=row[3]
|
||||
u.email=row[4]
|
||||
u.rfid_id=row[5]
|
||||
u.isblack=row[6]
|
||||
u.isbaron=row[7]
|
||||
u.isshown=row[8]
|
||||
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)
|
||||
return u
|
||||
|
||||
@@ -106,23 +114,49 @@ def get_users():
|
||||
u.password=row[2]
|
||||
u.longname=row[3]
|
||||
u.email=row[4]
|
||||
u.rfid_id=row[5]
|
||||
u.isblack=row[6]
|
||||
u.isbaron=row[7]
|
||||
u.isshown=row[8]
|
||||
u.autoblack=row[9]
|
||||
u.rfid_id = get_rfid_ids_by_userid(u.id)
|
||||
users.append(u)
|
||||
return users
|
||||
|
||||
|
||||
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()
|
||||
|
||||
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):
|
||||
#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()
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<td>{{user.name}}</td>
|
||||
<td>{{user.longname}}</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.isbaron %} ☑ {% 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>
|
||||
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>
|
||||
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">
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
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>
|
||||
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>
|
||||
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>
|
||||
|
||||
@@ -75,6 +75,16 @@ CREATE TABLE Deposits(
|
||||
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
|
||||
|
||||
|
||||
|
||||
BIN
test/database.db
BIN
test/database.db
Binary file not shown.
Reference in New Issue
Block a user