Browse Source

complete

master
enne2 2 years ago
parent
commit
87c3363ba2
  1. 1
      .nicegui/storage_user_952a094b-3f32-475c-81e6-2a15d8fa4b33.json
  2. 1
      .nicegui/storage_user_ebbb4383-dc23-4773-a380-dc0ffd0fe85b.json
  3. BIN
      assets/favicon.ico
  4. 22
      csvz.py
  5. 4
      db/letsswing/.prettierrc
  6. 215
      db/letsswing/lezioni.json
  7. 5
      db/letsswing/livelli.json
  8. 4
      db/letsswing/sedi.json
  9. 88
      db/letsswing/users.json
  10. 134
      main.py
  11. BIN
      pages/__pycache__/manager.cpython-311.pyc
  12. BIN
      pages/__pycache__/user.cpython-311.pyc
  13. 68
      pages/manager.py
  14. 47
      pages/user.py
  15. 50
      tinymongoz.py

1
.nicegui/storage_user_952a094b-3f32-475c-81e6-2a15d8fa4b33.json

@ -0,0 +1 @@
{"username": "admin", "authenticated": true, "id": 0, "level": 0, "name": "Matteo Benedetto"}

1
.nicegui/storage_user_ebbb4383-dc23-4773-a380-dc0ffd0fe85b.json

@ -0,0 +1 @@
{"username": "admin", "authenticated": true, "id": 0, "level": 0, "name": "Matteo Benedetto"}

BIN
assets/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

22
csvz.py

@ -0,0 +1,22 @@
import csv
import json
csvfile = open('allievi.csv', 'r')
jsonfile = open('file.json', 'w')
reader = csv.reader(csvfile)
next(reader, None) # skip the headers
for row in reader:
data = {}
data['nome'] = row[1]
data['cognome'] = row[2]
data['livello'] = int(row[0].split()[1]) # assuming 'Beginner 1' should become 1
data['sede'] = 0 # static value
data['telefono'] = row[3]
data['instagram'] = '@' + row[1] # assuming Instagram handle is @<name>
data['email'] = row[4] if row[4] else "" # default email if not provided
data['pagamenti'] = []
data['presenze'] = []
json.dump(data, jsonfile)
jsonfile.write('\n')

4
db/letsswing/.prettierrc

@ -0,0 +1,4 @@
{
"tabWidth": 2,
"useTabs": false
}

215
db/letsswing/lezioni.json

