flet-easy 0.3.0.dev1__tar.gz → 0.3.0.dev3__tar.gz
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.
- flet_easy-0.3.0.dev3/.vscode/settings.json +7 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/PKG-INFO +1 -1
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/pyproject.toml +74 -72
- flet_easy-0.3.0.dev3/src/flet_easy/auto_route.py +62 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/fletEasy.py +4 -2
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/route.py +3 -1
- flet_easy-0.3.0.dev3/tests/cache-pages/pyproject.toml +53 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/cache-pages/witch-main.py +23 -2
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/cache-pages/without-main.py +2 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/d2.py +28 -2
- flet_easy-0.3.0.dev3/tests/flet-app/pyproject.toml +58 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/assets/database.db +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/controllers/login.py +3 -3
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/controllers/register.py +1 -1
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/core/config.py +1 -4
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/main.py +11 -6
- flet_easy-0.3.0.dev3/tests/flet-app/src/models/connection.py +11 -0
- flet_easy-0.3.0.dev3/tests/flet-app/src/models/methods.py +41 -0
- flet_easy-0.3.0.dev3/tests/flet-app/src/models/models.py +7 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/views/counter.py +2 -2
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/views/dashboard.py +3 -3
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/views/index.py +3 -8
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/v1.py +4 -4
- flet_easy-0.3.0.dev3/tests/x1.py +34 -0
- flet_easy-0.3.0.dev3/tests/x2.py +63 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/uv.lock +274 -57
- flet_easy-0.3.0.dev1/src/flet_easy/auto_route.py +0 -34
- flet_easy-0.3.0.dev1/tests/flet-app/pyproject.toml +0 -27
- flet_easy-0.3.0.dev1/tests/flet-app/src/models/connection.py +0 -19
- flet_easy-0.3.0.dev1/tests/flet-app/src/models/methods.py +0 -37
- flet_easy-0.3.0.dev1/tests/flet-app/src/models/models.py +0 -11
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/workflows/docs-update.yml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/workflows/linters.yml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/workflows/publish-pypi.yml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.github/workflows/tests.yml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.gitignore +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.markdownlint.yaml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/.python-version +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/CHANGELOG.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/CONTRIBUTING.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/LICENSE +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/README.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/add-pages/by-means-of-functions.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/add-pages/in-automatic.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/add-pages/through-classes.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/add-pages/through-decorators.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/ControlResponse.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/Use-class-new-page.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/app-example.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/fs-init.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/jwt-app.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/jwt-web.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/on_keyboard.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/protected-route.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/route-advanced.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/route-custom.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/route-simple.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/share-data.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/use-example.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/gifs/view-config.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/app-api.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/favicon.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/funtion_add_page.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/logo.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/on-resize.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/run_view.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/struct-views.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/FletEasy.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/export_asgi.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/fastapi_run.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/method_run.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/struct-app.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/images/v0.2.0/template_dxs.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/assets/js/dynamic-year.js +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/basic-jwt.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/begin.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/cli-to-create-app.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/customized-app/control-view-configuration.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/customized-app/events.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/customized-app/general-settings.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/customized-app/page-404.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/customized-app/route-protection.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/data-sharing-between-pages.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/dynamic-routes.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/events/keyboard-event.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/events/on-resize.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/how-to-use.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/index.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/installation.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/middleware.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/overrides/main.html +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/ref.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/responsiveControlsy.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/run-the-app.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/stylesheets/extra.css +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/docs/working-with-other-apps.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/media/app-example.gif +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/media/logo.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/mkdocs.yml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/ruff.toml +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/cli/main.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/datasy.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/exceptions.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/extra.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/extrasJwt.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/inheritance.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/job.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/jwt.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/middleware.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/pagesy.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/src/flet_easy/view_404.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/b.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/b2.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/c1.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/README.md +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/assets/icon.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/counter.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/custom.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/drawer.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/login.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/components/register.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/controllers/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/controllers/counter.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/core/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/core/sensitive.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/models/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/views/login.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-app/src/views/share.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/favicon.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icon.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icons/icon-192 - copia.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icons/icon-192.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icons/icon-512.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icons/icon-maskable-512.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/icons/loading-animation.png +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/index.html +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/assets/manifest.json +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/controllers/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/controllers/contador.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/core/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/core/config.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/main.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/model/__init__.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/model/contador.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/counter.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/index.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/login.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/on_keyboard.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/pubsub.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/resize.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/response.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/share_data.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/task.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/flet-fastapi/views/test.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/routing.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/v2.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/v3.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/v4.py +0 -0
- {flet_easy-0.3.0.dev1 → flet_easy-0.3.0.dev3}/tests/x.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flet-easy
|
|
3
|
-
Version: 0.3.0.
|
|
3
|
+
Version: 0.3.0.dev3
|
|
4
4
|
Summary: ⚡Flet-Easy is a user-friendly add-on package for Flet, offering a cleaner code structure with numerous customizable features like JWT, routers, decorators, middleware and more.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Daxexs
|
|
6
6
|
Project-URL: Repository, https://github.com/Daxexs/flet-easy
|
|
@@ -1,72 +1,74 @@
|
|
|
1
|
-
[project]
|
|
2
|
-
name = "flet-easy"
|
|
3
|
-
version = "0.3.0.
|
|
4
|
-
description = "⚡Flet-Easy is a user-friendly add-on package for Flet, offering a cleaner code structure with numerous customizable features like JWT, routers, decorators, middleware and more."
|
|
5
|
-
authors = [{ name = "Daxexs", email = "Daxexsdev@gmail.com" }]
|
|
6
|
-
|
|
7
|
-
dependencies = []
|
|
8
|
-
requires-python = ">=3.8"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = { text = "apache-2.0" }
|
|
11
|
-
keywords = [
|
|
12
|
-
"flet easy",
|
|
13
|
-
"flet",
|
|
14
|
-
"python",
|
|
15
|
-
"flet route",
|
|
16
|
-
"flet easy route",
|
|
17
|
-
"python web template",
|
|
18
|
-
"app python",
|
|
19
|
-
"flet mvc",
|
|
20
|
-
"flet easy mvc",
|
|
21
|
-
"flet easy fastapi",
|
|
22
|
-
"flutter python",
|
|
23
|
-
"web application",
|
|
24
|
-
"flet middleware",
|
|
25
|
-
"flet jwt",
|
|
26
|
-
"fast flet",
|
|
27
|
-
]
|
|
28
|
-
classifiers = [
|
|
29
|
-
"Topic :: Software Development :: Build Tools",
|
|
30
|
-
"Programming Language :: Python :: 3",
|
|
31
|
-
"Programming Language :: Python :: 3.8",
|
|
32
|
-
"Programming Language :: Python :: 3.9",
|
|
33
|
-
"Programming Language :: Python :: 3.10",
|
|
34
|
-
"Programming Language :: Python :: 3.11",
|
|
35
|
-
"Programming Language :: Python :: 3.12",
|
|
36
|
-
]
|
|
37
|
-
|
|
38
|
-
[project.optional-dependencies]
|
|
39
|
-
all = [
|
|
40
|
-
"pyJWT>=2.0.0",
|
|
41
|
-
"rsa>=4.9",
|
|
42
|
-
"cookiecutter>=2.6.0",
|
|
43
|
-
"rich-argparse>=1.4.0",
|
|
44
|
-
"flet[all]>=0.25.1",
|
|
45
|
-
]
|
|
46
|
-
JWT = ["pyJWT>=2.0.0", "rsa>=4.9"]
|
|
47
|
-
cli = ["cookiecutter>=2.6.0", "rich-argparse>=1.4.0", "flet[all]>=0.25.1"]
|
|
48
|
-
|
|
49
|
-
[project.urls]
|
|
50
|
-
Homepage = "https://github.com/Daxexs"
|
|
51
|
-
Repository = "https://github.com/Daxexs/flet-easy"
|
|
52
|
-
Documentation = "https://daxexs.github.io/flet-easy"
|
|
53
|
-
Changelog = "https://github.com/Daxexs/flet-easy/blob/main/CHANGELOG.md"
|
|
54
|
-
|
|
55
|
-
[build-system]
|
|
56
|
-
requires = ["hatchling"]
|
|
57
|
-
build-backend = "hatchling.build"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
[project.scripts]
|
|
61
|
-
fs = "flet_easy.cli.main:run"
|
|
62
|
-
|
|
63
|
-
[dependency-groups]
|
|
64
|
-
test = [
|
|
65
|
-
"ruff>=0.3.4",
|
|
66
|
-
"flet[all]>=0.25.1",
|
|
67
|
-
"tortoise-orm>=0.22.2",
|
|
68
|
-
"pytest>=8.3.4",
|
|
69
|
-
"pyjwt>=2.0.0",
|
|
70
|
-
"rsa>=4.9",
|
|
71
|
-
|
|
72
|
-
|
|
1
|
+
[project]
|
|
2
|
+
name = "flet-easy"
|
|
3
|
+
version = "0.3.0.dev3"
|
|
4
|
+
description = "⚡Flet-Easy is a user-friendly add-on package for Flet, offering a cleaner code structure with numerous customizable features like JWT, routers, decorators, middleware and more."
|
|
5
|
+
authors = [{ name = "Daxexs", email = "Daxexsdev@gmail.com" }]
|
|
6
|
+
|
|
7
|
+
dependencies = []
|
|
8
|
+
requires-python = ">=3.8"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "apache-2.0" }
|
|
11
|
+
keywords = [
|
|
12
|
+
"flet easy",
|
|
13
|
+
"flet",
|
|
14
|
+
"python",
|
|
15
|
+
"flet route",
|
|
16
|
+
"flet easy route",
|
|
17
|
+
"python web template",
|
|
18
|
+
"app python",
|
|
19
|
+
"flet mvc",
|
|
20
|
+
"flet easy mvc",
|
|
21
|
+
"flet easy fastapi",
|
|
22
|
+
"flutter python",
|
|
23
|
+
"web application",
|
|
24
|
+
"flet middleware",
|
|
25
|
+
"flet jwt",
|
|
26
|
+
"fast flet",
|
|
27
|
+
]
|
|
28
|
+
classifiers = [
|
|
29
|
+
"Topic :: Software Development :: Build Tools",
|
|
30
|
+
"Programming Language :: Python :: 3",
|
|
31
|
+
"Programming Language :: Python :: 3.8",
|
|
32
|
+
"Programming Language :: Python :: 3.9",
|
|
33
|
+
"Programming Language :: Python :: 3.10",
|
|
34
|
+
"Programming Language :: Python :: 3.11",
|
|
35
|
+
"Programming Language :: Python :: 3.12",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
all = [
|
|
40
|
+
"pyJWT>=2.0.0",
|
|
41
|
+
"rsa>=4.9",
|
|
42
|
+
"cookiecutter>=2.6.0",
|
|
43
|
+
"rich-argparse>=1.4.0",
|
|
44
|
+
"flet[all]>=0.25.1",
|
|
45
|
+
]
|
|
46
|
+
JWT = ["pyJWT>=2.0.0", "rsa>=4.9"]
|
|
47
|
+
cli = ["cookiecutter>=2.6.0", "rich-argparse>=1.4.0", "flet[all]>=0.25.1"]
|
|
48
|
+
|
|
49
|
+
[project.urls]
|
|
50
|
+
Homepage = "https://github.com/Daxexs"
|
|
51
|
+
Repository = "https://github.com/Daxexs/flet-easy"
|
|
52
|
+
Documentation = "https://daxexs.github.io/flet-easy"
|
|
53
|
+
Changelog = "https://github.com/Daxexs/flet-easy/blob/main/CHANGELOG.md"
|
|
54
|
+
|
|
55
|
+
[build-system]
|
|
56
|
+
requires = ["hatchling"]
|
|
57
|
+
build-backend = "hatchling.build"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
[project.scripts]
|
|
61
|
+
fs = "flet_easy.cli.main:run"
|
|
62
|
+
|
|
63
|
+
[dependency-groups]
|
|
64
|
+
test = [
|
|
65
|
+
"ruff>=0.3.4",
|
|
66
|
+
"flet[all]>=0.25.1",
|
|
67
|
+
"tortoise-orm>=0.22.2",
|
|
68
|
+
"pytest>=8.3.4",
|
|
69
|
+
"pyjwt>=2.0.0",
|
|
70
|
+
"rsa>=4.9",
|
|
71
|
+
"sqlmodel>=0.0.24",
|
|
72
|
+
"pyinstrument>=5.0.1",
|
|
73
|
+
]
|
|
74
|
+
docs = ["mkdocs-material>=9.5.17", "mike>=2.0.0"]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
from importlib.util import module_from_spec, spec_from_file_location
|
|
2
|
+
from inspect import getmembers
|
|
3
|
+
from os import listdir, path
|
|
4
|
+
from sys import modules
|
|
5
|
+
from typing import List, Optional
|
|
6
|
+
|
|
7
|
+
from flet_easy.pagesy import AddPagesy
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def automatic_routing(dir: str) -> Optional[List[AddPagesy]]:
|
|
11
|
+
"""
|
|
12
|
+
A function that automatically routes through a directory to find Python files,
|
|
13
|
+
extract AddPagesy objects, and return a list of them.
|
|
14
|
+
|
|
15
|
+
Parameters:
|
|
16
|
+
- dir (str): The directory path to search for Python files.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
- List[AddPagesy]: A list of AddPagesy objects found in the specified directory.
|
|
20
|
+
"""
|
|
21
|
+
if not dir:
|
|
22
|
+
return None
|
|
23
|
+
|
|
24
|
+
pages = []
|
|
25
|
+
|
|
26
|
+
python_files = [
|
|
27
|
+
file
|
|
28
|
+
for file in listdir(dir)
|
|
29
|
+
if (file.endswith(".py") or file.endswith(".pyc")) and file != "__init__.py"
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
for file in python_files:
|
|
33
|
+
file_path = path.join(dir, file)
|
|
34
|
+
module_name = path.splitext(file)[0]
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
if not isinstance(file_path, str):
|
|
38
|
+
file_path = str(file_path)
|
|
39
|
+
|
|
40
|
+
spec = spec_from_file_location(module_name, file_path)
|
|
41
|
+
if spec is None or spec.loader is None:
|
|
42
|
+
continue
|
|
43
|
+
|
|
44
|
+
module = module_from_spec(spec)
|
|
45
|
+
|
|
46
|
+
if hasattr(module, "__dict__"):
|
|
47
|
+
modules[module_name] = module
|
|
48
|
+
spec.loader.exec_module(module)
|
|
49
|
+
|
|
50
|
+
for _, obj in getmembers(module):
|
|
51
|
+
if isinstance(obj, AddPagesy):
|
|
52
|
+
pages.append(obj)
|
|
53
|
+
except Exception as e:
|
|
54
|
+
print(f"Error processing file {file}: {e}")
|
|
55
|
+
continue
|
|
56
|
+
|
|
57
|
+
if not pages:
|
|
58
|
+
raise ValueError(
|
|
59
|
+
"No instances of AddPagesy found. Check the assigned path of the 'path_views' parameter of the class (FletEasy)."
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
return pages
|
|
@@ -155,13 +155,15 @@ class FletEasy(FletEasyX):
|
|
|
155
155
|
# add data to middleware request
|
|
156
156
|
MiddlewareRequest._data = self._data
|
|
157
157
|
|
|
158
|
+
self.__pagesys = automatic_routing(self.__path_views)
|
|
159
|
+
|
|
158
160
|
# -------------------------------------------------------------------
|
|
159
161
|
def __pre_config(self, page: Page):
|
|
160
162
|
"""config before run"""
|
|
161
163
|
self._add_configuration_start(page)
|
|
162
164
|
|
|
163
|
-
if self.
|
|
164
|
-
self.add_pages(
|
|
165
|
+
if self.__pagesys:
|
|
166
|
+
self.add_pages(self.__pagesys)
|
|
165
167
|
|
|
166
168
|
self._run()
|
|
167
169
|
|
|
@@ -131,6 +131,7 @@ class FletEasyX:
|
|
|
131
131
|
def _add_configuration_start(self, page: Page):
|
|
132
132
|
"""Add general settings to the pages."""
|
|
133
133
|
self.__page = page
|
|
134
|
+
self.__page.views.clear()
|
|
134
135
|
self.__config_datasy()
|
|
135
136
|
|
|
136
137
|
""" Add view configuration """
|
|
@@ -166,7 +167,8 @@ class FletEasyX:
|
|
|
166
167
|
"""Add a new page and update it."""
|
|
167
168
|
|
|
168
169
|
# To make the page change faster.
|
|
169
|
-
self.__page.views
|
|
170
|
+
if len(self.__page.views) == 2:
|
|
171
|
+
self.__page.views.remove(self.__page.views[1])
|
|
170
172
|
|
|
171
173
|
view = self.__history_pages.get(route)
|
|
172
174
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "flet-app"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
license = "MIT"
|
|
5
|
+
dependencies = ["flet", "flet-easy==0.3.0.dev2", "sqlmodel"]
|
|
6
|
+
|
|
7
|
+
[[project.authors]]
|
|
8
|
+
name = "Daxexs"
|
|
9
|
+
email = "Daxexs@test.com"
|
|
10
|
+
|
|
11
|
+
[tool.flet]
|
|
12
|
+
org = "com.mycompany" # --org
|
|
13
|
+
product = "flet-easy" # --product
|
|
14
|
+
company = "My Company" # --company
|
|
15
|
+
copyright = "Copyright (C) 2024 by MyCompany" # --copyright
|
|
16
|
+
build_number = 1 # --build-number
|
|
17
|
+
BUILD_VERSION = "0.1.0"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
[tool.flet.app]
|
|
21
|
+
module = "witch-main"
|
|
22
|
+
path = "."
|
|
23
|
+
#exclude = ["assets"]
|
|
24
|
+
|
|
25
|
+
[tool.flet.compile]
|
|
26
|
+
app = true
|
|
27
|
+
packages = true
|
|
28
|
+
cleanup = true
|
|
29
|
+
|
|
30
|
+
[tool.flet.splash]
|
|
31
|
+
color = "" # --splash-color
|
|
32
|
+
dark_color = "" # --splash-dark-color
|
|
33
|
+
web = false # --no-web-splash
|
|
34
|
+
ios = false # --no-ios-splash
|
|
35
|
+
android = false # --no-android-splash
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
[tool.flet.android]
|
|
39
|
+
#"adaptive_icon_background = ""
|
|
40
|
+
#split_per_abi = true
|
|
41
|
+
target_sdk_version = 34
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
[tool.flet.android.permission] # --android-permissions
|
|
45
|
+
"android.permission.CAMERA" = true
|
|
46
|
+
"android.permission.INTERNET" = true
|
|
47
|
+
"android.permission.READ_EXTERNAL_STORAGE" = true
|
|
48
|
+
"android.permission.WRITE_EXTERNAL_STORAGE" = true
|
|
49
|
+
"android.hardware.location.network" = true
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
[tool.flet.android.feature] # --android-features
|
|
53
|
+
"android.hardware.camera" = true
|
|
@@ -112,7 +112,12 @@ def index_page(data: fs.Datasy):
|
|
|
112
112
|
)
|
|
113
113
|
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
def m(data: fs.Datasy):
|
|
116
|
+
page = data.page
|
|
117
|
+
page.run_task(x)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
@app.page("/test2", title="Test 2", middleware=[m])
|
|
116
121
|
def test_page(data: fs.Datasy):
|
|
117
122
|
page = data.page
|
|
118
123
|
data.view.appbar.title = ft.Text("Test 2")
|
|
@@ -129,6 +134,13 @@ def test_page(data: fs.Datasy):
|
|
|
129
134
|
)
|
|
130
135
|
|
|
131
136
|
|
|
137
|
+
async def x():
|
|
138
|
+
for i in range(10):
|
|
139
|
+
print(i)
|
|
140
|
+
await asyncio.sleep(1)
|
|
141
|
+
return "Done"
|
|
142
|
+
|
|
143
|
+
|
|
132
144
|
# add cache to the page
|
|
133
145
|
@app.page("/test3", title="Test 3", cache=True)
|
|
134
146
|
async def test2_page(data: fs.Datasy):
|
|
@@ -136,6 +148,8 @@ async def test2_page(data: fs.Datasy):
|
|
|
136
148
|
new_appbar = fs.cache_control(data.view.appbar)
|
|
137
149
|
new_appbar.title = ft.Text("Test 3")
|
|
138
150
|
|
|
151
|
+
page.run_task(x)
|
|
152
|
+
|
|
139
153
|
return ft.View(
|
|
140
154
|
controls=[
|
|
141
155
|
ft.Text("Counter 3", size=50),
|
|
@@ -148,4 +162,11 @@ async def test2_page(data: fs.Datasy):
|
|
|
148
162
|
)
|
|
149
163
|
|
|
150
164
|
|
|
151
|
-
|
|
165
|
+
async def main(page: ft.Page):
|
|
166
|
+
app.start(page)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# app.run()
|
|
170
|
+
if __name__ == "__main__":
|
|
171
|
+
#ft.app(target=main)
|
|
172
|
+
app.run()
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import flet as ft
|
|
3
|
+
from pyinstrument import Profiler, profile
|
|
4
|
+
|
|
5
|
+
#x = Profiler()
|
|
2
6
|
|
|
3
7
|
|
|
4
8
|
def navigation_change(e: ft.ControlEvent):
|
|
@@ -22,7 +26,22 @@ t = ft.View(
|
|
|
22
26
|
)
|
|
23
27
|
|
|
24
28
|
|
|
29
|
+
async def test(page: ft.Page):
|
|
30
|
+
page.title = "Test"
|
|
31
|
+
return 123
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def xd(page: ft.Page):
|
|
35
|
+
l = asyncio.get_event_loop()
|
|
36
|
+
# l = page.loop
|
|
37
|
+
# l.run_in_executor(None, test, page)
|
|
38
|
+
l.run_until_complete(test(page))
|
|
39
|
+
return 1
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# @profile
|
|
25
43
|
def main(page: ft.Page):
|
|
44
|
+
|
|
26
45
|
page.title = "Test"
|
|
27
46
|
page.theme = ft.Theme(
|
|
28
47
|
page_transitions=ft.PageTransitionsTheme(
|
|
@@ -34,8 +53,10 @@ def main(page: ft.Page):
|
|
|
34
53
|
)
|
|
35
54
|
)
|
|
36
55
|
|
|
56
|
+
# x = page.run_task(xd).result()
|
|
57
|
+
# xd(page)
|
|
58
|
+
|
|
37
59
|
def route_change(e: ft.RouteChangeEvent):
|
|
38
|
-
page.views.clear()
|
|
39
60
|
if e.route == "/":
|
|
40
61
|
page.views.append(
|
|
41
62
|
ft.View(
|
|
@@ -46,6 +67,7 @@ def main(page: ft.Page):
|
|
|
46
67
|
navigation_bar=t.navigation_bar,
|
|
47
68
|
)
|
|
48
69
|
)
|
|
70
|
+
|
|
49
71
|
elif e.route == "/2":
|
|
50
72
|
page.views.append(
|
|
51
73
|
ft.View(
|
|
@@ -61,7 +83,11 @@ def main(page: ft.Page):
|
|
|
61
83
|
|
|
62
84
|
page.on_route_change = route_change
|
|
63
85
|
page.go("/")
|
|
86
|
+
""" page.window.close() """
|
|
64
87
|
|
|
65
88
|
|
|
66
89
|
if __name__ == "__main__":
|
|
67
|
-
ft.app(target=main)
|
|
90
|
+
a = ft.app(target=main)
|
|
91
|
+
"""
|
|
92
|
+
x.stop()
|
|
93
|
+
x.open_in_browser(timeline=True) """
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "flet-app"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
license = "MIT"
|
|
5
|
+
dependencies = [
|
|
6
|
+
"flet==0.27.5",
|
|
7
|
+
"flet-easy[jwt]==0.3.0.dev2",
|
|
8
|
+
"sqlmodel==0.0.24",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
[[project.authors]]
|
|
12
|
+
name = "Daxexs"
|
|
13
|
+
email = "Daxexs@test.com"
|
|
14
|
+
|
|
15
|
+
[tool.flet]
|
|
16
|
+
org = "com.mycompany1" # --org
|
|
17
|
+
product = "flet-app" # --product
|
|
18
|
+
company = "My Company" # --company
|
|
19
|
+
copyright = "Copyright (C) 2024 by MyCompany" # --copyright
|
|
20
|
+
build_number = 2 # --build-number
|
|
21
|
+
build_version = "0.2.1"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
[tool.flet.app]
|
|
25
|
+
module = "main"
|
|
26
|
+
path = "src"
|
|
27
|
+
exclude = ["assets/icon.png"]
|
|
28
|
+
|
|
29
|
+
[tool.flet.compile]
|
|
30
|
+
app = true
|
|
31
|
+
packages = true
|
|
32
|
+
cleanup = true
|
|
33
|
+
|
|
34
|
+
[tool.flet.splash]
|
|
35
|
+
color = "" # --splash-color
|
|
36
|
+
dark_color = "" # --splash-dark-color
|
|
37
|
+
web = false # --no-web-splash
|
|
38
|
+
ios = false # --no-ios-splash
|
|
39
|
+
android = true # --no-android-splash
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
[tool.flet.android]
|
|
43
|
+
#"adaptive_icon_background = ""
|
|
44
|
+
#split_per_abi = true
|
|
45
|
+
target_sdk_version = 34
|
|
46
|
+
ADAPTIVE_ICON_BACKGROUND = true
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
[tool.flet.android.permission] # --android-permissions
|
|
50
|
+
"android.permission.CAMERA" = true
|
|
51
|
+
"android.permission.INTERNET" = true
|
|
52
|
+
"android.permission.READ_EXTERNAL_STORAGE" = true
|
|
53
|
+
"android.permission.WRITE_EXTERNAL_STORAGE" = true
|
|
54
|
+
"android.hardware.location.network" = true
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
[tool.flet.android.feature] # --android-features
|
|
58
|
+
"android.hardware.camera" = true
|
|
Binary file
|
|
@@ -14,7 +14,7 @@ class LoginC:
|
|
|
14
14
|
self.password = fs.Ref[ft.TextField]()
|
|
15
15
|
self.time_logout = fs.Ref[ft.TextField]()
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
def check(self, e):
|
|
18
18
|
username = (
|
|
19
19
|
self.username.c.value
|
|
20
20
|
if self.username.c.value != "" and self.username.c.value
|
|
@@ -28,12 +28,12 @@ class LoginC:
|
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
if username and password:
|
|
31
|
-
if not
|
|
31
|
+
if not check_user(User(username=username, password=password)):
|
|
32
32
|
self.data.page.snack_bar = ft.SnackBar(
|
|
33
33
|
content=ft.Text("User does not exist"), action="Alright!", open=True
|
|
34
34
|
)
|
|
35
35
|
else:
|
|
36
|
-
|
|
36
|
+
self.data.login(
|
|
37
37
|
key="login",
|
|
38
38
|
value={"user": username},
|
|
39
39
|
time_expiry=timedelta(seconds=int(self.time_logout.c.value)),
|
|
@@ -27,7 +27,7 @@ class RegisterC:
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
if username and password:
|
|
30
|
-
if not
|
|
30
|
+
if not add_user(User(username=username, password=password)):
|
|
31
31
|
self.data.page.snack_bar = ft.SnackBar(
|
|
32
32
|
content=ft.Text("The user already exists"), action="Alright!", open=True
|
|
33
33
|
)
|
|
@@ -17,10 +17,7 @@ class ConfigApp:
|
|
|
17
17
|
@self.app.view
|
|
18
18
|
async def view_config(data: fs.Datasy):
|
|
19
19
|
return fs.Viewsy(
|
|
20
|
-
appbar=ft.AppBar(
|
|
21
|
-
title=ft.Text("Flet-Easy"),
|
|
22
|
-
leading=ft.IconButton(icon=ft.Icons.ARROW_BACK_IOS, on_click=data.go_back()),
|
|
23
|
-
),
|
|
20
|
+
appbar=ft.AppBar(title=ft.Text("Flet-Easy")),
|
|
24
21
|
drawer=ft.NavigationDrawer(
|
|
25
22
|
controls=[
|
|
26
23
|
ft.Container(height=12),
|
|
@@ -4,8 +4,12 @@ from core.config import ConfigApp
|
|
|
4
4
|
|
|
5
5
|
# from core.sensitive import PRIVATE_KEY, PUBLIC_KEY
|
|
6
6
|
from core.sensitive import SECRET_KEY
|
|
7
|
+
from models.connection import create_tables
|
|
7
8
|
|
|
8
9
|
import flet_easy as fs
|
|
10
|
+
import flet as ft
|
|
11
|
+
|
|
12
|
+
create_tables()
|
|
9
13
|
|
|
10
14
|
app = fs.FletEasy(
|
|
11
15
|
route_init="/home",
|
|
@@ -17,10 +21,10 @@ app = fs.FletEasy(
|
|
|
17
21
|
)
|
|
18
22
|
|
|
19
23
|
|
|
20
|
-
def starting_page(data: fs.Datasy):
|
|
24
|
+
async def starting_page(data: fs.Datasy) -> None:
|
|
21
25
|
"""Remove [print()] from Python if build Windows"""
|
|
22
|
-
pass
|
|
23
|
-
|
|
26
|
+
# pass
|
|
27
|
+
print(f"\n⚡[MIDDLEWARES RUNNING]\n-> Route:{data.route}\n1. Loading the page")
|
|
24
28
|
|
|
25
29
|
|
|
26
30
|
async def starting_page_two(data: fs.Datasy):
|
|
@@ -47,10 +51,11 @@ async def starting_page_two(data: fs.Datasy):
|
|
|
47
51
|
# add class to middleware custom
|
|
48
52
|
class CustomMiddlewareInit(fs.MiddlewareRequest):
|
|
49
53
|
def before_request(self):
|
|
50
|
-
|
|
54
|
+
pass
|
|
55
|
+
# print("-/// (app-root) Before request", self.data.history_routes)
|
|
51
56
|
|
|
52
57
|
def after_request(self):
|
|
53
|
-
print("-/// (app-root) After request")
|
|
58
|
+
# print("-/// (app-root) After request")
|
|
54
59
|
if self.data.route == "/login":
|
|
55
60
|
self.data.page.title = "login-Middleware"
|
|
56
61
|
self.data.page.update()
|
|
@@ -58,7 +63,7 @@ class CustomMiddlewareInit(fs.MiddlewareRequest):
|
|
|
58
63
|
|
|
59
64
|
""" [If you have any problem - build Windows]
|
|
60
65
|
Remove [print()] from Python if used in 'add_middleware' functions. """
|
|
61
|
-
app.add_middleware(starting_page, starting_page_two, CustomMiddlewareInit)
|
|
66
|
+
# app.add_middleware(starting_page, starting_page_two, CustomMiddlewareInit)
|
|
62
67
|
|
|
63
68
|
ConfigApp(app)
|
|
64
69
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from sqlalchemy.exc import IntegrityError, NoResultFound
|
|
2
|
+
from sqlmodel import Session, select
|
|
3
|
+
|
|
4
|
+
from models.connection import engine
|
|
5
|
+
from models.models import User
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def add_user(user: User):
|
|
9
|
+
try:
|
|
10
|
+
with Session(engine) as session:
|
|
11
|
+
session.add(user)
|
|
12
|
+
session.commit()
|
|
13
|
+
return True
|
|
14
|
+
except IntegrityError:
|
|
15
|
+
return False
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def check_user(user: User):
|
|
19
|
+
try:
|
|
20
|
+
with Session(engine) as session:
|
|
21
|
+
statement = select(User).where(User.username == user.username)
|
|
22
|
+
user_check = session.exec(statement).first()
|
|
23
|
+
# print(user_check)
|
|
24
|
+
if user_check:
|
|
25
|
+
return user_check.password == user.password
|
|
26
|
+
else:
|
|
27
|
+
return False
|
|
28
|
+
except NoResultFound or IntegrityError:
|
|
29
|
+
return False
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
async def delete_user(user: User):
|
|
33
|
+
try:
|
|
34
|
+
with Session(engine) as session:
|
|
35
|
+
statement = select(User).where(User.username == user.username)
|
|
36
|
+
user_check = session.exec(statement).first()
|
|
37
|
+
session.delete(user_check)
|
|
38
|
+
session.commit()
|
|
39
|
+
return True
|
|
40
|
+
except NoResultFound or IntegrityError:
|
|
41
|
+
return False
|
|
@@ -4,7 +4,7 @@ from components import Counter, Custom, Drawer
|
|
|
4
4
|
import flet_easy as fs
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
def message_counter(data: fs.Datasy):
|
|
7
|
+
async def message_counter(data: fs.Datasy):
|
|
8
8
|
print("+ Message counter")
|
|
9
9
|
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ async def counter_page(data: fs.Datasy, id: str):
|
|
|
29
29
|
],
|
|
30
30
|
vertical_alignment=ft.MainAxisAlignment.CENTER,
|
|
31
31
|
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
|
|
32
|
-
drawer=view.drawer,
|
|
32
|
+
#drawer=view.drawer,
|
|
33
33
|
appbar=view.appbar,
|
|
34
34
|
)
|
|
35
35
|
|