95 lines
3.5 KiB
Python
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}
|
|
|