parameciofast/parameciofast/modules/fastadmin/ausers.py

95 lines
3.5 KiB
Python

from fastapi.responses import HTMLResponse
from fastapi import Request
from parameciofast.modules.fastadmin.models.admin import UserAdmin
from parameciofast.modules.fastadmin import admin_app
from parameciofast.modules.fastadmin.libraries.config import modules_admin, modules_admin_icons
from parameciofast.libraries.mtemplates import PTemplate, env_theme
from parameciofast.libraries.i18n import I18n
import parameciofast.modules.fastadmin.libraries.i18n
from parameciofast.fast import app
import os
from pydantic import BaseModel
from parameciofast.libraries.lists import SimpleList
from parameciofast.libraries.formsutils import show_form
from parameciofast.libraries.db.coreforms import SelectForm
from parameciofast.libraries.db.coreforms import PasswordForm
env=env_theme(__file__)
t=PTemplate(env)
#t.env.directories=admin_t.env.directories
tpl_path=os.path.dirname(__file__).replace('/admin', '')+'/templates/admin'
if t.env.directories[1]!=tpl_path:
t.env.directories.insert(1, tpl_path)
#modules_admin.append(['menu_users', 'people-circle', True])
modules_admin.append(['fastadmin_users', 'people-circle'])
modules_admin_icons.append('<symbol id="people-circle" viewBox="0 0 16 16"><path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/><path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/></symbol>')
@admin_app.get('/ausers', response_class=HTMLResponse)
def fastadmin_users(request: Request):
i18n=I18n('fastadmin')
db=request.state.db
users=UserAdmin(db)
url=app.url_path_for('fastadmin_users')
slist=SimpleList(users, url, t, request)
slist.fields_showed=['username', 'email', 'double_auth', 'last_login']
return t.load_template('users.phtml', title=i18n.tlang('Admin users'), tlang=i18n.tlang, url_for=app.url_path_for, module_selected='fastadmin_users', slist=slist, session=request.session)
@admin_app.get('/ausers/edit/{item_id}', response_class=HTMLResponse)
def fastadmin_users_edit(item_id: int, request: Request):
i18n=I18n('fastadmin')
db=request.state.db
session=request.session
users=UserAdmin(db)
users.fields['dark_theme'].name_form=SelectForm
users.fields['disabled'].name_form=SelectForm
users.fields['double_auth'].name_form=SelectForm
users.create_forms()
users.forms['dark_theme'].arr_select={0: _('Light theme'), 1: _('Dark theme')}
users.forms['disabled'].arr_select={0: _('No'), 1: _('Yes')}
users.forms['double_auth'].arr_select={0: _('No'), 1: _('Yes')}
arr_user=users.select_a_row(item_id)
fields=['username', 'password', 'email', 'lang', 'disabled', 'double_auth', 'dark_theme']
forms={k:v for k,v in users.forms.items() if k in fields}
#forms['repeat_password']=
edit_form=show_form(arr_user, forms, t, session, yes_error=False, pass_values=True, modelform_tpl='forms/modelform.phtml')
url_edit=request.url_for('fastadmin_users_post', item_id=item_id)
return t.load_template('utils/edit.phtml', title=i18n.tlang('Edit admin users'), tlang=i18n.tlang, url_for=app.url_path_for, module_selected='fastadmin_users', session=request.session, edit_form=edit_form, url_edit=url_edit)
#return ""
@admin_app.post('/ausers/edit/{item_id}')
def fastadmin_users_post(item_id: int, request: Request):
error=1
txt_message=''
return {'error': error, 'txt_message': txt_message}