zrb 1.0.0a21__py3-none-any.whl → 1.0.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zrb/__init__.py +2 -1
- zrb/builtin/llm/llm_chat.py +2 -2
- zrb/builtin/llm/tool/web.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_task.py +2 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +4 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +16 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +91 -9
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/{my_entity_usecase.py → my_entity_service.py} +7 -13
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +8 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +37 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +13 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +22 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +42 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +7 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/api_client.py +1 -1
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/direct_client.py +1 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/factory.py +3 -3
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +10 -10
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +4 -4
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app.py +42 -5
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/{base_usecase.py → base_service.py} +3 -3
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/view.py +37 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +24 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/api_client.py +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/direct_client.py +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +2 -2
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/{user_usecase.py → user_service.py} +7 -7
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +42 -13
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +74 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +6 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +4 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +34 -0
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +1 -0
- zrb/builtin/python.py +1 -1
- zrb/content_transformer/any_content_transformer.py +7 -0
- zrb/content_transformer/content_transformer.py +6 -0
- zrb/runner/cli.py +4 -6
- zrb/runner/web_app.py +28 -280
- zrb/runner/web_config/config.py +91 -0
- zrb/runner/web_config/config_factory.py +26 -0
- zrb/runner/web_route/docs_route.py +17 -0
- zrb/runner/web_route/error_page/serve_default_404.py +28 -0
- zrb/runner/{web_controller/error_page/controller.py → web_route/error_page/show_error_page.py} +2 -2
- zrb/runner/{web_controller → web_route}/error_page/view.html +5 -0
- zrb/runner/web_route/home_page/home_page_route.py +51 -0
- zrb/runner/web_route/login_api_route.py +31 -0
- zrb/runner/web_route/login_page/login_page_route.py +39 -0
- zrb/runner/web_route/logout_api_route.py +18 -0
- zrb/runner/web_route/logout_page/logout_page_route.py +40 -0
- zrb/runner/{web_controller/group_info_page/controller.py → web_route/node_page/group/show_group_page.py} +3 -3
- zrb/runner/web_route/node_page/node_page_route.py +50 -0
- zrb/runner/{web_controller/session_page/controller.py → web_route/node_page/task/show_task_page.py} +3 -3
- zrb/runner/web_route/refresh_token_api_route.py +38 -0
- zrb/runner/web_route/static/static_route.py +44 -0
- zrb/runner/web_route/task_input_api_route.py +47 -0
- zrb/runner/web_route/task_session_api_route.py +102 -0
- zrb/runner/web_schema/session.py +5 -0
- zrb/runner/web_schema/token.py +11 -0
- zrb/runner/web_schema/user.py +32 -0
- zrb/runner/web_util/cookie.py +29 -0
- zrb/runner/{web_util.py → web_util/html.py} +1 -23
- zrb/runner/web_util/token.py +68 -0
- zrb/runner/web_util/user.py +63 -0
- zrb/session/session.py +6 -4
- zrb/session_state_logger/{default_session_state_logger.py → session_state_logger_factory.py} +1 -1
- zrb/task/base_task.py +29 -4
- zrb/task/base_trigger.py +2 -0
- zrb/task/cmd_task.py +2 -0
- zrb/task/http_check.py +2 -0
- zrb/task/llm_task.py +2 -0
- zrb/task/make_task.py +2 -0
- zrb/task/rsync_task.py +2 -0
- zrb/task/scaffolder.py +8 -5
- zrb/task/scheduler.py +2 -0
- zrb/task/tcp_check.py +2 -0
- zrb/task_status/task_status.py +4 -3
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b1.dist-info}/METADATA +1 -1
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b1.dist-info}/RECORD +125 -81
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_usecase_factory.py +0 -6
- zrb/runner/web_config.py +0 -274
- zrb/runner/web_controller/home_page/__init__.py +0 -0
- zrb/runner/web_controller/home_page/controller.py +0 -33
- zrb/runner/web_controller/login_page/controller.py +0 -25
- zrb/runner/web_controller/logout_page/controller.py +0 -26
- zrb/runner/web_controller/session_page/__init__.py +0 -0
- /zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/{create_column_task.py → add_column_task.py} +0 -0
- /zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/{factory.py → my_entity_repository_factory.py} +0 -0
- /zrb/runner/{web_controller → web_route}/__init__.py +0 -0
- /zrb/runner/{web_controller/group_info_page → web_route/home_page}/__init__.py +0 -0
- /zrb/runner/{web_controller → web_route}/home_page/view.html +0 -0
- /zrb/runner/{web_controller → web_route}/login_page/view.html +0 -0
- /zrb/runner/{web_controller → web_route}/logout_page/view.html +0 -0
- /zrb/runner/{web_controller/group_info_page → web_route/node_page/group}/view.html +0 -0
- /zrb/runner/{web_controller/session_page → web_route/node_page/task}/partial/input.html +0 -0
- /zrb/runner/{web_controller/session_page → web_route/node_page/task}/view.html +0 -0
- /zrb/runner/{refresh-token.template.js → web_route/static/refresh-token.template.js} +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/common.css +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/favicon-32x32.png +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/login/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/logout/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/pico.min.css +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/common-util.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/current-session.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/event.js +0 -0
- /zrb/runner/{web_controller/static → web_route/static/resources}/session/past-session.js +0 -0
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b1.dist-info}/WHEEL +0 -0
- {zrb-1.0.0a21.dist-info → zrb-1.0.0b1.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
zrb/__init__.py,sha256=
|
1
|
+
zrb/__init__.py,sha256=JYLyBeSv-FP2iVKgsXJH8Ae-Cmjp5nmmIiwqayhCOEE,2964
|
2
2
|
zrb/__main__.py,sha256=tCRJm0qtx646ojZP8Rtgu8t_SDdSpply21HbR5poVvk,744
|
3
3
|
zrb/attr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
zrb/attr/type.py,sha256=4TV5gPYMMrKh5V-yB6iRYKCbsXAH_AvGXMsjxKLHcUs,568
|
@@ -7,88 +7,118 @@ zrb/builtin/base64.py,sha256=1YnSwASp7OEAvQcsnHZGpJEvYoI1Z2zTIJ1bCDHfcPQ,921
|
|
7
7
|
zrb/builtin/git.py,sha256=xHzg0srhp1uOSXWvwA--Fo8idkt0G9010iJ8uIndzg4,5463
|
8
8
|
zrb/builtin/git_subtree.py,sha256=GwI8befmvXEoX1xyZ4jkeG8nsyCkuRG1lzPiGss3yqw,3493
|
9
9
|
zrb/builtin/group.py,sha256=3xfEx9aEDcq6rDprGKYGqOXN2i0ts4W_RQVErL51o1o,1594
|
10
|
-
zrb/builtin/llm/llm_chat.py,sha256=
|
10
|
+
zrb/builtin/llm/llm_chat.py,sha256=S_8CM18fWXkrcRjRcyIfJ1rK3FJ1mp8qBIRtL-Ds048,1399
|
11
11
|
zrb/builtin/llm/tool/cli.py,sha256=n8THj513k1vrXUoZrTcxESmdZzhBOP1-L3Dmup5ZW54,225
|
12
12
|
zrb/builtin/llm/tool/rag.py,sha256=vH4ztOATqpVqFaXEccZ2DkZ5nxioMy3t9yaaUUhAKwI,6831
|
13
|
-
zrb/builtin/llm/tool/web.py,sha256=
|
13
|
+
zrb/builtin/llm/tool/web.py,sha256=N2HYuXbKPUpjVAq_UnQMbUrTIE8u0Ut3TeQadZ7_NJc,2217
|
14
14
|
zrb/builtin/md5.py,sha256=0pNlrfZA0wlZlHvFHLgyqN0JZJWGKQIF5oXxO44_OJk,949
|
15
15
|
zrb/builtin/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
zrb/builtin/project/add/fastapp/fastapp_input.py,sha256=fYD6n8-PlrTyz1Kq5GYAt0PQsyUp2qsPKRJ68hINSXE,314
|
17
|
-
zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=
|
17
|
+
zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=XuyQVuaaNRPQftisSpWMFmKFXpEi4HngKW62aRgz3KQ,2644
|
18
18
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8,sha256=fgvHmuskgYiCvHZHaFtiyOWW0zasVrs0P-sFHOq3W5U,56
|
19
19
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=1BMFpr_M5OyTs-weCZZlVlf85sWikzdbvmKu86YD7G0,28
|
20
20
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
|
21
21
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/
|
23
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py,sha256=
|
24
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=
|
25
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=
|
22
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=0sPR_pe_oYUevWu0FvMvxTu6lwefsw4YH01vkCBBZsg,391
|
23
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py,sha256=u83FKFN1m_Sdk2hf5XM66VPPOb8xQNRUEWHZsk9GNfU,585
|
24
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=sQ-zMTKNcqHlOkQs9jlhTG9IrbGQnNQURO7ClT8Assg,5126
|
25
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=VOeqpXq5kptK2O7Unc5R_Vt6macsUBBWmRWhVzt6RQY,10695
|
26
26
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/any_client_method.py,sha256=KH9h_QDf3nfagdfes3qLrnqlQrcjDngxslAxapAk0mc,603
|
27
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/
|
28
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/
|
27
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py,sha256=bnEsfdDdiT-ZtZ_P7VdXpxFY4SODQKT2O9AcK038g6A,2150
|
28
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py,sha256=_vYr5tpjffyztZ9ybRrWfsjlSW-aDnLmeczk5S_SEFg,311
|
29
29
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py,sha256=rEGj0fj0Al_YXmbNJGkqLOsaG8GHgJeo7mDbiqX1akw,1081
|
30
30
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py,sha256=Qgc65PUDHRXuHjRluq7R4lGyizm-A3BzjHkIH-xUn-0,908
|
31
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py,sha256=chQpEflbwV_m_ptvw_CVFik_9dh74iwnCO16AdmDkXo,509
|
31
32
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py,sha256=O98QJ0mH2obF_rY0dFopSEWrZ9PWm78ns2ESrjKBMgc,666
|
32
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/
|
33
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py,sha256=yeDqxt430vK0XFP8-5EUCmXOUGihlu1HIFMuQsunZXc,1665
|
34
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py,sha256=8YykCthDgjXT8MFvTrPSWYUXsfhafmoSMG9LH2ZiaD0,431
|
33
35
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py,sha256=S0sKnnABSGy3YzaExH40xJjm4UsEX6AyDE1u94ewk6A,648
|
34
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=
|
35
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=
|
36
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=
|
37
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py,sha256=
|
36
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=PYbPwO5odaQDzRIgKkLmLEKOOYs9gQw3q7L-Fakw90Q,1349
|
37
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=0M9wRWI9qRTtWebV5pIsoSD902_1h7ovEAV2AWQvB9U,3633
|
38
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=2totrFEzt0sEA4U0HHMy5GAsNM-X6uLv9eq8rsrA9XU,7145
|
39
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py,sha256=Ks-TtmuhzFy1H5BGQt7FU09ZHBTWwsSVhHFzOXpnSQg,120
|
38
40
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
|
39
41
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/any_client.py,sha256=6ZI13OocD7BDF6z6RdIUL6Rk9oDzT5L55bkaN1HjmZE,104
|
40
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/api_client.py,sha256=
|
41
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/direct_client.py,sha256=
|
42
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/factory.py,sha256=
|
42
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/api_client.py,sha256=EFgEryZqHb63FUzNZZw2UIoWIXX-IMRvWTz3DyNGacw,162
|
43
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/direct_client.py,sha256=KI_sZErBJBq18-0A_Rd0Na6uH38pWWLi2ndGhYAaICs,111
|
44
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/factory.py,sha256=I0zAkwOUdhGwuRB-YJpjkALruQZE6WnV_D8ye6fSjLA,405
|
43
45
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
44
46
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py,sha256=v0VH_EyDu6yzYuw_Y5_68cVnGh6014PbzFKQPayFW-k,3353
|
45
47
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako,sha256=U9DYBoBRd_ooogMfRydCUGEjIDZ-aV8OsjBiBrdTvy4,680
|
46
48
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
49
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
|
48
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py,sha256=
|
50
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py,sha256=FjxydR9RCQebAyKsZrQq5nvJR3Jr51m6cbu5vYCFXPM,952
|
49
51
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
52
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py,sha256=uWeBptdMZfX-PZ2OdB_4DnUpIc-AZcZqb9wAehBdx7w,927
|
51
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py,sha256=
|
53
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py,sha256=xP11wT5Q1P96vmcojwwPTfk7DmMUife04pOTBHJ8gPc,4566
|
52
54
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py,sha256=i9RQBy5UPW_wpLj4HSRXXjtUpMAsOeBVPBxn56qwKhw,3323
|
53
55
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py,sha256=ZLS3YnF-bz1AOjMCMHypzjNGX2UHXG-axdYngznC1mk,472
|
54
56
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app.py,sha256=
|
57
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app.py,sha256=wK7HHI_4bK-MV4JYjKuJLBExtHvwPdzZY1bRqnaTbpE,1498
|
56
58
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py,sha256=e7c7clq5myjC8tkhaieeWCSBtx-zdYlaB83Chlm65YY,6018
|
57
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/
|
59
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py,sha256=dmY_NWVJ_dIiHRWUQCHWl2lQx3gdkNzRLYgAijU19hE,10030
|
58
60
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine.py,sha256=cfNvlvx8Wiku0uePQOWjf7tudZutnRYjlkca3Z-iTSo,184
|
59
61
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py,sha256=hgRvoCH3C7t_iZuLThiqJVs20zUasQWbH_8jDceF8nk,243
|
60
62
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py,sha256=dbRryeP5u7ObGX3GjF9ZID00yXffOp-AxyXu8oVJP0I,82
|
61
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/
|
63
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/view.py,sha256=vrNAr90GMZnu37EMvi2BnTgWoAOpQwJxWCFkZAtFeFA,1161
|
64
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py,sha256=THXcnSyoxhWTb6nVnybcsozzSkuZ40gSDxQjv4n-8jo,1945
|
62
65
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py,sha256=B77GOA3qDOvU9d3aFKFZOdBs61QCPQea1x76FRa24tY,208
|
63
66
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py,sha256=K20Seket9IlZVaZpHSrpR0Ijndv71Mtqwiujzunx98w,87
|
64
67
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
68
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
|
66
69
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/any_client.py,sha256=jJLY951xnDQoLdRrKQTE0aan73gw2a7Zb_4QCu6qCu4,767
|
67
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/api_client.py,sha256=
|
68
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/direct_client.py,sha256=
|
70
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/api_client.py,sha256=MKUZz5_pN5I--gbVRSIBRagznSWY52BP7Cgjry_93Bw,291
|
71
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/direct_client.py,sha256=8jvTbC0pUxFBS-d39v3BqjIRRr7BH62afpGiXnj5pp8,222
|
69
72
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/factory.py,sha256=3Z-PStpA-7D_LiVO50CRchOY5m77rRhQrWcxq3fBLF4,390
|
70
73
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
71
74
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py,sha256=rtUFa4Gaoz3wmq7YfQ-lY8vYA5aWguwe2yvQQ1OLCL8,3343
|
72
75
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako,sha256=U9DYBoBRd_ooogMfRydCUGEjIDZ-aV8OsjBiBrdTvy4,680
|
73
76
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_user_table.py,sha256=j4tkh9NaTKNMefcy1dUdgRI5CzydUidli7i0Q6Ap-7Q,1021
|
74
77
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py,sha256=ZO-6D7V-KyESQ_e7LjiWRovsSNP5E3KS_oVo77xdFh8,157
|
75
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py,sha256=
|
78
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py,sha256=rSD22r8WToV9ZutQy7Jax__Fl2r999fXM_C9VSqb7es,1097
|
76
79
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
80
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
81
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py,sha256=4nz9-PBjm_Jr06nUoHXLj90Ygwm4qgT1Gy5MOMdoRfU,1583
|
79
82
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=titxurh5C0sMZ49OTb53EG32QGYzKfZhvHqpyCxlVag,961
|
80
83
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py,sha256=-tpEF53042tyorTLvWXpf_ti-w8W8wsvPzOOi_FsqZM,449
|
81
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/
|
82
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/
|
84
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=y988DbWLJprGn0Ro5yiiMgbmqas6HICVzUdQkhJa7Ks,1862
|
85
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=7-7STWOxInqYpU4GFvMyy0WnK2uPgajlbJQe5LSnYAQ,244
|
83
86
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
|
84
87
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
85
88
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py,sha256=xQ4UYy6aaHhE0NssPZ6QkeNFlC1KBd07EhDR0NNzj20,3349
|
86
89
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako,sha256=U9DYBoBRd_ooogMfRydCUGEjIDZ-aV8OsjBiBrdTvy4,680
|
87
90
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
91
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
|
89
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py,sha256=
|
92
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py,sha256=p8mc3hfVlDWjFYmwEZduJxVEKpEZ-eb50z2F4NPBKQU,2007
|
90
93
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py,sha256=VWSyJw-Ou96a5EENn1poa-GlthJZ3Js-Pbn9sY8bndI,1813
|
91
|
-
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/
|
94
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py,sha256=T_jXObeLA0iZqPAzC_LytB_52Ey0vkYq7Zy6pIewNro,2112
|
95
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html,sha256=K8jJFW99ORUrJqdybmWf191NK7tCFNoc5VmmNAcWqeo,133
|
96
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html,sha256=Q8jEwRraYJmn0rJIT1Ct4Dz2NB4S-NWJ1ZrU46oZkkw,126
|
97
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png,sha256=4NN-TGVL3y3MVbms7kCgD-Udp5XmQ6cwmWqRFYib0qw,12463
|
98
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png,sha256=PE5DCXqmMtNvwDWfHxVoRIy36mrTmq4IDv-YPgz4mvg,34025
|
99
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png,sha256=KHE2CBnJAxS81xzoPxdfYA17nJxvoOf6yM2UPaKIT7E,1402
|
100
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css,sha256=8cF9dTD4aYLVLn_GdHe5iwl7FBVWEX3AyViuf_A9PNc,82218
|
101
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css,sha256=rZaP3bJyScz6-0dUInIdIyc6qP4ScZkBBxX2LCXV4e4,82210
|
102
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css,sha256=zN4eQ0n5b2ooiMup_P4F2tUNf8JvlnZnUUvhXnwBkHA,82200
|
103
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css,sha256=ecP3r5jfzqjzZBSG53v3LJLAqz5Z0UWuMg2BsXD33YI,82209
|
104
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css,sha256=wKuyGRehVqkh9KJYevU6UYK7vrW2AZdjehVRBhiy26o,82194
|
105
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css,sha256=U3q94w27RRMQ0C4o-LMspRG2zx68FFxi42eQxDc78yw,82236
|
106
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css,sha256=gt0vz3JYANwfviNyiC9cQ8PsOJTwFzZ1zoQhT9z8GPU,82211
|
107
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css,sha256=huFPPU__cOeh4IiJoTqR0gDhnj0LUG7eYMUV65fHo-w,82193
|
108
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css,sha256=D-VyV6nPNG1Jdb8yBxUzwUE0bwuenzqhiCJqQQKZQs8,82217
|
109
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css,sha256=3V_VWRr9ge4h3MEXrYXAFNw_HxncLXt9EB6grMKSdMI,82194
|
110
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css,sha256=Ndbf_RoTxhDNVaofJp6_GUGtdB-8XImJ4GS1oCYPVFY,82200
|
111
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css,sha256=LqX5Qd7UFQ2GPLmyMToQFfuxx-7qXvY5g5C6g-Dh3t4,82208
|
112
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css,sha256=XYaffJhxOX5Q1ZRkQKQpecNkRUFgqU3rlw0hGGp46PQ,82217
|
113
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css,sha256=ugBx_XOtOaCtXQegW1KMk_Rwd4fRqresbggF_wMwCGQ,82211
|
114
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css,sha256=PhRN54GQjJwiSeMiLZVOWAxbT5aOhCc8VNchTuZg5KI,82200
|
115
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css,sha256=gsmvJ3u7_wNZ1kvJKiISWBpxMVMFV32tXOzoIGg6RUY,82235
|
116
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css,sha256=VbzLFd2cYK9nvJ3yDYaSJdtU_VbSXWo-4BYXbgew9js,82211
|
117
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css,sha256=z8fP6YMWH12oq-NPDVG2OXdza2K0K7k4RYWuxHCqzH8,82211
|
118
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css,sha256=mOkvNiE272UAgO8cVewJjU9BYidLxDZ97IcYodW--Ik,82218
|
119
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css,sha256=s8SdVQv4fX3W0LbfKDgUDczWcCyUfRbZhpyYtLdASC0,82212
|
120
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html,sha256=kSQFOLj1urKRbMwVX5S2AHmHUxF1SVjw3NWbt32pYRg,1137
|
121
|
+
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=5OD-rBYYFYEJTcU5i9GZVSbTssqp58RPasufCfTS84Y,104
|
92
122
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
123
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=vK8Qb5dDd_b5Y9gpehUr5OMSKggp1NlkWSz8ePAa0No,769
|
94
124
|
zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=LoMpPZtdR6RvtmR7tOA-z-8gzOeNXOyUaawvLoBzlIM,703
|
@@ -99,7 +129,7 @@ zrb/builtin/project/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
99
129
|
zrb/builtin/project/create/project-template/README.md,sha256=BHeWF_txdTDzKewWdWfGhO3YOTiW8E3YwTMnd0T1LVA,39
|
100
130
|
zrb/builtin/project/create/project-template/zrb_init.py,sha256=kY0x5MrkIVl3l1GtN2ROrYGNpsfN2dgRT84LCcSrGUs,44
|
101
131
|
zrb/builtin/project/create/project_task.py,sha256=B6ao8sd26mtLAkxwqjqiHy47PuACslYQtwAGcutgq7I,1140
|
102
|
-
zrb/builtin/python.py,sha256=
|
132
|
+
zrb/builtin/python.py,sha256=e-yyVWovwlxCBLyXGsd9Ek3IAL_X-Q_hpNNOPoRjOgk,349
|
103
133
|
zrb/builtin/setup/asdf/asdf.py,sha256=n_dWoyYa7vZ9tBCy8hgxmSWZ-XHltC1R70mIVZQhnXY,2419
|
104
134
|
zrb/builtin/setup/asdf/asdf_helper.py,sha256=6jARtyIAE1H82HKVQ84D25RrMAsAip_gD28X9ZlaTCk,1205
|
105
135
|
zrb/builtin/setup/common_input.py,sha256=M8q9Unt7dCfBHTHqV3__Mxk9YC2Pl3DDtxat2BanZCQ,870
|
@@ -122,8 +152,8 @@ zrb/cmd/cmd_result.py,sha256=L8bQJzWCpcYexIxHBNsXj2pT3BtLmWex0iJSMkvimOA,597
|
|
122
152
|
zrb/cmd/cmd_val.py,sha256=hr8Ge0FRe7FZStvkDYnd1MUOOiJW2lDOQqBv338Ymas,963
|
123
153
|
zrb/config.py,sha256=vZHW6ydp-o27FhMkz6aUYwH1UfEPbKacT55hb_GuSMk,3832
|
124
154
|
zrb/content_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
|
-
zrb/content_transformer/any_content_transformer.py,sha256=
|
126
|
-
zrb/content_transformer/content_transformer.py,sha256=
|
155
|
+
zrb/content_transformer/any_content_transformer.py,sha256=v8ZUbcix1GGeDQwB6OKX_1TjpY__ksxWVeqibwa_iZA,850
|
156
|
+
zrb/content_transformer/content_transformer.py,sha256=YU6Xr3G_IaCWKQGsf9z9YlCclbiwcJ7ytQv3wKpPIiI,2125
|
127
157
|
zrb/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
128
158
|
zrb/context/any_context.py,sha256=itd_lCyaPbZvcB_8XDEbvde9yQ7YPRHlOQCxE4hniB4,6251
|
129
159
|
zrb/context/any_shared_context.py,sha256=p1i9af_CUDz5Mf1h1kBZMAa2AEhf17I3O5IgAcjRLoY,1768
|
@@ -150,62 +180,76 @@ zrb/input/password_input.py,sha256=C2alr0hgO_YLWf9MDF2H8w0NIIf_DZlDJSdKQwEyM0E,1
|
|
150
180
|
zrb/input/str_input.py,sha256=NevZHX9rf1g8eMatPyy-kUX3DglrVAQpzvVpKAzf7bA,81
|
151
181
|
zrb/input/text_input.py,sha256=7i0lvWYw79ILp0NEOBn-Twwnv7sBEgxJsqVaai6LzAA,3033
|
152
182
|
zrb/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
|
-
zrb/runner/cli.py,sha256=
|
183
|
+
zrb/runner/cli.py,sha256=M1KNpEXdyxmSWEpyqEnWsCEq9H2e_xm7cmzSLRWLibE,6571
|
154
184
|
zrb/runner/common_util.py,sha256=JYBgNPSGyJHZo0X-Qp9sDi4B14NdcTi20n1fJP4SW3M,1298
|
155
|
-
zrb/runner/
|
156
|
-
zrb/runner/
|
157
|
-
zrb/runner/web_config.py,sha256=
|
158
|
-
zrb/runner/
|
159
|
-
zrb/runner/
|
160
|
-
zrb/runner/
|
161
|
-
zrb/runner/
|
162
|
-
zrb/runner/
|
163
|
-
zrb/runner/
|
164
|
-
zrb/runner/
|
165
|
-
zrb/runner/
|
166
|
-
zrb/runner/
|
167
|
-
zrb/runner/
|
168
|
-
zrb/runner/
|
169
|
-
zrb/runner/
|
170
|
-
zrb/runner/
|
171
|
-
zrb/runner/
|
172
|
-
zrb/runner/
|
173
|
-
zrb/runner/
|
174
|
-
zrb/runner/
|
175
|
-
zrb/runner/
|
176
|
-
zrb/runner/
|
177
|
-
zrb/runner/
|
178
|
-
zrb/runner/
|
179
|
-
zrb/runner/
|
180
|
-
zrb/runner/
|
181
|
-
zrb/runner/
|
182
|
-
zrb/runner/
|
183
|
-
zrb/runner/
|
184
|
-
zrb/runner/
|
185
|
+
zrb/runner/web_app.py,sha256=Ji2AWeFpJu5guXmur7mAAbjMToyjgmPDdfYu8047FFI,2616
|
186
|
+
zrb/runner/web_config/config.py,sha256=0wR58KreAmawGGfamm0GLZY344HaXs7qfDgHLavBDwo,3125
|
187
|
+
zrb/runner/web_config/config_factory.py,sha256=GNByKviNhQF5qG2ypmC_mV2xglzWHLVQC0x2SQJjrbA,894
|
188
|
+
zrb/runner/web_route/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
189
|
+
zrb/runner/web_route/docs_route.py,sha256=06QfDITvXTRphZWI0qlxbDfnB-44_eZpE-xotwKsvY8,514
|
190
|
+
zrb/runner/web_route/error_page/serve_default_404.py,sha256=y2gVZPPjGp5J9uRH6JpoboaFI3DMP-WmCjH6fWx5UBM,1056
|
191
|
+
zrb/runner/web_route/error_page/show_error_page.py,sha256=rlzQzwm5rEXpM63qpbHxQrdeHXsWRLTNptUZJmW-3kE,867
|
192
|
+
zrb/runner/web_route/error_page/view.html,sha256=h58zKnB170h2BTczBtD8CoECEEdXpojWMBbL_KwS4yU,1204
|
193
|
+
zrb/runner/web_route/home_page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
194
|
+
zrb/runner/web_route/home_page/home_page_route.py,sha256=hMTziWF25RnKzrVNna2hOcOUpeOinvwBExMqdk4OqNc,1765
|
195
|
+
zrb/runner/web_route/home_page/view.html,sha256=ee0O1bgoZO0qYVqaa67ad7wX_Zawqsy6F-ioxbjEQGk,1070
|
196
|
+
zrb/runner/web_route/login_api_route.py,sha256=AAK6DmQQrFi1Rg_Y5qF_ss11tzDMnziPXYILEb-vlb4,1125
|
197
|
+
zrb/runner/web_route/login_page/login_page_route.py,sha256=mm2zM8Y0_uZYmmgbwNOzO319sJ9QXiWwzzx19MXMPso,1301
|
198
|
+
zrb/runner/web_route/login_page/view.html,sha256=-MeHcSb3r0ouUhs-4aFgrlPjV_V7iz2a6PkobVpk77c,1761
|
199
|
+
zrb/runner/web_route/logout_api_route.py,sha256=ZlP1fi1RoNajLrm5ojo2o905TaE8OCB2soGhbLJ-2OE,612
|
200
|
+
zrb/runner/web_route/logout_page/logout_page_route.py,sha256=j8oW0PIKobyu1O8D1zCv6kybzRkbty1wlvAD0_87Icw,1338
|
201
|
+
zrb/runner/web_route/logout_page/view.html,sha256=O17ow4-KMbxTkwaQgR880Rlt1B9pnHrRTlgu5nsM4LA,1324
|
202
|
+
zrb/runner/web_route/node_page/group/show_group_page.py,sha256=98gp3UCmQhrvkLbO075x_Qy3_LGdxrDP2fFAf9UzAMQ,1316
|
203
|
+
zrb/runner/web_route/node_page/group/view.html,sha256=wISun627ciFZcvGpxANG0pr1zgUtSd1m1rNhCAYjRQw,1280
|
204
|
+
zrb/runner/web_route/node_page/node_page_route.py,sha256=LYi60eZ5ZGgykTIeSQk5Hn9OYjh3ocYgBIAue7Bznvw,2268
|
205
|
+
zrb/runner/web_route/node_page/task/partial/input.html,sha256=X2jy0q7TLQGP853exZMed0lqPezL3gzn6mnhB5QKfkc,178
|
206
|
+
zrb/runner/web_route/node_page/task/show_task_page.py,sha256=0HIFEuy5DLOKqff4Wib5WaMe5Om0B4C7BH63pPIA-OU,2639
|
207
|
+
zrb/runner/web_route/node_page/task/view.html,sha256=CwrIiPJAwHEEIVNp_wkTzW7kQJjTh41FSDamCswI3S8,3593
|
208
|
+
zrb/runner/web_route/refresh_token_api_route.py,sha256=JOuzhQUtRA62w3l27mq-jXgpaV7Rbj20jzxpQacssio,1478
|
209
|
+
zrb/runner/web_route/static/refresh-token.template.js,sha256=v_nF7nU1AXp-KtsHNNzamhciEi7NCSTPEDT5hCxn29g,735
|
210
|
+
zrb/runner/web_route/static/resources/common.css,sha256=u5rGLsPx2943z324iQ2X81krM3z-kc-8e1SkBdYAvKU,157
|
211
|
+
zrb/runner/web_route/static/resources/favicon-32x32.png,sha256=yu9AIU4k_qD4YHpul6XwJgOxIbmu0thv9ymm2QOsrAk,1456
|
212
|
+
zrb/runner/web_route/static/resources/login/event.js,sha256=1-NxaUwU-X7Tu2RAwVkzU7gngS0OdooH7Ple4_KDrh4,1135
|
213
|
+
zrb/runner/web_route/static/resources/logout/event.js,sha256=MfZxrTa2yL49Lbh7cCZDdqsIcf9e1q3W8-WjmZXV5pA,692
|
214
|
+
zrb/runner/web_route/static/resources/pico.min.css,sha256=_Esfkjs_U_igYn-tXBUaK3AEKb7d4l9DlmaOiw9bXfI,82214
|
215
|
+
zrb/runner/web_route/static/resources/session/common-util.js,sha256=t7_s5DXgMyZlT8L8LYZTkzOT6vWVeZvmCKjt-bflQY0,2117
|
216
|
+
zrb/runner/web_route/static/resources/session/current-session.js,sha256=JV0VRFeizFigPqQiXIeW3By36FDDZhkRM_a8UI4mh-E,6509
|
217
|
+
zrb/runner/web_route/static/resources/session/event.js,sha256=Bd3iW_XqWDlD6gJtSvFju-eT8vQzpkLHOcQU85quCWk,4154
|
218
|
+
zrb/runner/web_route/static/resources/session/past-session.js,sha256=RwGJYKSp75K8NZ-iZP58XppWgdzkiKFaiC5wgcMLxDo,5470
|
219
|
+
zrb/runner/web_route/static/static_route.py,sha256=7x069VfACZLkLykY0vLL5t13jIQPgkeEJtkpbfNQfLg,1540
|
220
|
+
zrb/runner/web_route/task_input_api_route.py,sha256=xkZ36vmHXMPj0ekp6ocUysO0QUgl1PLaSHt3YL_OfK8,1749
|
221
|
+
zrb/runner/web_route/task_session_api_route.py,sha256=yBwB0MmzX54iz8B4OtWGTjk7_5pnlRiPmNr6v3iMBFg,4370
|
222
|
+
zrb/runner/web_schema/session.py,sha256=NwbuS2Sv-CXO52nU-EZv8OMlD4vgCQWNeLC_dT0FK7I,92
|
223
|
+
zrb/runner/web_schema/token.py,sha256=Y7XCPS4WzrxslTDtHeLcPTTUpmWhPOkRcl4b99zrC7c,185
|
224
|
+
zrb/runner/web_schema/user.py,sha256=Kp10amg4i-f8Y-4czogv1YN7rwy0HdbePFiuovYu1ts,1018
|
225
|
+
zrb/runner/web_util/cookie.py,sha256=h0Ux94GxZgSF7mth1mMv2acxaYkU8iVhu6TICFLYxdE,1054
|
226
|
+
zrb/runner/web_util/html.py,sha256=TuUHjX3eKCBzoa7TYdMt8dfWWy06idauyCaG66X4Ygc,1838
|
227
|
+
zrb/runner/web_util/token.py,sha256=nkDKmcbJp3t9yTzVPpkzrpU4BlSNH5emKVzGkhX20cI,2522
|
228
|
+
zrb/runner/web_util/user.py,sha256=XupVVe-IybL10bUKfEg1SfSf1mTIc4Wv2PoJCn-NNAc,1967
|
185
229
|
zrb/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
186
230
|
zrb/session/any_session.py,sha256=x57mS15E-AfUjdVxwOWEzCBjW32zjer7WoeBw0guoDc,5266
|
187
|
-
zrb/session/session.py,sha256=
|
231
|
+
zrb/session/session.py,sha256=aDaLV1tuE7PhcC17LMk6c7KiSs7yX7QXI9O-Z4MMZO8,9967
|
188
232
|
zrb/session_state_log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
189
233
|
zrb/session_state_log/session_state_log.py,sha256=VVghDMU72PbrvnzQ7MJuc-KTJ5P5fX0FYuCh3Rlwd9M,709
|
190
234
|
zrb/session_state_logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
191
235
|
zrb/session_state_logger/any_session_state_logger.py,sha256=OEP7RQD6sPSJP0OY8oDKRZcoqQ9oKMOjBswanMj6OaE,610
|
192
|
-
zrb/session_state_logger/default_session_state_logger.py,sha256=w_cAaNUg1ZmJk-ge1kh3xtag3SApC3ZdB3VbxUvU5Ro,197
|
193
236
|
zrb/session_state_logger/file_session_state_logger.py,sha256=1ue7-Bcwg4wlLn2G_7ARR4Rij2zUISj_Y56VBQsCaMQ,3666
|
237
|
+
zrb/session_state_logger/session_state_logger_factory.py,sha256=wXf2DVmeRmx399MFYYty6uNcPZMcf7iayHBYCLGlhfc,189
|
194
238
|
zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
195
239
|
zrb/task/any_task.py,sha256=9rCdKe-Sayr34Han9AsbhRxFpkbk6Rteg1DOyETulwQ,4917
|
196
|
-
zrb/task/base_task.py,sha256=
|
197
|
-
zrb/task/base_trigger.py,sha256=
|
198
|
-
zrb/task/cmd_task.py,sha256=
|
199
|
-
zrb/task/http_check.py,sha256=
|
200
|
-
zrb/task/llm_task.py,sha256=
|
201
|
-
zrb/task/make_task.py,sha256=
|
202
|
-
zrb/task/rsync_task.py,sha256=
|
203
|
-
zrb/task/scaffolder.py,sha256=
|
204
|
-
zrb/task/scheduler.py,sha256=
|
240
|
+
zrb/task/base_task.py,sha256=220eaW80ToGE0Ofv45guTRn3c8Lf4i8CiVY37XLW2bU,20355
|
241
|
+
zrb/task/base_trigger.py,sha256=jC722rDvodaBLeNaFghkTyv1u0QXrK6BLZUUqcmBJ7Q,4581
|
242
|
+
zrb/task/cmd_task.py,sha256=romQfJWBPRKEcFVCa0rWSwOkWVnkCtMAWZdi1O6catc,10275
|
243
|
+
zrb/task/http_check.py,sha256=Gf5rOB2Se2EdizuN9rp65HpGmfZkGc-clIAlHmPVehs,2565
|
244
|
+
zrb/task/llm_task.py,sha256=PiwlKAaClCRFeETBp5uHmoJQyKz1kNXDAuhkbYWrT1I,8633
|
245
|
+
zrb/task/make_task.py,sha256=PD3b_aYazthS8LHeJsLAhwKDEgdurQZpymJDKeN60u0,2265
|
246
|
+
zrb/task/rsync_task.py,sha256=pVVslZ46qgcpU_EKhyTQEQie8kUOMuTsVQdbQG2L-yk,6318
|
247
|
+
zrb/task/scaffolder.py,sha256=rME18w1HJUHXgi9eTYXx_T2G4JdqDYzBoNOkdOOo5-o,6806
|
248
|
+
zrb/task/scheduler.py,sha256=aSDF_WtDbmwrYXaVo3BesCG8w21UNV8XLtn-5x9GWzY,3137
|
205
249
|
zrb/task/task.py,sha256=KCrCaWYOQQvv1RJsYtHDeo9RBFmlXQ28oKyEFU4Q7pA,73
|
206
|
-
zrb/task/tcp_check.py,sha256=
|
250
|
+
zrb/task/tcp_check.py,sha256=P_QgGqwd5dXDaud3oQRxe_WuxyxG4s7CTY2wDk9Qcu0,2511
|
207
251
|
zrb/task_status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
208
|
-
zrb/task_status/task_status.py,sha256=
|
252
|
+
zrb/task_status/task_status.py,sha256=blZ8dxg9g_8MuViq-t7yJRLoE7yGUf5srgHf-PCsXNc,3069
|
209
253
|
zrb/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
210
254
|
zrb/util/attr.py,sha256=HkXd2N-eUXw2o4WWWJpo2q8N0kS7k08jsMLXpK_3zq0,2353
|
211
255
|
zrb/util/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -238,7 +282,7 @@ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
|
|
238
282
|
zrb/util/todo.py,sha256=1nDdwPc22oFoK_1ZTXyf3638Bg6sqE2yp_U4_-frHoc,16015
|
239
283
|
zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
240
284
|
zrb/xcom/xcom.py,sha256=o79rxR9wphnShrcIushA0Qt71d_p3ZTxjNf7x9hJB78,1571
|
241
|
-
zrb-1.0.
|
242
|
-
zrb-1.0.
|
243
|
-
zrb-1.0.
|
244
|
-
zrb-1.0.
|
285
|
+
zrb-1.0.0b1.dist-info/METADATA,sha256=2PPlcjRN6iqdKmnuKcCjOJzT1isHnLQOXL-T2NC4cxU,4184
|
286
|
+
zrb-1.0.0b1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
287
|
+
zrb-1.0.0b1.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
|
288
|
+
zrb-1.0.0b1.dist-info/RECORD,,
|
zrb/runner/web_config.py
DELETED
@@ -1,274 +0,0 @@
|
|
1
|
-
from datetime import datetime, timedelta
|
2
|
-
from typing import TYPE_CHECKING, Callable
|
3
|
-
|
4
|
-
from pydantic import BaseModel, ConfigDict
|
5
|
-
|
6
|
-
from zrb.config import (
|
7
|
-
WEB_ACCESS_TOKEN_COOKIE_NAME,
|
8
|
-
WEB_AUTH_ACCESS_TOKEN_EXPIRE_MINUTES,
|
9
|
-
WEB_AUTH_REFRESH_TOKEN_EXPIRE_MINUTES,
|
10
|
-
WEB_ENABLE_AUTH,
|
11
|
-
WEB_GUEST_USERNAME,
|
12
|
-
WEB_HTTP_PORT,
|
13
|
-
WEB_REFRESH_TOKEN_COOKIE_NAME,
|
14
|
-
WEB_SECRET_KEY,
|
15
|
-
WEB_SUPER_ADMIN_PASSWORD,
|
16
|
-
WEB_SUPER_ADMIN_USERNAME,
|
17
|
-
)
|
18
|
-
from zrb.group.any_group import AnyGroup
|
19
|
-
from zrb.task.any_task import AnyTask
|
20
|
-
from zrb.util.group import get_all_subtasks
|
21
|
-
|
22
|
-
if TYPE_CHECKING:
|
23
|
-
# Import Request only for type checking to reduce runtime dependencies
|
24
|
-
from fastapi import Request
|
25
|
-
|
26
|
-
|
27
|
-
class NewSessionResponse(BaseModel):
|
28
|
-
session_name: str
|
29
|
-
|
30
|
-
|
31
|
-
class RefreshTokenRequest(BaseModel):
|
32
|
-
refresh_token: str
|
33
|
-
|
34
|
-
|
35
|
-
class User(BaseModel):
|
36
|
-
model_config = ConfigDict(arbitrary_types_allowed=True)
|
37
|
-
username: str
|
38
|
-
password: str = ""
|
39
|
-
is_super_admin: bool = False
|
40
|
-
is_guest: bool = False
|
41
|
-
accessible_tasks: list[AnyTask | str] = []
|
42
|
-
|
43
|
-
def is_password_match(self, password: str) -> bool:
|
44
|
-
return self.password == password
|
45
|
-
|
46
|
-
def can_access_group(self, group: AnyGroup) -> bool:
|
47
|
-
if self.is_super_admin:
|
48
|
-
return True
|
49
|
-
all_tasks = get_all_subtasks(group, web_only=True)
|
50
|
-
if any(self.can_access_task(task) for task in all_tasks):
|
51
|
-
return True
|
52
|
-
return False
|
53
|
-
|
54
|
-
def can_access_task(self, task: AnyTask) -> bool:
|
55
|
-
if self.is_super_admin:
|
56
|
-
return True
|
57
|
-
if task.name in self.accessible_tasks or task in self.accessible_tasks:
|
58
|
-
return True
|
59
|
-
return False
|
60
|
-
|
61
|
-
|
62
|
-
class Token(BaseModel):
|
63
|
-
access_token: str
|
64
|
-
refresh_token: str
|
65
|
-
token_type: str
|
66
|
-
|
67
|
-
|
68
|
-
class WebConfig:
|
69
|
-
def __init__(
|
70
|
-
self,
|
71
|
-
port: int,
|
72
|
-
secret_key: str,
|
73
|
-
access_token_expire_minutes: int,
|
74
|
-
refresh_token_expire_minutes: int,
|
75
|
-
access_token_cookie_name: str,
|
76
|
-
refresh_token_cookie_name: str,
|
77
|
-
enable_auth: bool,
|
78
|
-
super_admin_username: str,
|
79
|
-
super_admin_password: str,
|
80
|
-
guest_username: str,
|
81
|
-
guest_accessible_tasks: list[AnyTask | str] = [],
|
82
|
-
find_user_by_username: Callable[[str], User | None] | None = None,
|
83
|
-
):
|
84
|
-
self.secret_key = secret_key
|
85
|
-
self.access_token_expire_minutes = access_token_expire_minutes
|
86
|
-
self.refresh_token_expire_minutes = refresh_token_expire_minutes
|
87
|
-
self.access_token_cookie_name = access_token_cookie_name
|
88
|
-
self.refresh_token_cookie_name = refresh_token_cookie_name
|
89
|
-
self.enable_auth = enable_auth
|
90
|
-
self.port = port
|
91
|
-
self._user_list = []
|
92
|
-
self.super_admin_username = super_admin_username
|
93
|
-
self.super_admin_password = super_admin_password
|
94
|
-
self.guest_username = guest_username
|
95
|
-
self.guest_accessible_tasks = guest_accessible_tasks
|
96
|
-
self._find_user_by_username = find_user_by_username
|
97
|
-
|
98
|
-
@property
|
99
|
-
def default_user(self) -> User:
|
100
|
-
if self.enable_auth:
|
101
|
-
return User(
|
102
|
-
username=self.guest_username,
|
103
|
-
password="",
|
104
|
-
is_guest=True,
|
105
|
-
accessible_tasks=self.guest_accessible_tasks,
|
106
|
-
)
|
107
|
-
return User(
|
108
|
-
username=self.guest_username,
|
109
|
-
password="",
|
110
|
-
is_guest=True,
|
111
|
-
is_super_admin=True,
|
112
|
-
)
|
113
|
-
|
114
|
-
@property
|
115
|
-
def super_admin(self) -> User:
|
116
|
-
return User(
|
117
|
-
username=self.super_admin_username,
|
118
|
-
password=self.super_admin_password,
|
119
|
-
is_super_admin=True,
|
120
|
-
)
|
121
|
-
|
122
|
-
@property
|
123
|
-
def user_list(self) -> list[User]:
|
124
|
-
if not self.enable_auth:
|
125
|
-
return [self.default_user]
|
126
|
-
return self._user_list + [self.super_admin, self.default_user]
|
127
|
-
|
128
|
-
def set_guest_accessible_tasks(self, tasks: list[AnyTask | str]):
|
129
|
-
self.guest_accessible_tasks = tasks
|
130
|
-
|
131
|
-
def set_find_user_by_username(
|
132
|
-
self, find_user_by_username: Callable[[str], User | None]
|
133
|
-
):
|
134
|
-
self._find_user_by_username = find_user_by_username
|
135
|
-
|
136
|
-
def append_user(self, user: User):
|
137
|
-
duplicates = [
|
138
|
-
existing_user
|
139
|
-
for existing_user in self.user_list
|
140
|
-
if existing_user.username == user.username
|
141
|
-
]
|
142
|
-
if len(duplicates) > 0:
|
143
|
-
raise ValueError(f"User already exists {user.username}")
|
144
|
-
self._user_list.append(user)
|
145
|
-
|
146
|
-
def find_user_by_username(self, username: str) -> User | None:
|
147
|
-
user = None
|
148
|
-
if self._find_user_by_username is not None:
|
149
|
-
user = self._find_user_by_username(username)
|
150
|
-
if user is None:
|
151
|
-
user = next((u for u in self.user_list if u.username == username), None)
|
152
|
-
return user
|
153
|
-
|
154
|
-
async def get_user_from_request(self, request: "Request") -> User | None:
|
155
|
-
from fastapi.security import OAuth2PasswordBearer
|
156
|
-
|
157
|
-
if not self.enable_auth:
|
158
|
-
return self.default_user
|
159
|
-
# Normally we use "Depends"
|
160
|
-
get_bearer_token = OAuth2PasswordBearer(
|
161
|
-
tokenUrl="/api/v1/login", auto_error=False
|
162
|
-
)
|
163
|
-
bearer_token = await get_bearer_token(request)
|
164
|
-
token_user = self._get_user_from_token(bearer_token)
|
165
|
-
if token_user is not None:
|
166
|
-
return token_user
|
167
|
-
cookie_user = self._get_user_from_cookie(request)
|
168
|
-
if cookie_user is not None:
|
169
|
-
return cookie_user
|
170
|
-
return self.default_user
|
171
|
-
|
172
|
-
def _get_user_from_token(self, token: str) -> User | None:
|
173
|
-
try:
|
174
|
-
from jose import jwt
|
175
|
-
|
176
|
-
payload = jwt.decode(
|
177
|
-
token,
|
178
|
-
self.secret_key,
|
179
|
-
options={"require_sub": True, "require_exp": True},
|
180
|
-
)
|
181
|
-
username: str = payload.get("sub")
|
182
|
-
if username is None:
|
183
|
-
return None
|
184
|
-
user = self.find_user_by_username(username)
|
185
|
-
if user is None:
|
186
|
-
return None
|
187
|
-
return user
|
188
|
-
except Exception:
|
189
|
-
return None
|
190
|
-
|
191
|
-
def _get_user_from_cookie(self, request: "Request") -> User | None:
|
192
|
-
token = request.cookies.get(self.access_token_cookie_name)
|
193
|
-
if token:
|
194
|
-
return self._get_user_from_token(token)
|
195
|
-
return None
|
196
|
-
|
197
|
-
def get_user_by_credentials(self, username: str, password: str) -> User | None:
|
198
|
-
user = self.find_user_by_username(username)
|
199
|
-
if user is None or not user.is_password_match(password):
|
200
|
-
return None
|
201
|
-
return user
|
202
|
-
|
203
|
-
def generate_tokens_by_credentials(
|
204
|
-
self, username: str, password: str
|
205
|
-
) -> Token | None:
|
206
|
-
if not self.enable_auth:
|
207
|
-
user = self.default_user
|
208
|
-
else:
|
209
|
-
user = self.get_user_by_credentials(username, password)
|
210
|
-
if user is None:
|
211
|
-
return None
|
212
|
-
access_token = self._generate_access_token(user.username)
|
213
|
-
refresh_token = self._generate_refresh_token(user.username)
|
214
|
-
return Token(
|
215
|
-
access_token=access_token, refresh_token=refresh_token, token_type="bearer"
|
216
|
-
)
|
217
|
-
|
218
|
-
def _generate_access_token(self, username: str) -> str:
|
219
|
-
from jose import jwt
|
220
|
-
|
221
|
-
expire = datetime.now() + timedelta(minutes=self.access_token_expire_minutes)
|
222
|
-
to_encode = {"sub": username, "exp": expire, "type": "access"}
|
223
|
-
return jwt.encode(to_encode, self.secret_key)
|
224
|
-
|
225
|
-
def _generate_refresh_token(self, username: str) -> str:
|
226
|
-
from jose import jwt
|
227
|
-
|
228
|
-
expire = datetime.now() + timedelta(minutes=self.refresh_token_expire_minutes)
|
229
|
-
to_encode = {"sub": username, "exp": expire, "type": "refresh"}
|
230
|
-
return jwt.encode(to_encode, self.secret_key)
|
231
|
-
|
232
|
-
def regenerate_tokens(self, refresh_token: str) -> Token:
|
233
|
-
from fastapi import HTTPException
|
234
|
-
from jose import jwt
|
235
|
-
|
236
|
-
# Decode and validate token
|
237
|
-
try:
|
238
|
-
payload = jwt.decode(
|
239
|
-
refresh_token,
|
240
|
-
self.secret_key,
|
241
|
-
options={"require_exp": True, "require_sub": True},
|
242
|
-
)
|
243
|
-
except Exception:
|
244
|
-
raise HTTPException(status_code=401, detail="Invalid JWT token")
|
245
|
-
if payload.get("type") != "refresh":
|
246
|
-
raise HTTPException(status_code=401, detail="Invalid token type")
|
247
|
-
username: str = payload.get("sub")
|
248
|
-
if username is None:
|
249
|
-
raise HTTPException(status_code=401, detail="Invalid refresh token")
|
250
|
-
user = self.find_user_by_username(username)
|
251
|
-
if user is None:
|
252
|
-
raise HTTPException(status_code=401, detail="User not found")
|
253
|
-
# Create new token
|
254
|
-
new_access_token = self._generate_access_token(username)
|
255
|
-
new_refresh_token = self._generate_refresh_token(username)
|
256
|
-
return Token(
|
257
|
-
access_token=new_access_token,
|
258
|
-
refresh_token=new_refresh_token,
|
259
|
-
token_type="bearer",
|
260
|
-
)
|
261
|
-
|
262
|
-
|
263
|
-
web_config = WebConfig(
|
264
|
-
port=WEB_HTTP_PORT,
|
265
|
-
secret_key=WEB_SECRET_KEY,
|
266
|
-
access_token_expire_minutes=WEB_AUTH_ACCESS_TOKEN_EXPIRE_MINUTES,
|
267
|
-
refresh_token_expire_minutes=WEB_AUTH_REFRESH_TOKEN_EXPIRE_MINUTES,
|
268
|
-
access_token_cookie_name=WEB_ACCESS_TOKEN_COOKIE_NAME,
|
269
|
-
refresh_token_cookie_name=WEB_REFRESH_TOKEN_COOKIE_NAME,
|
270
|
-
enable_auth=WEB_ENABLE_AUTH,
|
271
|
-
super_admin_username=WEB_SUPER_ADMIN_USERNAME,
|
272
|
-
super_admin_password=WEB_SUPER_ADMIN_PASSWORD,
|
273
|
-
guest_username=WEB_GUEST_USERNAME,
|
274
|
-
)
|
File without changes
|