146 lines
5.4 KiB
Python
146 lines
5.4 KiB
Python
from paramecio.modules.admin2.models.admin import UserAdmin2
|
|
from paramecio.modules.admin2.app import admin_app
|
|
from paramecio.modules.admin2.libraries.config import modules_admin, modules_admin_icons
|
|
from paramecio.libraries.mtemplates import PTemplate, env_theme
|
|
from paramecio.libraries.i18n import I18n, PGetText
|
|
import paramecio.modules.admin2.libraries.i18n as i18n_lang
|
|
import os
|
|
#from paramecio.libraries.lists import SimpleList
|
|
from paramecio.libraries.generate_admin_class import GenerateAdminClass
|
|
from paramecio.libraries.db.formsutils import show_form
|
|
from paramecio.libraries.db.coreforms import SelectForm
|
|
from paramecio.libraries.db.coreforms import PasswordForm
|
|
from paramecio.libraries.db.coreforms import HiddenForm
|
|
from paramecio.wsgiapp import app
|
|
from paramecio.libraries.db.webmodel import WebModel
|
|
from paramecio.modules.admin2.models.admin import UserAdmin2, PrivilegesModule2
|
|
from paramecio.libraries.urls import add_get_parameters
|
|
from paramecio.modules.admin2.libraries.config import modules_admin
|
|
|
|
env=env_theme(__file__)
|
|
|
|
t=PTemplate(env)
|
|
|
|
i18n=I18n('admin2')
|
|
|
|
gtext=PGetText(__file__)
|
|
|
|
_=gtext.gettext
|
|
|
|
|
|
#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['admin_app.admin_users']=[_('Admin users'), 'people-circle', ['admin_app.admin_permissions']]
|
|
|
|
modules_admin_icons['admin_app.admin_users']='<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', name="admin_app.admin_users")
|
|
@admin_app.post('/ausers', name="admin_app.admin_users")
|
|
def admin_users(session={}):
|
|
|
|
#i18n=I18n('admin2')
|
|
|
|
db=WebModel.connection()
|
|
|
|
user_admin=UserAdmin2(db)
|
|
|
|
user_admin.fields['privileges'].name_form=SelectForm
|
|
|
|
user_admin.fields['dark_theme'].name_form=SelectForm
|
|
|
|
user_admin.fields['double_auth'].name_form=SelectForm
|
|
|
|
user_admin.create_forms(['username', 'password', 'email', 'privileges', 'lang', 'dark_theme', 'double_auth'])
|
|
|
|
user_admin.forms['privileges'].arr_select={0: I18n.lang('admin', 'without_privileges', 'Without privileges'), 1: I18n.lang('admin', 'selected_privileges', 'Selected privileges'), 2: I18n.lang('admin', 'administrator', 'Administrator')}
|
|
|
|
user_admin.forms['dark_theme'].arr_select={0: i18n.tlang('Light theme'), 1: i18n.tlang('Dark theme')}
|
|
|
|
user_admin.forms['double_auth'].arr_select={0: i18n.tlang('No'), 1: i18n.tlang('Yes')}
|
|
|
|
user_admin.fields['password'].protected=False
|
|
|
|
url=app.get_url('admin_app.admin_users')
|
|
|
|
admin=GenerateAdminClass(user_admin, url, t)
|
|
|
|
admin.list.fields_showed=['username', 'email', 'double_auth', 'privileges', 'last_login']
|
|
|
|
admin.list.search_fields=['username']
|
|
|
|
admin.arr_fields_edit=['username', 'password', 'repeat_password', 'email', 'privileges', 'lang', 'dark_theme', 'double_auth']
|
|
|
|
admin.list.arr_extra_options=[user_options]
|
|
|
|
slist=admin.show()
|
|
|
|
db.close()
|
|
|
|
return t.load_template('users.phtml', title=i18n.tlang('Admin users'), tlang=i18n.tlang, module_selected='admin_app.admin_users', slist=slist, session=session)
|
|
|
|
@admin_app.get('/ausers/permissions/<user_id:int>', name="admin_app.admin_permissions")
|
|
@admin_app.post('/ausers/permissions/<user_id:int>', name="admin_app.admin_permissions")
|
|
def admin_permissions(user_id, session={}):
|
|
|
|
db=WebModel.connection()
|
|
|
|
user_admin=UserAdmin2(db)
|
|
|
|
arr_user=user_admin.select_a_row(user_id, ['username'])
|
|
|
|
if arr_user:
|
|
|
|
priv=PrivilegesModule2(db)
|
|
|
|
url=app.get_url('admin_app.admin_permissions', user_id=user_id)
|
|
|
|
admin=GenerateAdminClass(priv, url, t)
|
|
|
|
admin.list.fields_showed=['module']
|
|
|
|
admin.list.search_fields=['module']
|
|
|
|
priv.fields['module'].name_form=SelectForm
|
|
|
|
arr_modules={k:v[0] for k, v in modules_admin.items()}
|
|
|
|
priv.fields['user_id'].name_form=HiddenForm
|
|
|
|
priv.fields['user_id'].extra_parameters=[]
|
|
|
|
priv.fields['user_id'].default_value=user_id
|
|
|
|
priv.create_forms()
|
|
|
|
priv.set_conditions('WHERE user_id=%s', [user_id])
|
|
|
|
priv.forms['module'].arr_select=arr_modules
|
|
|
|
#print(user_id)
|
|
#with db.query('select *')
|
|
|
|
privileges_admin=admin.show()
|
|
|
|
else:
|
|
arr_user={'username': i18n.tlang('User not found')}
|
|
privileges_admin=''
|
|
|
|
db.close()
|
|
|
|
return t.load_template('access.phtml', title=i18n.tlang('Users permissions'), privileges_admin=privileges_admin, user=arr_user, module_selected='admin_app.admin_users')
|
|
|
|
def user_options(url, id, arr_row):
|
|
|
|
options=[]
|
|
options.append('<a href="'+add_get_parameters(url, op_admin=1, id=id)+'">'+I18n.lang('common', 'edit', 'Edit')+'</a>')
|
|
if not arr_row['privileges']:
|
|
options.append(f'<a href="{app.get_url('admin_app.admin_permissions', user_id=id)}">'+i18n.tlang('User access')+'</a>')
|
|
options.append('<a href="'+add_get_parameters(url, op_admin=3, id=id)+'">'+I18n.lang('common', 'delete', 'Delete')+'</a>')
|
|
return options
|