@ -0,0 +1,215 @@
[
{"sede": 1, "livello": 0, "data": "2023-10-02 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71b9"}},
{"sede": 0, "livello": 0, "data": "2023-10-04 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ba"}},
{"sede": 0, "livello": 1, "data": "2023-10-04 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71bb"}},
{"sede": 1, "livello": 0, "data": "2023-10-09 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71bc"}},
{"sede": 0, "livello": 0, "data": "2023-10-11 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71bd"}},
{"sede": 0, "livello": 1, "data": "2023-10-11 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71be"}},
{"sede": 1, "livello": 0, "data": "2023-10-16 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71bf"}},
{"sede": 0, "livello": 0, "data": "2023-10-18 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c0"}},
{"sede": 0, "livello": 1, "data": "2023-10-18 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71c1"}},
{"sede": 1, "livello": 0, "data": "2023-10-23 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c2"}},
{"sede": 0, "livello": 0, "data": "2023-10-25 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c3"}},
{"sede": 0, "livello": 1, "data": "2023-10-25 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71c4"}},
{"sede": 1, "livello": 0, "data": "2023-10-30 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c5"}},
{"sede": 0, "livello": 0, "data": "2023-11-01 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c6"}},
{"sede": 0, "livello": 1, "data": "2023-11-01 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71c7"}},
{"sede": 1, "livello": 0, "data": "2023-11-06 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c8"}},
{"sede": 0, "livello": 0, "data": "2023-11-08 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71c9"}},
{"sede": 0, "livello": 1, "data": "2023-11-08 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71ca"}},
{"sede": 1, "livello": 0, "data": "2023-11-13 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71cb"}},
{"sede": 0, "livello": 0, "data": "2023-11-15 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71cc"}},
{"sede": 0, "livello": 1, "data": "2023-11-15 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71cd"}},
{"sede": 1, "livello": 0, "data": "2023-11-20 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ce"}},
{"sede": 0, "livello": 0, "data": "2023-11-22 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71cf"}},
{"sede": 0, "livello": 1, "data": "2023-11-22 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71d0"}},
{"sede": 1, "livello": 0, "data": "2023-11-27 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d1"}},
{"sede": 0, "livello": 0, "data": "2023-11-29 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d2"}},
{"sede": 0, "livello": 1, "data": "2023-11-29 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71d3"}},
{"sede": 1, "livello": 0, "data": "2023-12-04 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d4"}},
{"sede": 0, "livello": 0, "data": "2023-12-06 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d5"}},
{"sede": 0, "livello": 1, "data": "2023-12-06 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71d6"}},
{"sede": 1, "livello": 0, "data": "2023-12-11 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d7"}},
{"sede": 0, "livello": 0, "data": "2023-12-13 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71d8"}},
{"sede": 0, "livello": 1, "data": "2023-12-13 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71d9"}},
{"sede": 1, "livello": 0, "data": "2023-12-18 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71da"}},
{"sede": 0, "livello": 0, "data": "2023-12-20 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71db"}},
{"sede": 0, "livello": 1, "data": "2023-12-20 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71dc"}},
{"sede": 1, "livello": 0, "data": "2023-12-25 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71dd"}},
{"sede": 0, "livello": 0, "data": "2023-12-27 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71de"}},
{"sede": 0, "livello": 1, "data": "2023-12-27 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71df"}},
{"sede": 1, "livello": 0, "data": "2024-01-01 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e0"}},
{"sede": 0, "livello": 0, "data": "2024-01-03 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e1"}},
{"sede": 0, "livello": 1, "data": "2024-01-03 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71e2"}},
{"sede": 1, "livello": 0, "data": "2024-01-08 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e3"}},
{"sede": 0, "livello": 0, "data": "2024-01-10 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e4"}},
{"sede": 0, "livello": 1, "data": "2024-01-10 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71e5"}},
{"sede": 1, "livello": 0, "data": "2024-01-15 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e6"}},
{"sede": 0, "livello": 0, "data": "2024-01-17 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e7"}},
{"sede": 0, "livello": 1, "data": "2024-01-17 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71e8"}},
{"sede": 1, "livello": 0, "data": "2024-01-22 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71e9"}},
{"sede": 0, "livello": 0, "data": "2024-01-24 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ea"}},
{"sede": 0, "livello": 1, "data": "2024-01-24 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71eb"}},
{"sede": 1, "livello": 0, "data": "2024-01-29 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ec"}},
{"sede": 0, "livello": 0, "data": "2024-01-31 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ed"}},
{"sede": 0, "livello": 1, "data": "2024-01-31 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71ee"}},
{"sede": 1, "livello": 0, "data": "2024-02-05 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ef"}},
{"sede": 0, "livello": 0, "data": "2024-02-07 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f0"}},
{"sede": 0, "livello": 1, "data": "2024-02-07 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71f1"}},
{"sede": 1, "livello": 0, "data": "2024-02-12 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f2"}},
{"sede": 0, "livello": 0, "data": "2024-02-14 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f3"}},
{"sede": 0, "livello": 1, "data": "2024-02-14 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71f4"}},
{"sede": 1, "livello": 0, "data": "2024-02-19 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f5"}},
{"sede": 0, "livello": 0, "data": "2024-02-21 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f6"}},
{"sede": 0, "livello": 1, "data": "2024-02-21 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71f7"}},
{"sede": 1, "livello": 0, "data": "2024-02-26 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f8"}},
{"sede": 0, "livello": 0, "data": "2024-02-28 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71f9"}},
{"sede": 0, "livello": 1, "data": "2024-02-28 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71fa"}},
{"sede": 1, "livello": 0, "data": "2024-03-04 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71fb"}},
{"sede": 0, "livello": 0, "data": "2024-03-06 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71fc"}},
{"sede": 0, "livello": 1, "data": "2024-03-06 20:30:00", "_id": {"$oid": "65075496af4e5761eefc71fd"}},
{"sede": 1, "livello": 0, "data": "2024-03-11 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71fe"}},
{"sede": 0, "livello": 0, "data": "2024-03-13 19:30:00", "_id": {"$oid": "65075496af4e5761eefc71ff"}},
{"sede": 0, "livello": 1, "data": "2024-03-13 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7200"}},
{"sede": 1, "livello": 0, "data": "2024-03-18 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7201"}},
{"sede": 0, "livello": 0, "data": "2024-03-20 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7202"}},
{"sede": 0, "livello": 1, "data": "2024-03-20 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7203"}},
{"sede": 1, "livello": 0, "data": "2024-03-25 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7204"}},
{"sede": 0, "livello": 0, "data": "2024-03-27 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7205"}},
{"sede": 0, "livello": 1, "data": "2024-03-27 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7206"}},
{"sede": 1, "livello": 0, "data": "2024-04-01 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7207"}},
{"sede": 0, "livello": 0, "data": "2024-04-03 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7208"}},
{"sede": 0, "livello": 1, "data": "2024-04-03 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7209"}},
{"sede": 1, "livello": 0, "data": "2024-04-08 19:30:00", "_id": {"$oid": "65075496af4e5761eefc720a"}},
{"sede": 0, "livello": 0, "data": "2024-04-10 19:30:00", "_id": {"$oid": "65075496af4e5761eefc720b"}},
{"sede": 0, "livello": 1, "data": "2024-04-10 20:30:00", "_id": {"$oid": "65075496af4e5761eefc720c"}},
{"sede": 1, "livello": 0, "data": "2024-04-15 19:30:00", "_id": {"$oid": "65075496af4e5761eefc720d"}},
{"sede": 0, "livello": 0, "data": "2024-04-17 19:30:00", "_id": {"$oid": "65075496af4e5761eefc720e"}},
{"sede": 0, "livello": 1, "data": "2024-04-17 20:30:00", "_id": {"$oid": "65075496af4e5761eefc720f"}},
{"sede": 1, "livello": 0, "data": "2024-04-22 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7210"}},
{"sede": 0, "livello": 0, "data": "2024-04-24 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7211"}},
{"sede": 0, "livello": 1, "data": "2024-04-24 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7212"}},
{"sede": 1, "livello": 0, "data": "2024-04-29 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7213"}},
{"sede": 0, "livello": 0, "data": "2024-05-01 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7214"}},
{"sede": 0, "livello": 1, "data": "2024-05-01 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7215"}},
{"sede": 1, "livello": 0, "data": "2024-05-06 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7216"}},
{"sede": 0, "livello": 0, "data": "2024-05-08 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7217"}},
{"sede": 0, "livello": 1, "data": "2024-05-08 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7218"}},
{"sede": 1, "livello": 0, "data": "2024-05-13 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7219"}},
{"sede": 0, "livello": 0, "data": "2024-05-15 19:30:00", "_id": {"$oid": "65075496af4e5761eefc721a"}},
{"sede": 0, "livello": 1, "data": "2024-05-15 20:30:00", "_id": {"$oid": "65075496af4e5761eefc721b"}},
{"sede": 1, "livello": 0, "data": "2024-05-20 19:30:00", "_id": {"$oid": "65075496af4e5761eefc721c"}},
{"sede": 0, "livello": 0, "data": "2024-05-22 19:30:00", "_id": {"$oid": "65075496af4e5761eefc721d"}},
{"sede": 0, "livello": 1, "data": "2024-05-22 20:30:00", "_id": {"$oid": "65075496af4e5761eefc721e"}},
{"sede": 1, "livello": 0, "data": "2024-05-27 19:30:00", "_id": {"$oid": "65075496af4e5761eefc721f"}},
{"sede": 0, "livello": 0, "data": "2024-05-29 19:30:00", "_id": {"$oid": "65075496af4e5761eefc7220"}},
{"sede": 0, "livello": 1, "data": "2024-05-29 20:30:00", "_id": {"$oid": "65075496af4e5761eefc7221"}},
{"sede": 1, "livello": 0, "data": "2023-09-25 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9a6"}},
{"sede": 0, "livello": 0, "data": "2023-09-27 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9a7"}},
{"sede": 0, "livello": 1, "data": "2023-09-27 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9a8"}},
{"sede": 1, "livello": 0, "data": "2023-10-02 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9a9"}},
{"sede": 0, "livello": 0, "data": "2023-10-04 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9aa"}},
{"sede": 0, "livello": 1, "data": "2023-10-04 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ab"}},
{"sede": 1, "livello": 0, "data": "2023-10-09 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ac"}},
{"sede": 0, "livello": 0, "data": "2023-10-11 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ad"}},
{"sede": 0, "livello": 1, "data": "2023-10-11 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ae"}},
{"sede": 1, "livello": 0, "data": "2023-10-16 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9af"}},
{"sede": 0, "livello": 0, "data": "2023-10-18 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b0"}},
{"sede": 0, "livello": 1, "data": "2023-10-18 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9b1"}},
{"sede": 1, "livello": 0, "data": "2023-10-23 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b2"}},
{"sede": 0, "livello": 0, "data": "2023-10-25 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b3"}},
{"sede": 0, "livello": 1, "data": "2023-10-25 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9b4"}},
{"sede": 1, "livello": 0, "data": "2023-10-30 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b5"}},
{"sede": 0, "livello": 0, "data": "2023-11-01 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b6"}},
{"sede": 0, "livello": 1, "data": "2023-11-01 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9b7"}},
{"sede": 1, "livello": 0, "data": "2023-11-06 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b8"}},
{"sede": 0, "livello": 0, "data": "2023-11-08 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9b9"}},
{"sede": 0, "livello": 1, "data": "2023-11-08 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ba"}},
{"sede": 1, "livello": 0, "data": "2023-11-13 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9bb"}},
{"sede": 0, "livello": 0, "data": "2023-11-15 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9bc"}},
{"sede": 0, "livello": 1, "data": "2023-11-15 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9bd"}},
{"sede": 1, "livello": 0, "data": "2023-11-20 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9be"}},
{"sede": 0, "livello": 0, "data": "2023-11-22 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9bf"}},
{"sede": 0, "livello": 1, "data": "2023-11-22 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9c0"}},
{"sede": 1, "livello": 0, "data": "2023-11-27 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c1"}},
{"sede": 0, "livello": 0, "data": "2023-11-29 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c2"}},
{"sede": 0, "livello": 1, "data": "2023-11-29 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9c3"}},
{"sede": 1, "livello": 0, "data": "2023-12-04 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c4"}},
{"sede": 0, "livello": 0, "data": "2023-12-06 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c5"}},
{"sede": 0, "livello": 1, "data": "2023-12-06 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9c6"}},
{"sede": 1, "livello": 0, "data": "2023-12-11 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c7"}},
{"sede": 0, "livello": 0, "data": "2023-12-13 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9c8"}},
{"sede": 0, "livello": 1, "data": "2023-12-13 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9c9"}},
{"sede": 1, "livello": 0, "data": "2023-12-18 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ca"}},
{"sede": 0, "livello": 0, "data": "2023-12-20 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9cb"}},
{"sede": 0, "livello": 1, "data": "2023-12-20 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9cc"}},
{"sede": 1, "livello": 0, "data": "2023-12-25 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9cd"}},
{"sede": 0, "livello": 0, "data": "2023-12-27 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ce"}},
{"sede": 0, "livello": 1, "data": "2023-12-27 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9cf"}},
{"sede": 1, "livello": 0, "data": "2024-01-01 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d0"}},
{"sede": 0, "livello": 0, "data": "2024-01-03 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d1"}},
{"sede": 0, "livello": 1, "data": "2024-01-03 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9d2"}},
{"sede": 1, "livello": 0, "data": "2024-01-08 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d3"}},
{"sede": 0, "livello": 0, "data": "2024-01-10 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d4"}},
{"sede": 0, "livello": 1, "data": "2024-01-10 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9d5"}},
{"sede": 1, "livello": 0, "data": "2024-01-15 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d6"}},
{"sede": 0, "livello": 0, "data": "2024-01-17 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d7"}},
{"sede": 0, "livello": 1, "data": "2024-01-17 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9d8"}},
{"sede": 1, "livello": 0, "data": "2024-01-22 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9d9"}},
{"sede": 0, "livello": 0, "data": "2024-01-24 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9da"}},
{"sede": 0, "livello": 1, "data": "2024-01-24 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9db"}},
{"sede": 1, "livello": 0, "data": "2024-01-29 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9dc"}},
{"sede": 0, "livello": 0, "data": "2024-01-31 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9dd"}},
{"sede": 0, "livello": 1, "data": "2024-01-31 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9de"}},
{"sede": 1, "livello": 0, "data": "2024-02-05 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9df"}},
{"sede": 0, "livello": 0, "data": "2024-02-07 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e0"}},
{"sede": 0, "livello": 1, "data": "2024-02-07 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9e1"}},
{"sede": 1, "livello": 0, "data": "2024-02-12 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e2"}},
{"sede": 0, "livello": 0, "data": "2024-02-14 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e3"}},
{"sede": 0, "livello": 1, "data": "2024-02-14 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9e4"}},
{"sede": 1, "livello": 0, "data": "2024-02-19 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e5"}},
{"sede": 0, "livello": 0, "data": "2024-02-21 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e6"}},
{"sede": 0, "livello": 1, "data": "2024-02-21 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9e7"}},
{"sede": 1, "livello": 0, "data": "2024-02-26 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e8"}},
{"sede": 0, "livello": 0, "data": "2024-02-28 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9e9"}},
{"sede": 0, "livello": 1, "data": "2024-02-28 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ea"}},
{"sede": 1, "livello": 0, "data": "2024-03-04 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9eb"}},
{"sede": 0, "livello": 0, "data": "2024-03-06 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ec"}},
{"sede": 0, "livello": 1, "data": "2024-03-06 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ed"}},
{"sede": 1, "livello": 0, "data": "2024-03-11 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ee"}},
{"sede": 0, "livello": 0, "data": "2024-03-13 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9ef"}},
{"sede": 0, "livello": 1, "data": "2024-03-13 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9f0"}},
{"sede": 1, "livello": 0, "data": "2024-03-18 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f1"}},
{"sede": 0, "livello": 0, "data": "2024-03-20 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f2"}},
{"sede": 0, "livello": 1, "data": "2024-03-20 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9f3"}},
{"sede": 1, "livello": 0, "data": "2024-03-25 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f4"}},
{"sede": 0, "livello": 0, "data": "2024-03-27 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f5"}},
{"sede": 0, "livello": 1, "data": "2024-03-27 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9f6"}},
{"sede": 1, "livello": 0, "data": "2024-04-01 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f7"}},
{"sede": 0, "livello": 0, "data": "2024-04-03 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9f8"}},
{"sede": 0, "livello": 1, "data": "2024-04-03 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9f9"}},
{"sede": 1, "livello": 0, "data": "2024-04-08 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9fa"}},
{"sede": 0, "livello": 0, "data": "2024-04-10 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9fb"}},
{"sede": 0, "livello": 1, "data": "2024-04-10 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9fc"}},
{"sede": 1, "livello": 0, "data": "2024-04-15 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9fd"}},
{"sede": 0, "livello": 0, "data": "2024-04-17 19:30:00", "_id": {"$oid": "65078edee77138409ec9f9fe"}},
{"sede": 0, "livello": 1, "data": "2024-04-17 20:30:00", "_id": {"$oid": "65078edee77138409ec9f9ff"}},
{"sede": 1, "livello": 0, "data": "2024-04-22 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa00"}},
{"sede": 0, "livello": 0, "data": "2024-04-24 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa01"}},
{"sede": 0, "livello": 1, "data": "2024-04-24 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa02"}},
{"sede": 1, "livello": 0, "data": "2024-04-29 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa03"}},
{"sede": 0, "livello": 0, "data": "2024-05-01 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa04"}},
{"sede": 0, "livello": 1, "data": "2024-05-01 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa05"}},
{"sede": 1, "livello": 0, "data": "2024-05-06 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa06"}},
{"sede": 0, "livello": 0, "data": "2024-05-08 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa07"}},
{"sede": 0, "livello": 1, "data": "2024-05-08 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa08"}},
{"sede": 1, "livello": 0, "data": "2024-05-13 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa09"}},
{"sede": 0, "livello": 0, "data": "2024-05-15 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa0a"}},
{"sede": 0, "livello": 1, "data": "2024-05-15 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa0b"}},
{"sede": 1, "livello": 0, "data": "2024-05-20 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa0c"}},
{"sede": 0, "livello": 0, "data": "2024-05-22 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa0d"}},
{"sede": 0, "livello": 1, "data": "2024-05-22 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa0e"}},
{"sede": 1, "livello": 0, "data": "2024-05-27 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa0f"}},
{"sede": 0, "livello": 0, "data": "2024-05-29 19:30:00", "_id": {"$oid": "65078edee77138409ec9fa10"}},
{"sede": 0, "livello": 1, "data": "2024-05-29 20:30:00", "_id": {"$oid": "65078edee77138409ec9fa11"}}
]

