litedmin 0.4.0__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.
- litedmin/__init__.py +136 -0
- litedmin/__main__.py +6 -0
- litedmin/backend/__init__.py +1 -0
- litedmin/backend/admin/__init__.py +17 -0
- litedmin/backend/admin/base.py +902 -0
- litedmin/backend/admin/changelist.py +211 -0
- litedmin/backend/admin/checks.py +119 -0
- litedmin/backend/admin/display_columns.py +221 -0
- litedmin/backend/admin/export.py +57 -0
- litedmin/backend/admin/formsets.py +299 -0
- litedmin/backend/admin/list_projection.py +147 -0
- litedmin/backend/admin/mixins.py +75 -0
- litedmin/backend/admin/pagination.py +149 -0
- litedmin/backend/admin/permissions.py +103 -0
- litedmin/backend/admin/scope.py +8 -0
- litedmin/backend/api/__init__.py +26 -0
- litedmin/backend/api/autocomplete.py +214 -0
- litedmin/backend/api/core.py +1017 -0
- litedmin/backend/api/endpoints.py +352 -0
- litedmin/backend/api/history/__init__.py +11 -0
- litedmin/backend/api/history/repository.py +273 -0
- litedmin/backend/api/history/service.py +105 -0
- litedmin/backend/api/responses.py +67 -0
- litedmin/backend/auth/__init__.py +69 -0
- litedmin/backend/auth/admin.py +298 -0
- litedmin/backend/auth/auth.py +172 -0
- litedmin/backend/auth/backends.py +191 -0
- litedmin/backend/auth/cookies.py +37 -0
- litedmin/backend/auth/csrf.py +99 -0
- litedmin/backend/auth/dependencies.py +205 -0
- litedmin/backend/auth/gateway_web.py +266 -0
- litedmin/backend/auth/hashers.py +186 -0
- litedmin/backend/auth/identity.py +118 -0
- litedmin/backend/auth/models/__init__.py +75 -0
- litedmin/backend/auth/models/registry.py +162 -0
- litedmin/backend/auth/models/sqlalchemy/__init__.py +21 -0
- litedmin/backend/auth/models/sqlalchemy/base.py +5 -0
- litedmin/backend/auth/models/sqlalchemy/builder.py +148 -0
- litedmin/backend/auth/models/sqlalchemy/models.py +193 -0
- litedmin/backend/auth/models/tortoise/__init__.py +19 -0
- litedmin/backend/auth/models/tortoise/builder.py +144 -0
- litedmin/backend/auth/models/tortoise/core.py +66 -0
- litedmin/backend/auth/models/tortoise/models.py +125 -0
- litedmin/backend/auth/permission_service.py +424 -0
- litedmin/backend/auth/resolver.py +34 -0
- litedmin/backend/auth/session.py +253 -0
- litedmin/backend/auth/settings.py +17 -0
- litedmin/backend/auth/user_model.py +101 -0
- litedmin/backend/auth/utils.py +197 -0
- litedmin/backend/core/__init__.py +1 -0
- litedmin/backend/core/action.py +91 -0
- litedmin/backend/core/config.py +110 -0
- litedmin/backend/core/decorators.py +62 -0
- litedmin/backend/core/display.py +90 -0
- litedmin/backend/core/enums.py +80 -0
- litedmin/backend/core/exceptions.py +43 -0
- litedmin/backend/core/fields.py +224 -0
- litedmin/backend/core/introspection.py +118 -0
- litedmin/backend/core/orm_settings.py +42 -0
- litedmin/backend/core/request.py +55 -0
- litedmin/backend/core/schema_generator.py +895 -0
- litedmin/backend/core/site.py +370 -0
- litedmin/backend/core/utils.py +162 -0
- litedmin/backend/core/widgets.py +100 -0
- litedmin/backend/dto/__init__.py +137 -0
- litedmin/backend/dto/auth.py +82 -0
- litedmin/backend/dto/base.py +39 -0
- litedmin/backend/dto/config.py +80 -0
- litedmin/backend/dto/permissions.py +19 -0
- litedmin/backend/dto/records.py +214 -0
- litedmin/backend/dto/requests.py +519 -0
- litedmin/backend/dto/responses.py +367 -0
- litedmin/backend/integration/__init__.py +56 -0
- litedmin/backend/integration/admin_lifecycle.py +136 -0
- litedmin/backend/integration/asgi/__init__.py +5 -0
- litedmin/backend/integration/asgi/admin.py +307 -0
- litedmin/backend/integration/asgi/request.py +43 -0
- litedmin/backend/integration/asgi/responses.py +43 -0
- litedmin/backend/integration/asgi/routes.py +475 -0
- litedmin/backend/integration/asgi/spa.py +71 -0
- litedmin/backend/integration/asgi/trailing_slash.py +49 -0
- litedmin/backend/integration/csrf_middleware.py +101 -0
- litedmin/backend/integration/di/__init__.py +21 -0
- litedmin/backend/integration/di/container.py +49 -0
- litedmin/backend/integration/di/fastapi_integration.py +45 -0
- litedmin/backend/integration/di/providers.py +100 -0
- litedmin/backend/integration/fastapi/__init__.py +7 -0
- litedmin/backend/integration/fastapi/admin.py +35 -0
- litedmin/backend/integration/frontend_paths.py +35 -0
- litedmin/backend/integration/handlers.py +168 -0
- litedmin/backend/integration/litestar/__init__.py +7 -0
- litedmin/backend/integration/litestar/admin.py +40 -0
- litedmin/backend/integration/msgspec_support.py +63 -0
- litedmin/backend/integration/orm_registry.py +99 -0
- litedmin/backend/integration/static.py +50 -0
- litedmin/backend/orm/__init__.py +35 -0
- litedmin/backend/orm/base.py +130 -0
- litedmin/backend/orm/batch.py +42 -0
- litedmin/backend/orm/date_filters.py +68 -0
- litedmin/backend/orm/pk.py +80 -0
- litedmin/backend/orm/protocols.py +144 -0
- litedmin/backend/orm/registry.py +156 -0
- litedmin/backend/orm/sqlalchemy/__init__.py +50 -0
- litedmin/backend/orm/sqlalchemy/adapter.py +8 -0
- litedmin/backend/orm/sqlalchemy/admin.py +40 -0
- litedmin/backend/orm/sqlalchemy/backend.py +56 -0
- litedmin/backend/orm/sqlalchemy/init.py +251 -0
- litedmin/backend/orm/sqlalchemy/introspector.py +254 -0
- litedmin/backend/orm/sqlalchemy/repository.py +740 -0
- litedmin/backend/orm/sqlalchemy/schema_generator.py +15 -0
- litedmin/backend/orm/sqlalchemy/session.py +94 -0
- litedmin/backend/orm/sqlalchemy/types.py +53 -0
- litedmin/backend/orm/tortoise/__init__.py +44 -0
- litedmin/backend/orm/tortoise/adapter.py +9 -0
- litedmin/backend/orm/tortoise/admin.py +42 -0
- litedmin/backend/orm/tortoise/backend.py +56 -0
- litedmin/backend/orm/tortoise/init.py +103 -0
- litedmin/backend/orm/tortoise/introspector.py +176 -0
- litedmin/backend/orm/tortoise/repository.py +284 -0
- litedmin/backend/orm/tortoise/schema_generator.py +15 -0
- litedmin/backend/orm/tortoise/types.py +81 -0
- litedmin/backend/storage/__init__.py +5 -0
- litedmin/backend/storage/protocol.py +33 -0
- litedmin/cli.py +195 -0
- litedmin/py.typed +0 -0
- litedmin/static/asset-manifest.json +85 -0
- litedmin/static/favicon.ico +0 -0
- litedmin/static/index.html +1 -0
- litedmin/static/logo192.png +0 -0
- litedmin/static/logo512.png +0 -0
- litedmin/static/manifest.json +25 -0
- litedmin/static/robots.txt +3 -0
- litedmin/static/static/css/main.c336e45a.css +2 -0
- litedmin/static/static/css/main.c336e45a.css.map +1 -0
- litedmin/static/static/js/453.7b4f4f73.chunk.js +2 -0
- litedmin/static/static/js/453.7b4f4f73.chunk.js.map +1 -0
- litedmin/static/static/js/main.06b3b9a6.js +156 -0
- litedmin/static/static/js/main.06b3b9a6.js.LICENSE.txt +91 -0
- litedmin/static/static/js/main.06b3b9a6.js.map +1 -0
- litedmin/static/static/media/inter-cyrillic-300-normal.ead2b63c30510e752332.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-300-normal.f9e5f604a45c00a532f2.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-400-normal.cb04b2ee2f7d192478b8.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-400-normal.e2841352dd9512ff455b.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-500-normal.b9dcbca183ac93f02061.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-500-normal.e824ac3c6c579cd0fe85.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-600-normal.c556b5d042ebf128e47c.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-600-normal.ce60970447cde0dd1582.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-700-normal.36e9cf9ecc07ac6bce28.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-700-normal.534fd15b796bf021d0be.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-300-normal.04c5d2c480c226920a9b.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-300-normal.eb97c8e4e9062ed5dfd2.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-400-normal.e89451624c6caf35687f.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-400-normal.fd1478dcc74de00ee4c0.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-500-normal.023db878f10be2203b60.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-500-normal.9160d5ba9e6099f95032.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-600-normal.25b7c495f686777a1c08.woff2 +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-600-normal.aa900fea9aed1ba3c903.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-700-normal.3cf42e401103d3211022.woff +0 -0
- litedmin/static/static/media/inter-cyrillic-ext-700-normal.5631f054acb5a33a716a.woff2 +0 -0
- litedmin/static/static/media/inter-greek-300-normal.3703eb6abf02d92c4c6d.woff2 +0 -0
- litedmin/static/static/media/inter-greek-300-normal.e35098a79e23df5c2282.woff +0 -0
- litedmin/static/static/media/inter-greek-400-normal.a42da273bb968bf2058d.woff +0 -0
- litedmin/static/static/media/inter-greek-400-normal.a8de720a6f13c66c8a4e.woff2 +0 -0
- litedmin/static/static/media/inter-greek-500-normal.0d91a975f010051e7150.woff2 +0 -0
- litedmin/static/static/media/inter-greek-500-normal.cbc71955e9956dcd2882.woff +0 -0
- litedmin/static/static/media/inter-greek-600-normal.5c46a357ea91911fc65d.woff2 +0 -0
- litedmin/static/static/media/inter-greek-600-normal.ba3b8b69a69b0e83d453.woff +0 -0
- litedmin/static/static/media/inter-greek-700-normal.f47ebf852d0b0e251a80.woff +0 -0
- litedmin/static/static/media/inter-greek-700-normal.f5fbdfc39c2431160896.woff2 +0 -0
- litedmin/static/static/media/inter-greek-ext-300-normal.6479663fa09debba7d48.woff +0 -0
- litedmin/static/static/media/inter-greek-ext-300-normal.c0dba9f477d8b8e0198f.woff2 +0 -0
- litedmin/static/static/media/inter-greek-ext-400-normal.b9e1e89444a313a63b91.woff +0 -0
- litedmin/static/static/media/inter-greek-ext-400-normal.f2fa0d9ef98f59d4a75b.woff2 +0 -0
- litedmin/static/static/media/inter-greek-ext-500-normal.7f67cfd4832dde0e0494.woff +0 -0
- litedmin/static/static/media/inter-greek-ext-500-normal.b187635a3d8a0b90faa0.woff2 +0 -0
- litedmin/static/static/media/inter-greek-ext-600-normal.7e7594e0432b84536054.woff +0 -0
- litedmin/static/static/media/inter-greek-ext-600-normal.c8a7cddec49294a9e8ba.woff2 +0 -0
- litedmin/static/static/media/inter-greek-ext-700-normal.4c7cc2277f187ed0ef37.woff +0 -0
- litedmin/static/static/media/inter-greek-ext-700-normal.4cdf2b4e817dade3d4aa.woff2 +0 -0
- litedmin/static/static/media/inter-latin-300-normal.6e6082ec285b38897e2f.woff2 +0 -0
- litedmin/static/static/media/inter-latin-300-normal.b7ec8f2cad1cc72e39fa.woff +0 -0
- litedmin/static/static/media/inter-latin-400-normal.9698cc7dbf147ed363b6.woff2 +0 -0
- litedmin/static/static/media/inter-latin-400-normal.b0c8fe9db56dd415a25a.woff +0 -0
- litedmin/static/static/media/inter-latin-500-normal.5b7156f802c053798d95.woff2 +0 -0
- litedmin/static/static/media/inter-latin-500-normal.f46567788e464ac34d10.woff +0 -0
- litedmin/static/static/media/inter-latin-600-normal.28c8f6060760ec1a5d25.woff +0 -0
- litedmin/static/static/media/inter-latin-600-normal.9d111139a583baef3053.woff2 +0 -0
- litedmin/static/static/media/inter-latin-700-normal.d42de9b25ac31d2a2a8b.woff2 +0 -0
- litedmin/static/static/media/inter-latin-700-normal.fc47ca451598e4b97249.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-300-normal.1230c922d601129d8b4c.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-300-normal.f95a500034ca27bc4af3.woff2 +0 -0
- litedmin/static/static/media/inter-latin-ext-400-normal.1c20f7dc20d731a18fcd.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-400-normal.3d10c85fbd16969509a2.woff2 +0 -0
- litedmin/static/static/media/inter-latin-ext-500-normal.2b8be079a0e965b2f035.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-500-normal.667f22c9b36deaea0f54.woff2 +0 -0
- litedmin/static/static/media/inter-latin-ext-600-normal.0acb54c755dec53de476.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-600-normal.ae5f9691ebe48c908e8c.woff2 +0 -0
- litedmin/static/static/media/inter-latin-ext-700-normal.149d81a49bd1ff0e6711.woff +0 -0
- litedmin/static/static/media/inter-latin-ext-700-normal.96e3bd6bb1f980376cf1.woff2 +0 -0
- litedmin/static/static/media/inter-vietnamese-300-normal.2a4055b17286ecdd503d.woff2 +0 -0
- litedmin/static/static/media/inter-vietnamese-300-normal.39c118d908e573021d87.woff +0 -0
- litedmin/static/static/media/inter-vietnamese-400-normal.44c9df135eec470b0ab6.woff2 +0 -0
- litedmin/static/static/media/inter-vietnamese-400-normal.96f8adc74b63e1a3655f.woff +0 -0
- litedmin/static/static/media/inter-vietnamese-500-normal.11aeae6e31a0d8c24c83.woff +0 -0
- litedmin/static/static/media/inter-vietnamese-500-normal.63d02ea896a7406849b6.woff2 +0 -0
- litedmin/static/static/media/inter-vietnamese-600-normal.6984cf5e8583fac83be3.woff2 +0 -0
- litedmin/static/static/media/inter-vietnamese-600-normal.a10931d3a643f48663b9.woff +0 -0
- litedmin/static/static/media/inter-vietnamese-700-normal.5b5cd0c77cad23651d04.woff +0 -0
- litedmin/static/static/media/inter-vietnamese-700-normal.5d9bfcacc44f345662ff.woff2 +0 -0
- litedmin-0.4.0.dist-info/METADATA +302 -0
- litedmin-0.4.0.dist-info/RECORD +215 -0
- litedmin-0.4.0.dist-info/WHEEL +5 -0
- litedmin-0.4.0.dist-info/entry_points.txt +2 -0
- litedmin-0.4.0.dist-info/licenses/LICENSE +21 -0
- litedmin-0.4.0.dist-info/top_level.txt +1 -0
litedmin/__init__.py
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"""
|
|
2
|
+
LiteAdmin — public package entry point.
|
|
3
|
+
|
|
4
|
+
Layout:
|
|
5
|
+
litedmin/backend/ Python framework code
|
|
6
|
+
litedmin/static/ bundled admin UI assets
|
|
7
|
+
frontend/ React sources (repo root, not installed)
|
|
8
|
+
|
|
9
|
+
Optional ORM / framework symbols are resolved lazily via ``__getattr__`` so
|
|
10
|
+
``pip install litedmin[sqlalchemy]`` does not require tortoise or fastapi.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from litedmin.backend.core.site import AdminSite, default_site
|
|
18
|
+
from litedmin.backend.core.decorators import register
|
|
19
|
+
from litedmin.backend.core.action import action
|
|
20
|
+
from litedmin.backend.core.display import display
|
|
21
|
+
from litedmin.backend.core.fields import FieldRef, Link
|
|
22
|
+
from litedmin.backend.core.widgets import Textarea, WidgetSpec
|
|
23
|
+
from litedmin.backend.storage import StorageBackend, UploadFileLike
|
|
24
|
+
from litedmin.backend.admin import ModelAdmin, InlineModelAdmin, TabularInline, StackedInline
|
|
25
|
+
from litedmin.backend.core.schema_generator import SchemaGenerator, FieldType, WidgetType
|
|
26
|
+
from litedmin.backend.core.introspection import ModelIntrospector
|
|
27
|
+
from litedmin.backend.core.exceptions import (
|
|
28
|
+
LiteAdminError,
|
|
29
|
+
ImproperlyConfigured,
|
|
30
|
+
AlreadyRegistered,
|
|
31
|
+
NotRegistered,
|
|
32
|
+
ObjectDoesNotExist,
|
|
33
|
+
ValidationError,
|
|
34
|
+
ActionNotAllowed,
|
|
35
|
+
PermissionDenied,
|
|
36
|
+
)
|
|
37
|
+
from litedmin.backend.orm.base import AuthModels, BaseORMBackend, ORMType
|
|
38
|
+
from litedmin.backend.orm.registry import BackendRegistry
|
|
39
|
+
from litedmin.backend.orm.protocols import ORMRepositoryProtocol
|
|
40
|
+
from litedmin.backend.api.core import AdminAPI
|
|
41
|
+
from litedmin.backend.api.history import ChangeHistoryService, ChangeHistoryRepository
|
|
42
|
+
from litedmin.backend.core.utils import suppress, SuppressContext
|
|
43
|
+
from litedmin.backend.core.config import AdminConfig, default_config
|
|
44
|
+
from litedmin.backend.core.orm_settings import OrmSettings
|
|
45
|
+
|
|
46
|
+
__version__ = '0.4.0'
|
|
47
|
+
|
|
48
|
+
__all__ = [
|
|
49
|
+
'AdminSite',
|
|
50
|
+
'register',
|
|
51
|
+
'action',
|
|
52
|
+
'display',
|
|
53
|
+
'Link',
|
|
54
|
+
'FieldRef',
|
|
55
|
+
'Textarea',
|
|
56
|
+
'WidgetSpec',
|
|
57
|
+
'default_site',
|
|
58
|
+
'StorageBackend',
|
|
59
|
+
'UploadFileLike',
|
|
60
|
+
'ModelAdmin',
|
|
61
|
+
'InlineModelAdmin',
|
|
62
|
+
'TabularInline',
|
|
63
|
+
'StackedInline',
|
|
64
|
+
'SchemaGenerator',
|
|
65
|
+
'FieldType',
|
|
66
|
+
'WidgetType',
|
|
67
|
+
'ModelIntrospector',
|
|
68
|
+
'LiteAdminError',
|
|
69
|
+
'ImproperlyConfigured',
|
|
70
|
+
'AlreadyRegistered',
|
|
71
|
+
'NotRegistered',
|
|
72
|
+
'ObjectDoesNotExist',
|
|
73
|
+
'ValidationError',
|
|
74
|
+
'ActionNotAllowed',
|
|
75
|
+
'PermissionDenied',
|
|
76
|
+
'AuthModels',
|
|
77
|
+
'BackendRegistry',
|
|
78
|
+
'BaseORMBackend',
|
|
79
|
+
'TortoiseBackend',
|
|
80
|
+
'SQLAlchemyBackend',
|
|
81
|
+
'AdminAPI',
|
|
82
|
+
'TortoiseSchemaGenerator',
|
|
83
|
+
'TortoiseIntrospector',
|
|
84
|
+
'TortoiseAdapter',
|
|
85
|
+
'SQLAlchemySchemaGenerator',
|
|
86
|
+
'SQLAlchemyIntrospector',
|
|
87
|
+
'TortoiseRepository',
|
|
88
|
+
'SQLAlchemyRepository',
|
|
89
|
+
'ORMRepositoryProtocol',
|
|
90
|
+
'ChangeHistoryService',
|
|
91
|
+
'ChangeHistoryRepository',
|
|
92
|
+
'suppress',
|
|
93
|
+
'SuppressContext',
|
|
94
|
+
'AdminConfig',
|
|
95
|
+
'OrmSettings',
|
|
96
|
+
'default_config',
|
|
97
|
+
'Admin',
|
|
98
|
+
'ORMType',
|
|
99
|
+
'init_tortoise_with_litedmin',
|
|
100
|
+
'close_tortoise',
|
|
101
|
+
'init_sqlalchemy_with_litedmin',
|
|
102
|
+
'close_sqlalchemy',
|
|
103
|
+
'__version__',
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
_LAZY_MAP = {
|
|
107
|
+
'TortoiseBackend': ('litedmin.backend.orm.tortoise.backend', 'TortoiseBackend'),
|
|
108
|
+
'SQLAlchemyBackend': ('litedmin.backend.orm.sqlalchemy.backend', 'SQLAlchemyBackend'),
|
|
109
|
+
'TortoiseRepository': ('litedmin.backend.orm.tortoise.repository', 'TortoiseRepository'),
|
|
110
|
+
'TortoiseSchemaGenerator': ('litedmin.backend.orm.tortoise.schema_generator', 'TortoiseSchemaGenerator'),
|
|
111
|
+
'TortoiseIntrospector': ('litedmin.backend.orm.tortoise.introspector', 'TortoiseIntrospector'),
|
|
112
|
+
'TortoiseAdapter': ('litedmin.backend.orm.tortoise.adapter', 'TortoiseAdapter'),
|
|
113
|
+
'SQLAlchemyRepository': ('litedmin.backend.orm.sqlalchemy.repository', 'SQLAlchemyRepository'),
|
|
114
|
+
'SQLAlchemySchemaGenerator': (
|
|
115
|
+
'litedmin.backend.orm.sqlalchemy.schema_generator',
|
|
116
|
+
'SQLAlchemySchemaGenerator',
|
|
117
|
+
),
|
|
118
|
+
'SQLAlchemyIntrospector': ('litedmin.backend.orm.sqlalchemy.introspector', 'SQLAlchemyIntrospector'),
|
|
119
|
+
'Admin': ('litedmin.backend.integration.asgi.admin', 'Admin'),
|
|
120
|
+
'init_tortoise_with_litedmin': ('litedmin.backend.orm.tortoise.init', 'init_tortoise_with_litedmin'),
|
|
121
|
+
'close_tortoise': ('litedmin.backend.orm.tortoise.init', 'close_tortoise'),
|
|
122
|
+
'init_sqlalchemy_with_litedmin': (
|
|
123
|
+
'litedmin.backend.orm.sqlalchemy.init',
|
|
124
|
+
'init_sqlalchemy_with_litedmin',
|
|
125
|
+
),
|
|
126
|
+
'close_sqlalchemy': ('litedmin.backend.orm.sqlalchemy.init', 'close_sqlalchemy'),
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def __getattr__(name: str) -> Any:
|
|
131
|
+
target = _LAZY_MAP.get(name)
|
|
132
|
+
if target is None:
|
|
133
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
134
|
+
mod_path, attr = target
|
|
135
|
+
import importlib
|
|
136
|
+
return getattr(importlib.import_module(mod_path), attr)
|
litedmin/__main__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""LiteAdmin backend (Python only)."""
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Admin classes — model admin layer.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from litedmin.backend.admin.base import (
|
|
6
|
+
ModelAdmin,
|
|
7
|
+
InlineModelAdmin,
|
|
8
|
+
StackedInline,
|
|
9
|
+
TabularInline
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
'ModelAdmin',
|
|
14
|
+
'InlineModelAdmin',
|
|
15
|
+
'StackedInline',
|
|
16
|
+
'TabularInline',
|
|
17
|
+
]
|