| ${set_css_arrow(simplelist, field)}${simplelist.model.fields[field].label} | + % endfor + % for extra_field in simplelist.arr_extra_fields: +${ extra_field } | + % endfor + +|||
|---|---|---|---|---|
| ${simplelist.model.fields[field].show_formatted(row[field])} | + % else: +${simplelist.model.fields[field].show_formatted(row[field])}${str(simplelist.model.fields[field].related_model.fields[simplelist.model.fields[field].named_field].show_formatted(row[field]))} | + % endif + % else: + %if type(simplelist.model.fields[field]).__name__!='ForeignKeyField': +${str(simplelist.model.fields[field].show_formatted(row[field]))|n} | + % else: +${str(simplelist.model.fields[field].related_model.fields[simplelist.model.fields[field].named_field].show_formatted(row[field]))|n} | + % endif + % endif + % endfor + + % for extra_field_func in simplelist.arr_extra_options: +${ simplelist.set_options(extra_field_func, row)|n } | + % endfor +
+% if pages!='': +${_('Pages')}: ${pages|n} +% endif +
diff --git a/parameciofast/modules/fastadmin/__init__.py b/parameciofast/modules/fastadmin/__init__.py index a41a3aa..25affab 100644 --- a/parameciofast/modules/fastadmin/__init__.py +++ b/parameciofast/modules/fastadmin/__init__.py @@ -5,7 +5,8 @@ from settings import config #from parameciofast.fast import app from parameciofast.libraries.session import ParamecioSession from starlette.middleware.sessions import SessionMiddleware -from parameciofast.fast import app +from parameciofast.libraries.db.webmodel import WebModel +#from parameciofast.fast import app cookie_name='paramecio_session' @@ -17,19 +18,38 @@ url_app=config.apps['admin'][2] admin_app=FastAPI(docs_url="/docs", openapi_url="/docs/openapi.json", title='Paramecio Admin', version='0.9') +@admin_app.middleware('http') +async def check_session(request: Request, call_next): + + db=WebModel.connection() + + try: + + request.state.db=db + + response = await call_next(request) + + except: + + db.close() + + raise + + return response + + # FastAPI set the middlewares in reversed order. @admin_app.middleware("http") async def check_session(request: Request, call_next): - #print(request.scope['route'].name) + path=request.scope['path'] - response = await call_next(request) - - if not request.session.get('login_admin', None) and request.scope['endpoint'].__name__!='login_admin' and request.scope['endpoint'].__name__!='signup_admin' and request.scope['endpoint'].__name__!='check_login_admin' and request.scope['endpoint'].__name__!='signup_insert_admin' and request.scope['endpoint'].__name__!='logout_admin': + if not request.session.get('login_admin', None) and path!=url_app+'login' and path!=url_app+'signup' and path!=url_app+'logout': return RedirectResponse(request.url_for('login_admin')) - + + response = await call_next(request) return response diff --git a/parameciofast/modules/fastadmin/ausers.py b/parameciofast/modules/fastadmin/ausers.py index feb9cf8..151d517 100644 --- a/parameciofast/modules/fastadmin/ausers.py +++ b/parameciofast/modules/fastadmin/ausers.py @@ -1,4 +1,6 @@ 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 @@ -6,6 +8,9 @@ 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 + env=env_theme(__file__) @@ -23,9 +28,19 @@ modules_admin.append(['fastadmin_users', 'people-circle']) modules_admin_icons.append('