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']='' @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/', name="admin_app.admin_permissions") @admin_app.post('/ausers/permissions/', 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(''+I18n.lang('common', 'edit', 'Edit')+'') if not arr_row['privileges']: options.append(f''+i18n.tlang('User access')+'') options.append(''+I18n.lang('common', 'delete', 'Delete')+'') return options