Browse Source

1.1.1

master
enne2 2 years ago
parent
commit
45566f8aac
  1. 1
      .nicegui/storage_user_14b0845c-53f0-4f59-8733-3e6e5a2a5dc8.json
  2. 2
      README.md
  3. 136
      main.py
  4. BIN
      pages/__pycache__/index.cpython-311.pyc
  5. BIN
      pages/__pycache__/useredit.cpython-311.pyc
  6. 32
      pages/index.py
  7. 42
      pages/useredit.py

1
.nicegui/storage_user_14b0845c-53f0-4f59-8733-3e6e5a2a5dc8.json

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

2
README.md

@ -7,5 +7,5 @@
- ~~retrdatare current_time al costruttore~~
- route backup
- gestione account login (?)
- gestione eventi,sedi,livelli
- gestione gui eventi,sedi,livelli
- refactor main.py

136
main.py

@ -3,7 +3,7 @@ from datetime import datetime, timedelta
from montydb import MontyClient
from montydb.types.objectid import ObjectId
import locale
from pages import manager, user
from pages import manager, user, useredit, index
import signal
import os
import shutil
@ -15,128 +15,51 @@ passwords = {'admin': [0,'sw1ng3rs',0, "Matteo Benedetto"], 'user': [1,'pass',1,
# Set the locale to Italian
locale.setlocale(locale.LC_ALL, 'it_IT.utf8')
#styling
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
#############
def styling():
ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif')
def login_check():
if not app.storage.user.get('authenticated', False):
return RedirectResponse('/login')
# Create a connection
conn = MontyClient("db")
# Access your database and collection
# Access your database
db = conn.letsswing
# Routes
@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)
login_check()
styling()
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')
#############
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').style("positon:absolute")
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").style("positon:absolute"):
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)
login_check()
styling()
index.main(db)
@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')
#############
login_check()
styling()
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')
#############
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")
def useredit_page(userid: str, sede: int, livello: int) -> None:
login_check()
styling()
useredit.main(db, userid, sede, livello)
@ui.page('/backup/{password}')
def password(password: str) -> None:
def api_backup(password: str) -> None:
if password != "1337swing":
return {'msg':'password errata'}
@ -152,13 +75,8 @@ def password(password: str) -> None:
@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 page_login() -> None:
styling()
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]})
@ -177,4 +95,4 @@ def login() -> None:
# Run main loop
ui.run(host="0.0.0.0", storage_secret='THIS_NEEDS_TO_BE_CHANGED')
ui.run(host="0.0.0.0", storage_secret='5w1ng4ndn0th1ngm0r3')

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

Binary file not shown.

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

Binary file not shown.

32
pages/index.py

@ -0,0 +1,32 @@
from nicegui import ui
from montydb import MontyClient
def main(db: MontyClient):
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').style("positon:absolute")
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").style("positon:absolute"):
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)

42
pages/useredit.py

@ -0,0 +1,42 @@
from nicegui import ui
from montydb import MontyClient
from montydb.types.objectid import ObjectId
import signal
import os
def main(db: MontyClient, userid: str, sede: int, livello: int) -> None:
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")
Loading…
Cancel
Save