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~~ - ~~retrdatare current_time al costruttore~~
- route backup - route backup
- gestione account login (?) - gestione account login (?)
- gestione eventi,sedi,livelli - gestione gui eventi,sedi,livelli
- refactor main.py - refactor main.py

136
main.py

@ -3,7 +3,7 @@ from datetime import datetime, timedelta
from montydb import MontyClient from montydb import MontyClient
from montydb.types.objectid import ObjectId from montydb.types.objectid import ObjectId
import locale import locale
from pages import manager, user from pages import manager, user, useredit, index
import signal import signal
import os import os
import shutil import shutil
@ -15,128 +15,51 @@ passwords = {'admin': [0,'sw1ng3rs',0, "Matteo Benedetto"], 'user': [1,'pass',1,
# Set the locale to Italian # Set the locale to Italian
locale.setlocale(locale.LC_ALL, 'it_IT.utf8') locale.setlocale(locale.LC_ALL, 'it_IT.utf8')
#styling def styling():
ui.colors(primary='black', secondary="lightgray") ui.colors(primary='black', secondary="lightgray")
ui.query('body').style(f'font-family: sans-serif') 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 # Create a connection
conn = MontyClient("db") conn = MontyClient("db")
# Access your database
# Access your database and collection
db = conn.letsswing db = conn.letsswing
# Routes # Routes
@ui.page('/manager/{sede}/{livello}', title="Let's Swing Admin", favicon="assets/favicon.ico") @ui.page('/manager/{sede}/{livello}', title="Let's Swing Admin", favicon="assets/favicon.ico")
def manager_page(sede:int, livello:int) -> None: def manager_page(sede:int, livello:int) -> None:
#styling login_check()
ui.colors(primary='black', secondary="lightgray") styling()
ui.query('body').style(f'font-family: sans-serif')
############# manage = manager.Manager()
manage = manager.Manager() manage.main(db, sede, livello)
manage.main(db, sede, livello)
# Routes # Routes
@ui.page('/', title="Let's Swing Admin", favicon="assets/favicon.ico") @ui.page('/', title="Let's Swing Admin", favicon="assets/favicon.ico")
def index_page() -> None: def index_page() -> None:
## LOGIN CHECK login_check()
if not app.storage.user.get('authenticated', False): styling()
return RedirectResponse('/login') index.main(db)
#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)
@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: def user_page(userid: str) -> None:
login_check()
## LOGIN CHECK styling()
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) user.main(userid, db)
@ui.page('/edit/{userid}/{sede}/{livello}', title="Let's Swing Admin", favicon="assets/favicon.ico") @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: def useredit_page(userid: str, sede: int, livello: int) -> None:
login_check()
## LOGIN CHECK styling()
if not app.storage.user.get('authenticated', False): useredit.main(db, userid, sede, livello)
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")
@ui.page('/backup/{password}') @ui.page('/backup/{password}')
def password(password: str) -> None: def api_backup(password: str) -> None:
if password != "1337swing": if password != "1337swing":
return {'msg':'password errata'} 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") @ui.page('/login',title="Let's Swing Admin", favicon="assets/favicon.ico")
def login() -> None: def page_login() -> None:
styling()
#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 def try_login() -> None: # local function to avoid passing username and password as arguments
if passwords.get(username.value)[1] == password.value: 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]}) 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 # 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