11import asyncio
22import os
33
4- import yaml
54from hypercorn import Config
65from hypercorn .asyncio import serve
7- from piccolo .apps .user .tables import BaseUser
86from piccolo .engine import PostgresEngine
9- from piccolo .engine .sqlite import SQLiteEngine
107from piccolo .table import create_db_tables
118from piccolo .table_reflection import TableStorage
129from piccolo_admin .endpoints import TableConfig , create_admin
1310from piccolo_api .encryption .providers import XChaCha20Provider
1411from piccolo_api .mfa .authenticator .provider import AuthenticatorProvider
15- from piccolo_api .mfa .authenticator .tables import (
16- AuthenticatorSecret as AuthenticatorSecret_ ,
17- )
18- from piccolo_api .session_auth .tables import SessionsBase
19-
20- with open ("config.yaml" ) as stream :
21- try :
22- admin_config = yaml .safe_load (stream )
23- BASE_CONFIG = admin_config .get ("tables" )
24- except yaml .YAMLError as exc :
25- raise exc
26-
27- DB = SQLiteEngine ()
28-
29-
30- class Sessions (SessionsBase , db = DB ):
31- pass
32-
33-
34- class User (BaseUser , tablename = "piccolo_user" , db = DB ):
35- pass
36-
37-
38- class AuthenticatorSecret (AuthenticatorSecret_ , db = DB ):
39- pass
12+ from tables import AuthenticatorSecret , Sessions , User
13+ from utils import additional_config
4014
4115
4216async def main ():
@@ -72,79 +46,51 @@ async def main():
7246 await storage .reflect (schema_name = "public" )
7347
7448 # additional configuration of admin tables
75- if BASE_CONFIG is not None :
76- tables_to_show = [table .lower () for table in BASE_CONFIG ]
77- found_tables = [
78- table
79- for table in storage .tables .values ()
80- if table ._meta .tablename in tables_to_show
81- ]
49+ if additional_config .tables is not None :
8250 admin_tables = []
83- for table in found_tables :
84- capitalize_table_name = table ._meta .tablename .capitalize ()
85- # visible columns
86- try :
87- visible_columns = [
88- column
89- for column in table ._meta .columns
90- if column ._meta .name
91- in BASE_CONFIG [capitalize_table_name ].get (
92- "visible_columns" , None
93- )
94- ]
95- except TypeError :
96- visible_columns = None
97- # visible filters
98- try :
99- visible_filters = [
100- column
101- for column in table ._meta .columns
102- if column ._meta .name
103- in BASE_CONFIG [capitalize_table_name ].get (
104- "visible_filters" , None
51+ for config in additional_config .tables :
52+ for table in storage .tables .values ():
53+ if table ._meta .tablename == config .table_name :
54+ # visible columns
55+ visible_columns = [
56+ column
57+ for column in table ._meta .columns
58+ if column ._meta .name in config .visible_columns
59+ ]
60+ # visible filters
61+ visible_filters = [
62+ column
63+ for column in table ._meta .columns
64+ if column ._meta .name in config .visible_filters
65+ ]
66+ # rich text columns
67+ rich_text_columns = [
68+ column
69+ for column in table ._meta .columns
70+ if column ._meta .name == config .rich_text_columns
71+ ]
72+ # link column
73+ try :
74+ link_column = [
75+ column
76+ for column in table ._meta .columns
77+ if column ._meta .name == config .link_column
78+ ][0 ]
79+ except IndexError :
80+ link_column = None
81+ # menu_group
82+ menu_group = config .menu_group
83+
84+ admin_tables .append (
85+ TableConfig (
86+ table_class = table ,
87+ visible_columns = visible_columns ,
88+ visible_filters = visible_filters ,
89+ rich_text_columns = rich_text_columns ,
90+ link_column = link_column ,
91+ menu_group = menu_group ,
92+ )
10593 )
106- ]
107- except TypeError :
108- visible_filters = None
109- # rich text columns
110- try :
111- rich_text_columns = [
112- column
113- for column in table ._meta .columns
114- if column ._meta .name
115- in BASE_CONFIG [capitalize_table_name ].get (
116- "rich_text_columns" , None
117- )
118- ]
119- except TypeError :
120- rich_text_columns = None
121- # link column
122- try :
123- link_column = [
124- column
125- for column in table ._meta .columns
126- if column ._meta .name
127- == BASE_CONFIG [capitalize_table_name ].get (
128- "link_column" , None
129- )
130- ][0 ]
131- except IndexError :
132- link_column = None
133- # menu_group
134- menu_group = BASE_CONFIG [capitalize_table_name ].get (
135- "menu_group" , None
136- )
137-
138- admin_tables .append (
139- TableConfig (
140- table_class = table ,
141- visible_columns = visible_columns ,
142- visible_filters = visible_filters ,
143- rich_text_columns = rich_text_columns ,
144- link_column = link_column ,
145- menu_group = menu_group ,
146- )
147- )
14894 else :
14995 admin_tables = storage .tables .values ()
15096
@@ -170,7 +116,7 @@ async def main():
170116 secret_table = AuthenticatorSecret ,
171117 ),
172118 ],
173- sidebar_links = admin_config . get ( " sidebar_links" , None ) ,
119+ sidebar_links = additional_config . sidebar_links or {} ,
174120 )
175121
176122 # Server
0 commit comments