5
db/letsswing/livelli.json

@ -0,0 +1,5 @@
[
{"id": 3, "nome": "Advanced", "_id": {"$oid": "65082a3a04d206fd0a90cbd1"}},
{"id": 2, "nome": "Improver", "_id": {"$oid": "65082a3a04d206fd0a90cbd2"}},
{"id": 1, "nome": "Beginners", "_id": {"$oid": "65082a3a04d206fd0a90cbd3"}}
]

4
db/letsswing/sedi.json

@ -0,0 +1,4 @@
[
{"id": 0, "nome": "matera", "_id": {"$oid": "65081ca20aaed05c1b550a09"}},
{"id": 1, "nome": "altamura", "_id": {"$oid": "65081ca20aaed05c1b550a0a"}}
]

88
db/letsswing/users.json

@ -1,6 +1,90 @@
[
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": [], "presenze": ["2022-10-20 00:00:00", "2023-09-20 00:00:00", "2023-09-20 00:00:00", "2023-09-16 00:00:00", "2023-10-02 00:00:00", "2023-10-03 00:00:00"], "_id": {"$oid": "65058867e0fd4f3c838ebdee"}},
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": ["2022-10-01 00:00:00"], "presenze": ["2022-10-20 00:00:00", "2023-09-20 00:00:00", "2023-09-20 00:00:00", "2023-09-16 00:00:00", "2023-10-02 00:00:00", "2023-10-03 00:00:00"], "_id": {"$oid": "65058867e0fd4f3c838ebdee"}},
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": [], "presenze": ["2023-09-20 00:00:00", "2023-09-20 00:00:00", "2023-09-20 00:00:00", "2023-09-20 00:00:00", "2023-09-20 00:00:00"], "_id": {"$oid": "65058993375740a81b75a9f4"}},
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": [], "presenze": [], "_id": {"$oid": "65058997515c441f46c71e08"}},
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": [], "presenze": [], "_id": {"$oid": "6505bdd911f5ff2d8f876ec8"}}
{"nome": "Jim", "cognome": "Doe", "livello": 1, "sede": 1, "telefono": "1234567890", "instagram": "@johndoe", "pagamenti": [], "presenze": [], "_id": {"$oid": "6505bdd911f5ff2d8f876ec8"}},
{"nome": "SARA", "cognome": "BALDONI", "livello": 2, "sede": 0, "telefono": "388 341 4470", "instagram": "@SARA", "email": "", "pagamenti": [], "presenze": ["2023-09-27 00:00:00", "2023-10-04 00:00:00", "2024-01-03 00:00:00"], "_id": {"$oid": "6507909f82043fdf3bdb2e74"}},
{"nome": "ARGENSIA", "cognome": "BONORA", "livello": 1, "sede": 0, "telefono": "329 297 3561", "instagram": "@ARGENSIA", "email": "", "pagamenti": [], "presenze": ["2023-09-27 00:00:00"], "_id": {"$oid": "6507909f82043fdf3bdb2e75"}},
{"nome": "MARIA VITTORIA ", "cognome": "CARNOVALE", "livello": 1, "sede": 0, "telefono": "340 700 2721", "instagram": "@MARIA VITTORIA ", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e76"}},
{"nome": "MARILIA", "cognome": "CASO", "livello": 1, "sede": 0, "telefono": "348 327 8981", "instagram": "@MARILIA", "email": "gabbiano246@hotmail.com", "pagamenti": [], "presenze": ["2023-10-18 00:00:00"], "_id": {"$oid": "6507909f82043fdf3bdb2e77"}},
{"nome": "ANGELO", "cognome": "CICCHETTI", "livello": 1, "sede": 0, "telefono": "348 439 7116", "instagram": "@ANGELO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e78"}},
{"nome": "ANTONIETTA", "cognome": "CIRIGLIANO", "livello": 1, "sede": 0, "telefono": "339 851 4542", "instagram": "@ANTONIETTA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e79"}},
{"nome": "ROSSANA", "cognome": "DE SIMMEO", "livello": 1, "sede": 0, "telefono": "333 589 2872", "instagram": "@ROSSANA", "email": "rossana.dess@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7a"}},
{"nome": "ENRICA", "cognome": "DESTENA", "livello": 1, "sede": 0, "telefono": "327 955 9479", "instagram": "@ENRICA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7b"}},
{"nome": "ANNA", "cognome": "DI CUIA", "livello": 1, "sede": 0, "telefono": "334 386 6875", "instagram": "@ANNA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7c"}},
{"nome": "ANGELICA", "cognome": "DILIDDO", "livello": 1, "sede": 0, "telefono": "333 890 3365", "instagram": "@ANGELICA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7d"}},
{"nome": "FRANCESCO", "cognome": "ERAMO", "livello": 1, "sede": 0, "telefono": "333 304 8801", "instagram": "@FRANCESCO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7e"}},
{"nome": "PAOLO", "cognome": "FASANO", "livello": 1, "sede": 0, "telefono": "036 856 6479", "instagram": "@PAOLO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e7f"}},
{"nome": "ROSA", "cognome": "FRANCOMAGRO", "livello": 1, "sede": 0, "telefono": "320 625 7483", "instagram": "@ROSA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e80"}},
{"nome": "LUCIA", "cognome": "FRESCURA", "livello": 1, "sede": 0, "telefono": "388 160 5146", "instagram": "@LUCIA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e81"}},
{"nome": "MARIABRUNA", "cognome": "LIMITE", "livello": 1, "sede": 0, "telefono": "389 504 5268", "instagram": "@MARIABRUNA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e82"}},
{"nome": "FRANCESCA", "cognome": "LIONETTI", "livello": 1, "sede": 0, "telefono": "329 782 1749", "instagram": "@FRANCESCA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e83"}},
{"nome": "MARIANNA", "cognome": "LOIUDICE", "livello": 1, "sede": 0, "telefono": "328 146 8450", "instagram": "@MARIANNA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e84"}},
{"nome": "IVAN", "cognome": "MAGGIORE", "livello": 1, "sede": 0, "telefono": "339 472 2512", "instagram": "@IVAN", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e85"}},
{"nome": "ANTONIO", "cognome": "MALCANGI", "livello": 1, "sede": 0, "telefono": "333 268 8744", "instagram": "@ANTONIO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e86"}},
{"nome": "FRANCESCO", "cognome": "MARAGLINO", "livello": 1, "sede": 0, "telefono": "340 874 3698", "instagram": "@FRANCESCO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e87"}},
{"nome": "MARIELLA ", "cognome": "MARTINO", "livello": 1, "sede": 0, "telefono": "339 261 4130", "instagram": "@MARIELLA ", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e88"}},
{"nome": "ELGA", "cognome": "MELUCCI", "livello": 1, "sede": 0, "telefono": "320 147 1346", "instagram": "@ELGA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e89"}},
{"nome": "MARTINA", "cognome": "MONTAGANO", "livello": 1, "sede": 0, "telefono": "339 380 4392", "instagram": "@MARTINA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8a"}},
{"nome": "VITO", "cognome": "MONTEMURRO", "livello": 1, "sede": 0, "telefono": "320 694 0666", "instagram": "@VITO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8b"}},
{"nome": "PAOLO", "cognome": "MORETTI", "livello": 1, "sede": 0, "telefono": "389 640 7781", "instagram": "@PAOLO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8c"}},
{"nome": "NUNZIO", "cognome": "MORO", "livello": 1, "sede": 0, "telefono": "333 371 8003", "instagram": "@NUNZIO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8d"}},
{"nome": "PAOLA", "cognome": "PAOLICELLI", "livello": 1, "sede": 0, "telefono": "320 742 1274", "instagram": "@PAOLA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8e"}},
{"nome": "ELENA", "cognome": "PARISI", "livello": 1, "sede": 0, "telefono": "347 834 5664", "instagram": "@ELENA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e8f"}},
{"nome": "MANUELA", "cognome": "PERSIA", "livello": 1, "sede": 0, "telefono": "320 947 5707", "instagram": "@MANUELA", "email": "manuela.persia@hotmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e90"}},
{"nome": "IVAN", "cognome": "PERSIA", "livello": 1, "sede": 0, "telefono": "320 381 8396", "instagram": "@IVAN", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e91"}},
{"nome": "MARIA", "cognome": "PETRONELLA", "livello": 1, "sede": 0, "telefono": "320 838 0131", "instagram": "@MARIA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e92"}},
{"nome": "ALESSIA", "cognome": "PLASMATI", "livello": 1, "sede": 0, "telefono": "327 943 3511", "instagram": "@ALESSIA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e93"}},
{"nome": "ANTONIO", "cognome": "RICCIULLI", "livello": 1, "sede": 0, "telefono": "320 486 6306", "instagram": "@ANTONIO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e94"}},
{"nome": "MARTINA", "cognome": "RIPOLI", "livello": 1, "sede": 0, "telefono": "327 619 2581", "instagram": "@MARTINA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e95"}},
{"nome": "ANGELO", "cognome": "ROMANO", "livello": 1, "sede": 0, "telefono": "334 292 9743", "instagram": "@ANGELO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e96"}},
{"nome": "SANTINA", "cognome": "SCHIAVONE", "livello": 1, "sede": 0, "telefono": "338 925 0994", "instagram": "@SANTINA", "email": "schiavonesantininaines@libero.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e97"}},
{"nome": "DOMENICO", "cognome": "STRAMMIELLO", "livello": 1, "sede": 0, "telefono": "333 356 5593", "instagram": "@DOMENICO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e98"}},
{"nome": "VALENTINA", "cognome": "TATARANNI", "livello": 1, "sede": 0, "telefono": "393 941 7045", "instagram": "@VALENTINA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e99"}},
{"nome": "ROBERTA", "cognome": "TRITTO", "livello": 1, "sede": 0, "telefono": "327 006 4600", "instagram": "@ROBERTA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9a"}},
{"nome": "AMY ANN", "cognome": "WEIDEMAN", "livello": 1, "sede": 0, "telefono": "339 282 3618", "instagram": "@AMY ANN", "email": "amyannweideman18@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9b"}},
{"nome": "CLAUDIA", "cognome": "ZANCAN", "livello": 1, "sede": 0, "telefono": "346 137 5975", "instagram": "@CLAUDIA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9c"}},
{"nome": "MATHEUS", "cognome": "ANDRADE", "livello": 2, "sede": 0, "telefono": "327 460 5204", "instagram": "@MATHEUS", "email": "matheusandrade64@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9d"}},
{"nome": "NADIA", "cognome": "DELLA CHIARA", "livello": 2, "sede": 0, "telefono": "339 532 9718", "instagram": "@NADIA", "email": "feelosophymatera@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9e"}},
{"nome": "CARMINE", "cognome": "DENTE", "livello": 2, "sede": 0, "telefono": "327 424 3327", "instagram": "@CARMINE", "email": "denteca@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2e9f"}},
{"nome": "EMANUELE", "cognome": "DI PEDE", "livello": 2, "sede": 0, "telefono": "339 491 2760", "instagram": "@EMANUELE", "email": "emadip@inwind.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea0"}},
{"nome": "ANITA", "cognome": "FERRORELLI", "livello": 2, "sede": 0, "telefono": "380 347 8179", "instagram": "@ANITA", "email": "ntfrrll@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea1"}},
{"nome": "MICHELE", "cognome": "FORTE", "livello": 2, "sede": 0, "telefono": "368 374 7215", "instagram": "@MICHELE", "email": "fortemi@hotmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea2"}},
{"nome": "MARIA CHIARA", "cognome": "GIORDANO", "livello": 2, "sede": 0, "telefono": "347 468 9673", "instagram": "@MARIA CHIARA", "email": "machigiordano@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea3"}},
{"nome": "ANDREA", "cognome": "IACOVAZZI", "livello": 2, "sede": 0, "telefono": "329 392 1927", "instagram": "@ANDREA", "email": "andiacovazzi@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea4"}},
{"nome": "ALESSIA", "cognome": "MARAGNO", "livello": 2, "sede": 0, "telefono": "329 169 9744", "instagram": "@ALESSIA", "email": "alessiamaragno@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea5"}},
{"nome": "MARINA", "cognome": "MARCANGELO", "livello": 2, "sede": 0, "telefono": "339 143 7405", "instagram": "@MARINA", "email": "marinamarcang@tiscali.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea6"}},
{"nome": "LUCIANA", "cognome": "MONTEMURRO", "livello": 2, "sede": 0, "telefono": "331 770 6338", "instagram": "@LUCIANA", "email": "montemurroluciana72@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea7"}},
{"nome": "DEBORA", "cognome": "PEPE", "livello": 2, "sede": 0, "telefono": "328 861 0876", "instagram": "@DEBORA", "email": "debora.pepe24@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea8"}},
{"nome": "MILENA", "cognome": "PISCIOTTA", "livello": 2, "sede": 0, "telefono": "328 094 3505", "instagram": "@MILENA", "email": "milenagne@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ea9"}},
{"nome": "BIBIAN", "cognome": "PONTICELLI", "livello": 2, "sede": 0, "telefono": "329 435 3311", "instagram": "@BIBIAN", "email": "b.ponticelli@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eaa"}},
{"nome": "VITTORIO DANIELE", "cognome": "QUERCIA", "livello": 2, "sede": 0, "telefono": "375 541 0267", "instagram": "@VITTORIO DANIELE", "email": "danioak@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eab"}},
{"nome": "ANNALISA", "cognome": "SCALCIONE", "livello": 2, "sede": 0, "telefono": "SCALCIONE", "instagram": "@ANNALISA", "email": "cindarellservice@libero.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eac"}},
{"nome": "LUCIANO", "cognome": "TAMBORRINO", "livello": 2, "sede": 0, "telefono": "393 625 9236", "instagram": "@LUCIANO", "email": "lucianot74@hotmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ead"}},
{"nome": "PAOLA", "cognome": "TOMA", "livello": 2, "sede": 0, "telefono": "", "instagram": "@PAOLA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eae"}},
{"nome": "PAOLO", "cognome": "AGRUSTI", "livello": 2, "sede": 0, "telefono": "388 814 9897", "instagram": "@PAOLO", "email": "agrusti@hotmail.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eaf"}},
{"nome": "LUCIA", "cognome": "CALIA", "livello": 2, "sede": 0, "telefono": "329 618 7445", "instagram": "@LUCIA", "email": "luciacalia378@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb0"}},
{"nome": "FLORA", "cognome": "D'ANTONA", "livello": 2, "sede": 0, "telefono": "320 020 5094", "instagram": "@FLORA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb1"}},
{"nome": "ANNA", "cognome": "DEZIO", "livello": 2, "sede": 0, "telefono": "349 431 6974", "instagram": "@ANNA", "email": "rest.annadezio@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb2"}},
{"nome": "GIOVANNI", "cognome": "DILEO", "livello": 2, "sede": 0, "telefono": "", "instagram": "@GIOVANNI", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb3"}},
{"nome": "PASQUALE", "cognome": "FIORE", "livello": 2, "sede": 0, "telefono": "328 666 4022", "instagram": "@PASQUALE", "email": "fiorepaky@hotmail.it", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb4"}},
{"nome": "CARMELA", "cognome": "GUANTI", "livello": 2, "sede": 0, "telefono": "351 590 4222", "instagram": "@CARMELA", "email": "cagem2013@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb5"}},
{"nome": "OUSMAN", "cognome": "JARJU", "livello": 2, "sede": 0, "telefono": "379 148 9396", "instagram": "@OUSMAN", "email": "ousmanjarju30@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb6"}},
{"nome": "EGIDIO", "cognome": "LACANNA", "livello": 2, "sede": 0, "telefono": "", "instagram": "@EGIDIO", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb7"}},
{"nome": "ROSA", "cognome": "LAGONIGRO", "livello": 2, "sede": 0, "telefono": "", "instagram": "@ROSA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb8"}},
{"nome": "MARZIA", "cognome": "LIONETTI", "livello": 2, "sede": 0, "telefono": "", "instagram": "@MARZIA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eb9"}},
{"nome": "MARIKA", "cognome": "MONESE", "livello": 2, "sede": 0, "telefono": "366-2872715", "instagram": "@MARIKA", "email": "marikamonese@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2eba"}},
{"nome": "ANGELICA", "cognome": "NANNAVECCHIA", "livello": 2, "sede": 0, "telefono": "", "instagram": "@ANGELICA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ebb"}},
{"nome": "VITALBA", "cognome": "NICOLETTI", "livello": 2, "sede": 0, "telefono": "328 974 0125", "instagram": "@VITALBA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ebc"}},
{"nome": "ALEXANDRA", "cognome": "NORRIS", "livello": 2, "sede": 0, "telefono": "371 692 8355", "instagram": "@ALEXANDRA", "email": "allyenorris@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ebd"}},
{"nome": "MATTIA", "cognome": "OLIVETO", "livello": 2, "sede": 0, "telefono": "347 483 9344", "instagram": "@MATTIA", "email": "cesc.mattia@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ebe"}},
{"nome": "ALESSANDRO", "cognome": "QUERCIA", "livello": 2, "sede": 0, "telefono": "339 537 6867", "instagram": "@ALESSANDRO", "email": "querciaalessandro813@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ebf"}},
{"nome": "MARISA", "cognome": "RONDINONE", "livello": 2, "sede": 0, "telefono": "327 989 5992", "instagram": "@MARISA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec0"}},
{"nome": "JOSEPH", "cognome": "SALZBERG", "livello": 2, "sede": 0, "telefono": "", "instagram": "@JOSEPH", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec1"}},
{"nome": "IMMA", "cognome": "TRALLI", "livello": 2, "sede": 0, "telefono": "328 164 0272", "instagram": "@IMMA", "email": "tralli.imma@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec2"}},
{"nome": "SILVIA", "cognome": "VIZZIELLO", "livello": 2, "sede": 0, "telefono": "327 216 8317", "instagram": "@SILVIA", "email": "silviavizziello2002@gmail.com", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec3"}},
{"nome": "LORENA", "cognome": "", "livello": 2, "sede": 0, "telefono": "", "instagram": "@LORENA", "email": "", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec4"}},
{"nome": "VASILKI", "cognome": "", "livello": 2, "sede": 0, "telefono": "30694 846 7844", "instagram": "@VASILKI", "email": "vaswluz@outlook.com.gr", "pagamenti": [], "presenze": [], "_id": {"$oid": "6507909f82043fdf3bdb2ec5"}},
{"nome": "v bnc", "cognome": "bbcn ", "telefono": "n dn", "email": "", "sede": 0, "livello": 1, "pagamenti": [], "presenze": [], "_id": {"$oid": "650897787c2e6b1bede4da70"}},
{"nome": "v bnc", "cognome": "bbcn ", "telefono": "n dn", "email": "", "sede": 0, "livello": 1, "pagamenti": [], "presenze": [], "_id": {"$oid": "6508977f7c2e6b1bede4da72"}}
]

134
main.py

@ -1,4 +1,4 @@
from nicegui import ui
from nicegui import ui, app
from datetime import datetime, timedelta
from montydb import MontyClient
from montydb.types.objectid import ObjectId
@ -9,7 +9,7 @@ import os
from fastapi.responses import RedirectResponse
passwords = {'admin': [0,'sw1ng3rs',0, "Matteo Benedetto"], 'user': [1,'pass',1, "Pippo"]}
# Set the locale to Italian
locale.setlocale(locale.LC_ALL, 'it_IT.utf8')
@ -23,25 +23,141 @@ conn = MontyClient("db")
# Access your database and collection
db = conn.letsswing
collection = db.users
# Routes
@ui.page('/', title="Let's Swing Admin",favicon="assets/favicon.ico")
def index_page() -> None:
@ui.page('/manager/{sede}/{livello}', title="Let's Swing Admin", favicon="assets/favicon.ico")
def manager_page(sede:int, livello:int) -> None:
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
#############
manage = manager.Manager()
manage.main(db, sede, livello)
# Routes
@ui.page('/', title="Let's Swing Admin", favicon="assets/favicon.ico")
def index_page() -> None:
## LOGIN CHECK
if not app.storage.user.get('authenticated', False):
return RedirectResponse('/login')
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
#############
manager.main(collection)
def choose(sede, livello):
if int(livello) < 0:
page.refresh(sede)
else:
ui.open(f"/manager/{sede}/{livello}")
@ui.refreshable
def page(sede):
if int(sede) <0:
results = db.sedi.find()
ui.button(on_click=lambda: (app.storage.user.clear(), ui.open('/login')), icon='logout').props('outline round')
ui.row().classes("w-full")
with ui.column().classes("w-full h-screen place-items-center items-center").style(""):
ui.row().classes("grow")
for result in results:
ui.button(text=str(result['nome']).capitalize(),on_click=lambda id=result['id']:choose(id, -1))
ui.row().classes("grow")
else:
results = db.livelli.find()
with ui.row().classes("w-full"):
ui.icon("chevron_left", size="lg").on("click", lambda: page.refresh(-1))
with ui.column().classes("w-full h-screen place-items-center items-center"):
ui.row().classes("grow")
for result in results:
ui.button(text=str(result['nome']).capitalize(),on_click=lambda id=result['id']:choose(sede, id))
ui.row().classes("grow")
## FRONTEND
page(-1)
@ui.page('/user/{userid}', title="Let's Swing Admin",favicon="assets/favicon.ico")
@ui.page('/user/{userid}', title="Let's Swing Admin", favicon="assets/favicon.ico")
def user_page(userid: str) -> None:
## LOGIN CHECK
if not app.storage.user.get('authenticated', False):
return RedirectResponse('/login')
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
#############
user.main(userid, db)
@ui.page('/edit/{userid}/{sede}/{livello}', title="Let's Swing Admin", favicon="assets/favicon.ico")
def edit_page(userid: str, sede: int, livello: int) -> None:
## LOGIN CHECK
if not app.storage.user.get('authenticated', False):
return RedirectResponse('/login')
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
#############
user.main(userid, collection)
if userid!= "new":
result = db.users.find_one({"_id":ObjectId(userid)})
async def save():
data_submit = {k: v.value for k, v in data.items()}
if userid == "new":
data_submit['pagamenti']=[]
data_submit['presenze']=[]
db.users.insert_one(data_submit)
else:
print(data_submit)
db.users.update_one(
{"_id": ObjectId(userid)},
{"$set": data_submit}
)
os.kill(os.getpid(), signal.SIGUSR1)
await ui.run_javascript('history.back()', respond=False)
ui.icon("chevron_left", size="lg").on("click", lambda: ui.run_javascript('history.back()', respond=False))
with ui.column().classes("w-full h-screen place-items-center items-center").style(""):
data = {}
ui.row().classes("grow")
data['nome'] = ui.input(value=str(result['nome']).capitalize() if userid != "new" else None, placeholder="Nome").props('outline').classes('w-full')
data['cognome'] = ui.input(value=str(result['cognome']).capitalize() if userid != "new" else None, placeholder="Cognome").props('outline').classes('w-full')
data['telefono'] = ui.input(value=str(result['telefono']).capitalize() if userid != "new" else None, placeholder="Telefono").props('outline').classes('w-full')
data['email'] = ui.input(value=str(result['email']).capitalize() if userid != "new" else None, placeholder="email").props('outline').classes('w-full')
options = {o['id']: str(o['nome']).capitalize() for o in db.sedi.find()}
data['sede'] = ui.select(options, value=result['sede'] if userid != "new" else sede).props('outline').classes('w-full')
options = {o['id']: str(o['nome']).capitalize() for o in db.livelli.find()}
data['livello'] = ui.select(options, value=result['livello'] if userid != "new" else livello).props('outline').classes('w-full')
ui.button(text="Salva", on_click=save)
ui.row().classes("grow")
@ui.page('/login',title="Let's Swing Admin", favicon="assets/favicon.ico")
def login() -> None:
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif;background-color:black')
#############
def try_login() -> None: # local function to avoid passing username and password as arguments
if passwords.get(username.value)[1] == password.value:
app.storage.user.update({'username': username.value, 'authenticated': True, 'id' : passwords.get(username.value)[0], "level": passwords.get(username.value)[2], "name": passwords.get(username.value)[3]})
ui.open('/')
else:
ui.notify('username o password errata', color='negative')
if app.storage.user.get('authenticated', False):
return RedirectResponse('/')
with ui.card().classes('absolute-center items-center'):
ui.image('assets/logo.svg')
ui.label('Let\'s Swing Admin').classes('text-2xl')
username = ui.input('Username').on('keydown.enter', try_login).classes('w-full')
password = ui.input('Password', password=True, password_toggle_button=True).on('keydown.enter', try_login)
ui.button('Log in', on_click=try_login)
# Run main loop
ui.run(host="0.0.0.0")
ui.run(host="0.0.0.0", storage_secret='THIS_NEEDS_TO_BE_CHANGED')

BIN
pages/__pycache__/manager.cpython-311.pyc

Binary file not shown.

BIN
pages/__pycache__/user.cpython-311.pyc

Binary file not shown.

68
pages/manager.py

@ -2,22 +2,37 @@ from nicegui import ui
import signal
import os
from datetime import datetime, timedelta
from montydb.database import MontyDatabase
class Manager:
def __init__(self):
self.current_time = datetime.now()
self.current_index = 0
current_time = datetime.now()
def main(self, db: MontyDatabase, sede, livello):
users = db.users
lezioni = db.lezioni
lezioniCursore = lezioni.find({"livello": livello,"sede": sede}).sort([("data", 1)])
lezioniArray = [datetime.strptime(l["data"],"%Y-%m-%d %H:%M:%S") for l in lezioniCursore]
for i, l in enumerate(lezioniArray):
if l > self.current_time:
self.current_index = i
self.current_time = l
break
def main(collection):
def registra_presenza(id, flag):
current_day = current_time.replace(hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
current_day = self.current_time.replace(hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
if flag:
collection.update_one(
users.update_one(
{"_id": id},
{"$push": {"presenze": current_day}}
)
else:
collection.update_one(
users.update_one(
{"_id": id},
{"$pull": {"presenze": current_day}}
)
@ -26,40 +41,42 @@ def main(collection):
@ui.refreshable
def time_selector():
def set_time(flag):
# Specify that we want to use the global variable
global current_time
if flag:
current_time += timedelta(hours=24)
def set_time(isNext):
if isNext:
self.current_index += 1
else:
# Subtract 24 hours
current_time -= timedelta(hours=24)
self.current_index -= 1
self.current_time = lezioniArray[self.current_index]
time_selector.refresh()
tabellaUtenti.refresh()
with ui.row().classes("w-full items-center"):
ui.column().classes("grow")
with ui.column():
if self.current_index > 0:
ui.icon("arrow_left",size="md").on("click", lambda: set_time(False))
date_label = current_time.strftime('%d %B, %Y')
date_label = self.current_time.strftime('%d %B, %Y')
ui.label(date_label).style("margin:auto auto;font-weight:600").classes('text-md')
with ui.column():
if self.current_index +1 in range(0,len(lezioniArray)):
ui.icon("arrow_right",size="md").on("click", lambda: set_time(True))
ui.column().classes("grow")
@ui.refreshable
def tabellaUtenti():
rows = collection.find({"sede": 1})
current_day = current_time.replace(hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
current_month = current_time.replace(day=1, hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
rows = users.find({"sede": sede, "livello": livello})
current_day = self.current_time.replace(hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
current_month = self.current_time.replace(day=1, hour=0, minute=0, second=0, microsecond=0).strftime('%Y-%m-%d %H:%M:%S')
for row in rows:
with ui.row().classes("w-full"):
with ui.column().classes("grow"):
ui.label(f"{row['nome']} {row['cognome'][0].upper()}.").style('color:'+(
ui.label(f"{row['nome']} {row['cognome'][0].upper() if row['cognome'] else None}.").style('color:'+(
"red" if not current_month in row['pagamenti'] and current_day in row['presenze'] else "black")
).classes('text-md').on("click", lambda row_id=row['_id']: ui.open(f'user/{row_id}'))
).classes('text-md').on("click", lambda row_id=row['_id']: ui.open(f'/user/{row_id}'))
with ui.column():
if current_day in row["presenze"]:
@ -70,20 +87,21 @@ def main(collection):
ui.separator()
def onSignal(signum, frame):
#ui.notify("signal")
print("Signal")
tabellaUtenti.refresh()
signal.signal(signal.SIGUSR1, onSignal)
liv = db.livelli.find_one({"id":livello})
sed = db.sedi.find_one({"id":sede})
## FRONTEND
ui.row().classes("w-full")
with ui.row().classes("w-full"):
ui.icon("chevron_left", size="lg").on("click", lambda: ui.open("/"))
with ui.row().classes("w-full"):
with ui.column().classes("grow"):
ui.label("Beginner a Matera").classes('text-xl').style("font-weight:700;margin-top: 10px")
ui.label(f"{str(liv['nome']).capitalize()} a {str(sed['nome']).capitalize()}").classes('text-xl').style("font-weight:700;margin-top: 10px")
with ui.column():
ui.image('assets/logo.svg').style('width:70px;margin:auto auto')
time_selector()
tabellaUtenti()
with ui.row().classes("w-full items-center content-center"):
ui.button("AGGIUNGI ALLIEV*", icon="add").props('outline rounded').classes('shadow-lg').style("margin:auto;padding:10px 20px;font-weight:600")
ui.button("AGGIUNGI ALLIEV*", icon="add", on_click=lambda: ui.open(f"/edit/new/{sede}/{livello}")).props('outline rounded').classes('shadow-lg').style("margin:auto;padding:10px 20px;font-weight:600")

47
pages/user.py

@ -4,7 +4,17 @@ import os
from datetime import datetime, timedelta
from montydb.types.objectid import ObjectId
def main(userid, collection):
from fastapi.responses import RedirectResponse
def main(userid, db):
collection = db.users
async def delete_user():
result = await dialog
if result:
db.users.delete_one({"_id":ObjectId(userid)})
os.kill(os.getpid(), signal.SIGUSR1)
await ui.run_javascript('history.back()', respond=False)
def register_payment(month, flag):
if flag:
@ -13,7 +23,7 @@ def main(userid, collection):
{"$push": {"pagamenti": month.strftime('%Y-%m-%d %H:%M:%S')}}
)
else:
collection.update_one(
collection.find_one_and_update(
{"_id": ObjectId(userid)},
{"$pull": {"pagamenti": month.strftime('%Y-%m-%d %H:%M:%S')}}
)
@ -21,16 +31,15 @@ def main(userid, collection):
page.refresh()
def onSignal(signum, frame):
ui.notify("signal")
page.refresh()
signal.signal(signal.SIGUSR1, onSignal)
# Calculate last October date
october_date = datetime(datetime.now().year - (datetime.now().month < 10), 10, 1)
# Calculate last start date
start_date = datetime(datetime.now().year - (datetime.now().month < 8), 9, 1)
# Create a list for the next 12 months
next_12_months = [(october_date + timedelta(days=i*32)).replace(day=1) for i in range(10)]
next_12_months = [(start_date + timedelta(days=i*32)).replace(day=1) for i in range(10)]
@ui.refreshable
def page():
@ -39,14 +48,19 @@ def main(userid, collection):
except Exception as e:
print(e)
return RedirectResponse('/')
title.set_text(f'{result["nome"]} {result["cognome"][0].upper()}.')
title.set_text(f'{result["nome"]} {result["cognome"][0].upper() if result["cognome"] else None}.')
with ui.grid(columns=1):
with ui.row():
ui.label("Informazioni").classes('text-lg').style("font-weight:700")
ui.icon("edit", size="sm").on("click", lambda: ui.open(f'/edit/{userid}/0/0'))
ui.icon("delete", size="sm").on("click", delete_user)
ui.label(f'{result["nome"]}').classes('text-lg')
ui.label(f'{result["cognome"]}').classes('text-lg')
ui.label(f'{result["telefono"]}').classes('text-lg')
if 'instagram' in result:
ui.label(f'{result["instagram"]}').classes('text-lg')
ui.label(f'{result["sede"]}').classes('text-lg')
ui.label(f'{str(db.sedi.find_one({"id":result["sede"]})["nome"]).capitalize()}').classes('text-lg')
ui.label(f'{str(db.livelli.find_one({"id":result["livello"]})["nome"]).capitalize()}').classes('text-lg')
with ui.grid(columns=2).classes("w-full items-center"):
ui.label("Mese").classes('text-lg').style("font-weight:700")
with ui.grid(columns=2).style("text-align:center").classes("place-items-center"):
@ -57,20 +71,29 @@ def main(userid, collection):
presenze = [datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S') for timestamp in result['presenze']]
start, end = month.replace(day=1), (month + timedelta(days=32)).replace(day=1) - timedelta(seconds=1)
timestamp_in_month = any(start <= timestamp <= end for timestamp in presenze)
print(timestamp_in_month)
ui.label(month.strftime("%B").capitalize()).classes('text-lg')
with ui.grid(columns=2).style("text-align:center").classes("place-items-center"):
ui.icon("done").classes('text-lg') if timestamp_in_month else ui.icon("warning", color="negative").classes('text-lg')
ui.icon("done").classes('text-lg') if timestamp_in_month else ui.label(" ")
if month.strftime('%Y-%m-%d %H:%M:%S') in result["pagamenti"]:
ui.button(color="primary", text= "PAGATO", on_click= lambda dt=month: register_payment(dt, False)).style('font-size:0.5rem;font-weight:700')
else:
if timestamp_in_month:
ui.button(color="negative", text= "NON PAGATO", on_click= lambda dt=month: register_payment(dt, True)).style('font-size:0.4rem;font-weight:700;white-space: nowrap;')
else:
ui.button(color="secondary", text= "PAGA", on_click= lambda dt=month: register_payment(dt, True)).style('font-size:0.5rem;font-weight:700')
ui.button(text= "PAGA", on_click= lambda dt=month: register_payment(dt, True)).style('font-size:0.5rem;font-weight:700;').props('outline')
## FRONTEND
ui.row().classes("w-full")
with ui.dialog() as dialog, ui.card():
ui.label('Sicuro di voler cancellare l\'utente?')
with ui.row().classes("w-full"):
ui.column().classes("grow")
ui.button('', on_click=lambda: dialog.submit(True))
ui.button('No', on_click=lambda: dialog.submit(False))
ui.column().classes("grow")
with ui.row().classes("w-full"):
ui.icon("chevron_left", size="lg").on("click", lambda: ui.run_javascript('history.back()', respond=False))
with ui.row().classes("w-full"):
with ui.column().classes("grow"):
title = ui.label().classes('text-xl').style("font-weight:700;margin-top: 10px")

50
tinymongoz.py

@ -1,18 +1,54 @@
from montydb import MontyClient
from datetime import datetime, timedelta
import json
# Create a connection
conn = MontyClient("db")
# Access your database and collection
db = conn.letsswing
collection = db.users
collection = db.livelli
# Insert a document with a nested structure
collection.insert_one({'nome': 'Jim', 'cognome': 'Doe', 'livello': 1,
'sede': 1, 'telefono': '1234567890', 'instagram': '@johndoe',
'pagamenti': [], 'presenze': []})
results = collection.find({"sede": 1})
# jsonfile = open('file.json', 'r')
for result in results:
print(result)
# for row in jsonfile:
# print(row)
collection.insert_one({"id":"3","nome":"Advanced"})
collection.insert_one({"id":"2","nome":"Improver"})
collection.insert_one({"id":"1","nome":"Beginners"})
# collection = db.lezioni
# # collection.insert_one({'})
# # Start from a known Monday.
# start_date = datetime(2023,10,1)
# while start_date.weekday() != 0: # 0 represents Monday in weekday()
# start_date -= timedelta(days=1)
# for i in range(36): # We need 10 weeks to get 20 days (2 days per week)
# monday = start_date + timedelta(weeks=i)
# wednesday1 = monday + timedelta(days=2) # Wednesday is two days after Monday
# monday = monday.replace(hour=19, minute=30)
# wednesday1= wednesday1.replace(hour=19, minute=30)
# wednesday2 = wednesday1
# wednesday2 = wednesday2.replace(hour=20, minute=30)
# collection.insert_one({"sede": 1, "livello":0, "data":monday.strftime('%Y-%m-%d %H:%M:%S')})
# collection.insert_one({"sede": 0, "livello":0, "data":wednesday1.strftime('%Y-%m-%d %H:%M:%S')})
# collection.insert_one({"sede": 0, "livello":1, "data":wednesday2.strftime('%Y-%m-%d %H:%M:%S')})
# # results = collection.find({"sede": 1})
# # for result in results:
# # print(result)

Loading…
Cancel
Save