django-cfg 1.4.4__py3-none-any.whl → 1.4.6__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.
- django_cfg/CHANGELOG.md +57 -0
- django_cfg/CONTRIBUTING.md +145 -0
- django_cfg/LICENSE +21 -0
- django_cfg/apps/api/endpoints/__init__.py +5 -0
- django_cfg/apps/api/endpoints/checker.py +603 -0
- django_cfg/apps/api/endpoints/drf_views.py +55 -0
- django_cfg/apps/api/endpoints/serializers.py +123 -0
- django_cfg/apps/api/endpoints/tests.py +281 -0
- django_cfg/apps/api/endpoints/urls.py +14 -0
- django_cfg/apps/api/endpoints/views.py +41 -0
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +2 -2
- django_cfg/apps/payments/middleware/rate_limiting.py +9 -3
- django_cfg/apps/urls.py +2 -0
- django_cfg/management/commands/check_endpoints.py +169 -0
- django_cfg/management/commands/rundramatiq.py +3 -3
- django_cfg/modules/django_ipc_client/client.py +1 -0
- django_cfg/modules/django_unfold/dashboard.py +1 -0
- django_cfg/pyproject.toml +148 -0
- django_cfg/routing/routers.py +15 -2
- {django_cfg-1.4.4.dist-info → django_cfg-1.4.6.dist-info}/METADATA +1 -1
- {django_cfg-1.4.4.dist-info → django_cfg-1.4.6.dist-info}/RECORD +24 -12
- {django_cfg-1.4.4.dist-info → django_cfg-1.4.6.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.4.dist-info → django_cfg-1.4.6.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.4.dist-info → django_cfg-1.4.6.dist-info}/licenses/LICENSE +0 -0
@@ -117,7 +117,7 @@ class Command(BaseCommand):
|
|
117
117
|
|
118
118
|
process_args = [
|
119
119
|
executable_name,
|
120
|
-
"django_cfg.modules.dramatiq_setup", # Broker module
|
120
|
+
"django_cfg.modules.django_tasks.dramatiq_setup", # Broker module
|
121
121
|
"--processes", str(processes),
|
122
122
|
"--threads", str(threads),
|
123
123
|
"--worker-shutdown-timeout", str(worker_shutdown_timeout),
|
@@ -155,7 +155,7 @@ class Command(BaseCommand):
|
|
155
155
|
# Build process arguments exactly like django_dramatiq
|
156
156
|
process_args = [
|
157
157
|
executable_name,
|
158
|
-
"django_cfg.modules.dramatiq_setup", # Broker module
|
158
|
+
"django_cfg.modules.django_tasks.dramatiq_setup", # Broker module
|
159
159
|
"--processes", str(processes),
|
160
160
|
"--threads", str(threads),
|
161
161
|
"--worker-shutdown-timeout", str(worker_shutdown_timeout),
|
@@ -213,7 +213,7 @@ class Command(BaseCommand):
|
|
213
213
|
def _discover_tasks_modules(self):
|
214
214
|
"""Discover task modules like django_dramatiq does."""
|
215
215
|
# Always include our broker setup module first
|
216
|
-
tasks_modules = ["django_cfg.modules.dramatiq_setup"]
|
216
|
+
tasks_modules = ["django_cfg.modules.django_tasks.dramatiq_setup"]
|
217
217
|
|
218
218
|
# Get task service for configuration
|
219
219
|
task_service = get_task_service()
|
@@ -61,6 +61,7 @@ class DashboardManager(BaseCfgModule):
|
|
61
61
|
NavigationItem(title="Overview", icon=Icons.DASHBOARD, link="/admin/"),
|
62
62
|
NavigationItem(title="Settings", icon=Icons.SETTINGS, link="/admin/constance/config/"),
|
63
63
|
NavigationItem(title="Health Check", icon=Icons.HEALTH_AND_SAFETY, link="/cfg/health/"),
|
64
|
+
NavigationItem(title="Endpoints Status", icon=Icons.API, link="/cfg/endpoints/drf/"),
|
64
65
|
]
|
65
66
|
),
|
66
67
|
]
|
@@ -0,0 +1,148 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = [ "hatchling",]
|
3
|
+
build-backend = "hatchling.build"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "django-cfg"
|
7
|
+
version = "1.4.6"
|
8
|
+
description = "Django AI framework with built-in agents, type-safe Pydantic v2 configuration, and 8 enterprise apps. Replace settings.py, validate at startup, 90% less code. Production-ready AI workflows for Django."
|
9
|
+
readme = "README.md"
|
10
|
+
keywords = [ "django", "configuration", "pydantic", "settings", "type-safety", "pydantic-settings", "django-environ", "startup-validation", "ide-autocomplete", "ai-agents", "enterprise-django", "django-settings", "type-safe-config",]
|
11
|
+
classifiers = [ "Development Status :: 4 - Beta", "Framework :: Django", "Framework :: Django :: 5.2", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Systems Administration", "Typing :: Typed",]
|
12
|
+
requires-python = ">=3.12,<4.0"
|
13
|
+
dependencies = [ "pydantic>=2.11.0,<3.0", "pydantic[email]>=2.11.0,<3.0", "PyYAML>=6.0,<7.0", "pydantic-yaml>=1.6.0,<2.0", "click>=8.2.0,<9.0", "questionary>=2.1.0,<3.0", "rich>=14.0.0,<15.0", "cloudflare>=4.3.0,<5.0", "loguru>=0.7.0,<1.0", "colorlog>=6.9.0,<7.0", "cachetools>=5.3.0,<7.0", "toml>=0.10.2,<0.11.0", "ngrok>=1.5.1; python_version>='3.12'", "psycopg[binary,pool]>=3.2.0,<4.0", "dj-database-url>=3.0.0,<4.0", "whitenoise>=6.8.0,<7.0", "django-cors-headers>=4.7.0,<5.0", "djangorestframework>=3.16.0,<4.0", "djangorestframework-simplejwt>=5.5.0,<6.0", "djangorestframework-simplejwt[token-blacklist]>=5.5.0,<6.0", "drf-nested-routers>=0.94.0,<1.0", "django-filter>=25.0,<26.0", "django-ratelimit>=4.1.0,<5.0.0", "drf-spectacular>=0.28.0,<1.0", "drf-spectacular-sidecar>=2025.8.0,<2026.0", "django-json-widget>=2.0.0,<3.0", "django-import-export>=4.3.0,<5.0", "django-extensions>=4.1.0,<5.0", "django-constance>=4.3.0,<5.0", "django-unfold>=0.64.0,<1.0", "django-redis>=6.0.0,<7.0", "redis>=6.4.0,<7.0", "hiredis>=2.0.0,<4.0", "dramatiq[redis]>=1.18.0,<2.0", "django-dramatiq>=0.14.0,<1.0", "pyTelegramBotAPI>=4.28.0,<5.0", "coolname>=2.2.0,<3.0", "django-admin-rangefilter>=0.13.0,<1.0", "python-json-logger>=3.3.0,<4.0", "requests>=2.32.0,<3.0", "tiktoken>=0.11.0,<1.0", "openai>=1.107.0,<2.0", "twilio>=9.8.0,<10.0", "sendgrid>=6.12.0,<7.0", "beautifulsoup4>=4.13.0,<5.0", "lxml>=6.0.0,<7.0", "pgvector>=0.4.0,<1.0", "pydantic-ai>=1.0.10,<2.0", "django-revolution>=1.0.43,<2.0", "tenacity>=9.1.2,<10.0.0", "mypy (>=1.18.2,<2.0.0)", "django-tailwind[reload] (>=4.2.0,<5.0.0)",]
|
14
|
+
[[project.authors]]
|
15
|
+
name = "Django-CFG Team"
|
16
|
+
email = "info@djangocfg.com"
|
17
|
+
|
18
|
+
[[project.maintainers]]
|
19
|
+
name = "Django-CFG Team"
|
20
|
+
email = "info@djangocfg.com"
|
21
|
+
|
22
|
+
[project.license]
|
23
|
+
text = "MIT"
|
24
|
+
|
25
|
+
[project.optional-dependencies]
|
26
|
+
local = []
|
27
|
+
django52 = [ "django>=5.2,<6.0",]
|
28
|
+
dev = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "factory-boy>=3.3,<4.0", "fakeredis>=2.28,<3.0", "black>=25.9,<26.0", "isort>=6.0,<7.0", "flake8>=6.0.0,<8.0", "mypy>=1.18,<2.0", "pre-commit>=4.3,<5.0", "build>=1.3,<2.0", "twine>=6.2,<7.0", "tomlkit>=0.13.3,<1.0", "questionary>=2.1.0,<3.0", "rich>=13.0.0,<15.0", "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "redis>=6.4.0,<7.0",]
|
29
|
+
test = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "pytest-xdist>=3.8,<4.0", "factory-boy>=3.3,<4.0", "fakeredis>=2.28,<3.0",]
|
30
|
+
docs = [ "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "pymdown-extensions>=10.16,<11.0",]
|
31
|
+
tasks = [ "redis>=6.4.0,<7.0",]
|
32
|
+
full = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "pytest-xdist>=3.8,<4.0", "factory-boy>=3.3,<4.0", "black>=25.9,<26.0", "isort>=6.0,<7.0", "flake8>=6.0.0,<8.0", "mypy>=1.18,<2.0", "pre-commit>=4.3,<5.0", "build>=1.3,<2.0", "twine>=6.2,<7.0", "tomlkit>=0.13.3,<1.0", "questionary>=2.1.0,<3.0", "rich>=13.0.0,<15.0", "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "pymdown-extensions>=10.16,<11.0", "redis>=6.4.0,<7.0",]
|
33
|
+
|
34
|
+
[project.urls]
|
35
|
+
Homepage = "https://djangocfg.com"
|
36
|
+
Documentation = "https://djangocfg.com"
|
37
|
+
Repository = "https://github.com/markolofsen/django-cfg"
|
38
|
+
Issues = "https://github.com/markolofsen/django-cfg/issues"
|
39
|
+
Changelog = "https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md"
|
40
|
+
|
41
|
+
[project.scripts]
|
42
|
+
django-cfg = "django_cfg.cli.main:main"
|
43
|
+
|
44
|
+
[tool.black]
|
45
|
+
line-length = 100
|
46
|
+
target-version = [ "py39",]
|
47
|
+
include = "\\.pyi?$"
|
48
|
+
extend-exclude = "/(\n \\.eggs\n | \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | buck-out\n | build\n | dist\n | migrations\n)/\n"
|
49
|
+
|
50
|
+
[tool.isort]
|
51
|
+
profile = "black"
|
52
|
+
line_length = 100
|
53
|
+
multi_line_output = 3
|
54
|
+
include_trailing_comma = true
|
55
|
+
force_grid_wrap = 0
|
56
|
+
use_parentheses = true
|
57
|
+
ensure_newline_before_comments = true
|
58
|
+
known_django = [ "django",]
|
59
|
+
known_first_party = [ "django_cfg",]
|
60
|
+
sections = [ "FUTURE", "STDLIB", "DJANGO", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER",]
|
61
|
+
|
62
|
+
[tool.mypy]
|
63
|
+
python_version = "3.9"
|
64
|
+
check_untyped_defs = true
|
65
|
+
ignore_missing_imports = true
|
66
|
+
warn_unused_ignores = true
|
67
|
+
warn_redundant_casts = true
|
68
|
+
warn_unused_configs = true
|
69
|
+
disallow_untyped_defs = true
|
70
|
+
disallow_incomplete_defs = true
|
71
|
+
disallow_untyped_decorators = true
|
72
|
+
strict_optional = true
|
73
|
+
show_error_codes = true
|
74
|
+
[[tool.mypy.overrides]]
|
75
|
+
module = [ "django.*", "rest_framework.*", "django_redis.*", "yaml.*",]
|
76
|
+
ignore_missing_imports = true
|
77
|
+
|
78
|
+
[tool.ruff]
|
79
|
+
target-version = "py39"
|
80
|
+
line-length = 100
|
81
|
+
select = [ "E", "W", "F", "I", "B", "C4", "UP", "N", "S",]
|
82
|
+
ignore = [ "E501", "B008", "S101", "S311",]
|
83
|
+
|
84
|
+
[tool.bandit]
|
85
|
+
exclude_dirs = [ "tests", "migrations",]
|
86
|
+
skips = [ "B101", "B601",]
|
87
|
+
|
88
|
+
[tool.poetry]
|
89
|
+
[[tool.poetry.source]]
|
90
|
+
name = "pypi"
|
91
|
+
priority = "primary"
|
92
|
+
|
93
|
+
[tool.ruff.per-file-ignores]
|
94
|
+
"tests/*" = [ "S101", "S106",]
|
95
|
+
"*/migrations/*" = [ "N806",]
|
96
|
+
|
97
|
+
[tool.hatch.metadata]
|
98
|
+
allow-direct-references = true
|
99
|
+
|
100
|
+
[tool.pytest.ini_options]
|
101
|
+
addopts = [ "--cov=django_cfg", "--cov-report=term-missing", "--cov-report=html", "--cov-report=xml", "--cov-fail-under=50", "--strict-markers", "--strict-config", "--verbose",]
|
102
|
+
testpaths = [ "tests",]
|
103
|
+
markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests", "unit: marks tests as unit tests", "django_db: marks tests that require database access",]
|
104
|
+
filterwarnings = [ "error", "ignore::UserWarning", "ignore::DeprecationWarning",]
|
105
|
+
|
106
|
+
[tool.coverage.run]
|
107
|
+
source = [ "src/django_cfg",]
|
108
|
+
omit = [ "*/tests/*", "*/migrations/*", "*/__pycache__/*", "*/venv/*", "*/.venv/*",]
|
109
|
+
|
110
|
+
[tool.coverage.report]
|
111
|
+
exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod",]
|
112
|
+
|
113
|
+
[tool.coverage.html]
|
114
|
+
directory = "htmlcov"
|
115
|
+
|
116
|
+
[tool.poetry.group.local]
|
117
|
+
optional = true
|
118
|
+
|
119
|
+
[tool.poetry.group.dev.dependencies]
|
120
|
+
tomlkit = "^0.13.3"
|
121
|
+
build = "^1.3.0"
|
122
|
+
rich = "^14.1.0"
|
123
|
+
questionary = "^2.1.0"
|
124
|
+
psutil = "^7.0.0"
|
125
|
+
aiohttp = "^3.12.15"
|
126
|
+
pytest-asyncio = "^1.2.0"
|
127
|
+
pillow = "^11.3.0"
|
128
|
+
pytest = "^8.4.2"
|
129
|
+
pytest-django = "^4.11.1"
|
130
|
+
fakeredis = "^2.31.3"
|
131
|
+
|
132
|
+
[tool.hatch.build.targets.wheel]
|
133
|
+
packages = [ "src/django_cfg",]
|
134
|
+
exclude = [ "scripts/",]
|
135
|
+
|
136
|
+
[tool.hatch.build.targets.sdist]
|
137
|
+
include = [ "src/django_cfg", "README.md", "LICENSE", "CHANGELOG.md", "CONTRIBUTING.md", "requirements*.txt", "MANIFEST.in",]
|
138
|
+
exclude = [ "@*", "tests", "scripts", "*.log", ".env*",]
|
139
|
+
|
140
|
+
[tool.poetry.group.local.dependencies.django-ipc]
|
141
|
+
path = "/Users/markinmatrix/djangoipc"
|
142
|
+
develop = true
|
143
|
+
|
144
|
+
[tool.hatch.build.targets.wheel.force-include]
|
145
|
+
LICENSE = "django_cfg/LICENSE"
|
146
|
+
"CONTRIBUTING.md" = "django_cfg/CONTRIBUTING.md"
|
147
|
+
"CHANGELOG.md" = "django_cfg/CHANGELOG.md"
|
148
|
+
"pyproject.toml" = "django_cfg/pyproject.toml"
|
django_cfg/routing/routers.py
CHANGED
@@ -26,11 +26,24 @@ class DatabaseRouter:
|
|
26
26
|
return rules.get(model._meta.app_label)
|
27
27
|
|
28
28
|
def allow_relation(self, obj1, obj2, **hints):
|
29
|
-
"""
|
29
|
+
"""
|
30
|
+
Allow relations between objects.
|
31
|
+
|
32
|
+
- If both objects are routed: only allow if they're in the same database
|
33
|
+
- If one or both objects are NOT routed (e.g., User in default): allow
|
34
|
+
(This enables cross-database ForeignKeys for shared models like User)
|
35
|
+
"""
|
30
36
|
rules = getattr(settings, 'DATABASE_ROUTING_RULES', {})
|
31
37
|
db1 = rules.get(obj1._meta.app_label)
|
32
38
|
db2 = rules.get(obj2._meta.app_label)
|
33
|
-
|
39
|
+
|
40
|
+
# If both are routed, they must be in the same database
|
41
|
+
if db1 and db2:
|
42
|
+
return db1 == db2
|
43
|
+
|
44
|
+
# If one or both are not routed (e.g., User in default db), allow the relation
|
45
|
+
# This enables routed apps (blog, shop) to have ForeignKeys to shared models (User)
|
46
|
+
return True
|
34
47
|
|
35
48
|
def allow_migrate(self, db, app_label, **hints):
|
36
49
|
"""Allow migrations to correct database."""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: django-cfg
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.6
|
4
4
|
Summary: Django AI framework with built-in agents, type-safe Pydantic v2 configuration, and 8 enterprise apps. Replace settings.py, validate at startup, 90% less code. Production-ready AI workflows for Django.
|
5
5
|
Project-URL: Homepage, https://djangocfg.com
|
6
6
|
Project-URL: Documentation, https://djangocfg.com
|
@@ -3,7 +3,7 @@ django_cfg/__init__.py,sha256=4dZgnuTlq8YmLISTJAqnPrr080kxPfmPKUjhiWhkEDc,1630
|
|
3
3
|
django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
|
4
4
|
django_cfg/config.py,sha256=3hX5bOCbOWdUvtD9Z5qEHEOEyWzY1-4CsvFs_EO7VSw,1398
|
5
5
|
django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
|
6
|
-
django_cfg/apps/urls.py,sha256=
|
6
|
+
django_cfg/apps/urls.py,sha256=dNiX1MI7XGR5QyySWiFKfdXOwFJi5iPvegInmN_dB10,2861
|
7
7
|
django_cfg/apps/accounts/README.md,sha256=YkUYJ3iKMYTmm9ALK2PDnX75SDqZxgnkzNLCD5efxRs,8227
|
8
8
|
django_cfg/apps/accounts/__init__.py,sha256=osecEQhMJVP8ejhZzElNsAqA1fX-GPD3K5_yNwDk6IE,100
|
9
9
|
django_cfg/apps/accounts/__models.py,sha256=65AomWYd78ptQ60drPbodxf0Ue310vmJQpQOPHL6V3E,10161
|
@@ -102,6 +102,13 @@ django_cfg/apps/api/__init__.py,sha256=fHkKXld_pw5Eiqz4tNb3Z02nx-7T7PnqgMh-qjkGB
|
|
102
102
|
django_cfg/apps/api/commands/__init__.py,sha256=FTmBMxSpI9rO6EljgkWn8e9pxh07ao5Y1kx2TzQmZSY,88
|
103
103
|
django_cfg/apps/api/commands/urls.py,sha256=k7auWLPi3FiCSkBwuDMK9R-jeHKfrFNzr7LvOWuGdxA,360
|
104
104
|
django_cfg/apps/api/commands/views.py,sha256=OdSWzEjTM5SL9NJvaJB6pe1_wjevjWrOWWWwo4sB7Uo,10069
|
105
|
+
django_cfg/apps/api/endpoints/__init__.py,sha256=uHjV4E24Aj0UFgv7bW1Z0kH_NFe8PItNFuS105vvRz0,108
|
106
|
+
django_cfg/apps/api/endpoints/checker.py,sha256=mwaISxa26u0OTYEmM_ith_T03EeXkZQPA5bVrGrCsf0,19373
|
107
|
+
django_cfg/apps/api/endpoints/drf_views.py,sha256=oZLNq_OKs5DK9rZzGu5yVDwn7-GiIAS7MSokiQ3tGdo,1954
|
108
|
+
django_cfg/apps/api/endpoints/serializers.py,sha256=W5Az0m1jUi8rLLIMoKVBADk6KHFyAWrwJ_gzSinktno,3656
|
109
|
+
django_cfg/apps/api/endpoints/tests.py,sha256=hvMgYVSWI_dfoSgb1ow9EwVXXUE9uZeCUEvNo1H995k,9992
|
110
|
+
django_cfg/apps/api/endpoints/urls.py,sha256=QaGFwwA_rSq-qN0kcqM8LvTgTq_YlMd7MOAZCbC9E-k,372
|
111
|
+
django_cfg/apps/api/endpoints/views.py,sha256=sqvl07krrJur4ZhzB3QWK1ppEvuVSEX0zSoIQ-farDQ,1242
|
105
112
|
django_cfg/apps/api/health/__init__.py,sha256=ypFUiCo0I9VJpaZ_KqEPPX3-ma_MhRm5U1XYWahUaFI,93
|
106
113
|
django_cfg/apps/api/health/drf_views.py,sha256=EhK85lHg8J7fkZKUROSk6Gv-A2WzpRugBHwrKDjy2OI,8796
|
107
114
|
django_cfg/apps/api/health/serializers.py,sha256=Y_kn_RIn4MBRJWbsO2_DNEG_AqxnhuD7h9srhj6ggEE,1270
|
@@ -336,7 +343,7 @@ django_cfg/apps/payments/admin_interface/views/api/__init__.py,sha256=0lwYw-BO_j
|
|
336
343
|
django_cfg/apps/payments/admin_interface/views/api/payments.py,sha256=H02smiTvTR2XPXX7eWjueHbE1hby99Xui3jQtFe4xi4,11709
|
337
344
|
django_cfg/apps/payments/admin_interface/views/api/stats.py,sha256=Ms2RPsZa3-inHM9GuaOa81eEVbuF2hzZ3ZTNDD0qsDg,8020
|
338
345
|
django_cfg/apps/payments/admin_interface/views/api/users.py,sha256=iVTCbEjRHI8WO7eFXNoyW9VAfjwBz-BecXO_qfHrDOQ,2245
|
339
|
-
django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py,sha256=
|
346
|
+
django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py,sha256=NEFoU2UsfgQhXJIqehtNFsloA7JceUn3XEiwBoNAnPI,12136
|
340
347
|
django_cfg/apps/payments/admin_interface/views/api/webhook_public.py,sha256=JJtFkscn3ZnX4lfl7aHVJ3-yklUFPLRcP304ceuomsE,2467
|
341
348
|
django_cfg/apps/payments/config/__init__.py,sha256=V42Z39g3F7LU0TGYwBqySuIaY7cgpnFNJGaX2tai7Fo,985
|
342
349
|
django_cfg/apps/payments/config/django_cfg_integration.py,sha256=Kblp3SAkrg1HC9Lf2qbqCyqv5OOXRLEtQMzjfZBBAIk,8444
|
@@ -351,7 +358,7 @@ django_cfg/apps/payments/management/commands/process_pending_payments.py,sha256=
|
|
351
358
|
django_cfg/apps/payments/management/commands/test_providers.py,sha256=IvvJhTNw6KQm1EeWYTUMew0ZHzgUGWpG07JOhrpJEP0,18476
|
352
359
|
django_cfg/apps/payments/middleware/__init__.py,sha256=eL5TmlCKmpW53Ift5rtwS8ss1wUqp4j2gzjGhcAQUQY,380
|
353
360
|
django_cfg/apps/payments/middleware/api_access.py,sha256=lWX9A1UpIwPNC5320QcSVhHU_mg-LxzKaYG1bNjvN-I,16713
|
354
|
-
django_cfg/apps/payments/middleware/rate_limiting.py,sha256=
|
361
|
+
django_cfg/apps/payments/middleware/rate_limiting.py,sha256=nbObLQwIssxsVwovG6S_SiEpQcYmJIyAmA4tUtIt2cg,15163
|
355
362
|
django_cfg/apps/payments/middleware/usage_tracking.py,sha256=dY7n6lZFUo-5a49VzJnZAT6UmbaU7kHei9Xu02KXACw,11815
|
356
363
|
django_cfg/apps/payments/migrations/0001_initial.py,sha256=uLkgbaSvdPjoTHZ3pVB7aEgVPq_hAyQRWXFqC9-2oGc,48359
|
357
364
|
django_cfg/apps/payments/migrations/0002_rename_payments_un_user_id_7f6e79_idx_payments_un_user_id_8ce187_idx_and_more.py,sha256=MmxPMKYOzafTeVRj1cOOzVEDszKa_VYyqkUD8z7jZEk,1512
|
@@ -610,6 +617,7 @@ django_cfg/dashboard/sections/stats.py,sha256=k4ogZtZtR1CEkFTvoWgU-HTysr-Y2S4Lie
|
|
610
617
|
django_cfg/dashboard/sections/system.py,sha256=IP4SJMPOL-gqDancE_g46ZbmlveYDvljpszRJmz1tSc,2025
|
611
618
|
django_cfg/management/__init__.py,sha256=NrLAhiS59hqjy-bipOC1abNuRiNm5BpKXmjN05VzKbM,28
|
612
619
|
django_cfg/management/commands/__init__.py,sha256=GqJDbjiwRa9Y9uvf695EZ-Y42vQIMHp5YkjhMoeAM9I,417
|
620
|
+
django_cfg/management/commands/check_endpoints.py,sha256=5I-8cbVD6aA9g6_j_JI76NoZCSwZTy21B7hxNKbR4OI,6275
|
613
621
|
django_cfg/management/commands/check_settings.py,sha256=YyYKBMT3XaILD6PFKQGPALNnDv9rNtnF2U8RlkCoYiA,11770
|
614
622
|
django_cfg/management/commands/clear_constance.py,sha256=tX6YUeJsmxJxXLQRDX3VUkUP9t6B1gAyVrBl4krQ6K0,8263
|
615
623
|
django_cfg/management/commands/create_token.py,sha256=NspV-9j-T0dDjqY6ccJeuVqTB3v4ne1Jc43G2tKuioI,12015
|
@@ -617,7 +625,7 @@ django_cfg/management/commands/generate.py,sha256=tvBahlXOu63H7d-7Ree1WuR_6saebU
|
|
617
625
|
django_cfg/management/commands/list_urls.py,sha256=3J1Lxhi6ImFOZQ9D047tR2lQ6Hl2Zd7f6YmEYohlmqQ,11261
|
618
626
|
django_cfg/management/commands/migrate_all.py,sha256=gM5-Yp4k9dDWt8kpxBHAfvlSM8QW9ApUHV6tdRaVgVc,5454
|
619
627
|
django_cfg/management/commands/migrator.py,sha256=qH1lARoKaInkTXN87lav7yxkVkWzHrZ6XZzwa5Sqrg0,16484
|
620
|
-
django_cfg/management/commands/rundramatiq.py,sha256=
|
628
|
+
django_cfg/management/commands/rundramatiq.py,sha256=I5_OlmfpeIujyF0G6nTr0JWQeQIFb6-kSTaYai2Oqck,9424
|
621
629
|
django_cfg/management/commands/rundramatiq_simulator.py,sha256=dOLabc4bDVwpdWWFzi8H8SCIbVp0pg6dqviMLL0abxA,16101
|
622
630
|
django_cfg/management/commands/runserver_ngrok.py,sha256=d_kiTqCgRN9MUNlJf_ERorPqTyd6QZVJPVTURd7mKLA,6520
|
623
631
|
django_cfg/management/commands/script.py,sha256=Mrhpiz3leSzWOzULHTfsplIvRqmquaA67rVGQGKajsI,17538
|
@@ -741,7 +749,7 @@ django_cfg/modules/django_import_export/README.md,sha256=OuGT5gv0hwt3dcbMLfZUfos
|
|
741
749
|
django_cfg/modules/django_import_export/__init__.py,sha256=oJ9BDGdbQ_B8E2bGXxSQyRSzr8212rHGtgSLf9v6cAI,1908
|
742
750
|
django_cfg/modules/django_ipc_client/README.md,sha256=f_t_dK-W6GXMy7kxKpa_FidkZPII4M7eI3cmTFkJRMg,8971
|
743
751
|
django_cfg/modules/django_ipc_client/__init__.py,sha256=i1EODpOg7VIjCjZjO0ALDXFlVnRvUVolooOLxAROGek,1441
|
744
|
-
django_cfg/modules/django_ipc_client/client.py,sha256=
|
752
|
+
django_cfg/modules/django_ipc_client/client.py,sha256=lMlRm40axUcn44XJ_-JWibhqDJ-cpjwQCMweCMGpkdY,17478
|
745
753
|
django_cfg/modules/django_ipc_client/config.py,sha256=JArEm7Gg4eEa3C3iuJ63Nr3QIZi_-n2sHbFWiIlOukg,5668
|
746
754
|
django_cfg/modules/django_ipc_client/exceptions.py,sha256=qUohP8mtdczjNrB0uGTC3t6Km6FYgf6dFt0pWcYF2PE,5866
|
747
755
|
django_cfg/modules/django_ipc_client/dashboard/README.md,sha256=FTas0jg0bUxZGa05HN7AL72qLf9WyznrpmpIY_QyRbA,11567
|
@@ -848,7 +856,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
|
|
848
856
|
django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
|
849
857
|
django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
|
850
858
|
django_cfg/modules/django_unfold/__init__.py,sha256=Z91x1iGmkzlRbEb2L9OCFmYDKNAV9C4G3i15j5S0esc,1898
|
851
|
-
django_cfg/modules/django_unfold/dashboard.py,sha256=
|
859
|
+
django_cfg/modules/django_unfold/dashboard.py,sha256=WXz7TUQp2mchdAcPBWn7HaFWwkHzEUomckKNZK224mY,18108
|
852
860
|
django_cfg/modules/django_unfold/models.py,sha256=bY6QSSaH_-r9vOTkSQjxeIkl5RaED7XkxXkT8-W5stk,4014
|
853
861
|
django_cfg/modules/django_unfold/system_monitor.py,sha256=cznZqldRJqiSLSJbs4U7R2rX8ClzoIpqdfXdXqI2iQw,6955
|
854
862
|
django_cfg/modules/django_unfold/tailwind.py,sha256=X9o1K3QL0VwUISgJ26sLb6zkdK-00qiDuekqTw-fydc,10846
|
@@ -878,7 +886,7 @@ django_cfg/registry/services.py,sha256=BoCGXcvaJ59UtX6MxGLGzU1cnrzEGm2invsmkEqDV
|
|
878
886
|
django_cfg/registry/third_party.py,sha256=lYDcPbrFY1J2EGxEdn1SzBX7wR7hf8vsKH37iCO5rws,3141
|
879
887
|
django_cfg/routing/__init__.py,sha256=zOg9yh2lP2NaxlnZpVH8IogQBHGlcky_C-n0VWD9LIc,277
|
880
888
|
django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3FI,5994
|
881
|
-
django_cfg/routing/routers.py,sha256=
|
889
|
+
django_cfg/routing/routers.py,sha256=K-QrSUxA69Fv4uE9QOY4hbBTIMu7trl8hIDlxwywM4M,2103
|
882
890
|
django_cfg/static/admin/css/dashboard.css,sha256=O7KXnPRfhW1Y5JrwAqHae8Q_a6qyWyq-Y7UC0RtlV6s,6262
|
883
891
|
django_cfg/static/admin/js/commands.js,sha256=o_t5gFGsVsL3ApFFyokDNk3oUip5hPn0tuU9pHYiJeY,6433
|
884
892
|
django_cfg/static/admin/js/dashboard.js,sha256=uCcu6mnG0HNiHI_HVyYMc5c1YGg727PzutZU8JNR9Es,4176
|
@@ -939,8 +947,12 @@ django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,
|
|
939
947
|
django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVkaI3ToVM,13899
|
940
948
|
django_cfg/utils/smart_defaults.py,sha256=-AQjTi-iFqAN2xzQou9KssznZYKUJSrFjHlH717lyCM,11024
|
941
949
|
django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
|
942
|
-
django_cfg
|
943
|
-
django_cfg
|
944
|
-
django_cfg
|
945
|
-
django_cfg
|
946
|
-
django_cfg-1.4.
|
950
|
+
django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
|
951
|
+
django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
|
952
|
+
django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
953
|
+
django_cfg/pyproject.toml,sha256=88nmJKNOuzteCBLdh9Py3ZzYRYY__N6BnFZiT5mSr4s,8216
|
954
|
+
django_cfg-1.4.6.dist-info/METADATA,sha256=7L9aQv_xWde-XuQHa12P4iVN_9-0tKNTJzdWJ0vfxmk,22542
|
955
|
+
django_cfg-1.4.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
956
|
+
django_cfg-1.4.6.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
|
957
|
+
django_cfg-1.4.6.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
958
|
+
django_cfg-1.4.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|