django-cfg 1.2.7__py3-none-any.whl → 1.2.8__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.
Files changed (45) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/urls.py +2 -2
  3. django_cfg/modules/django_unfold/callbacks/__init__.py +9 -0
  4. django_cfg/modules/django_unfold/callbacks/actions.py +50 -0
  5. django_cfg/modules/django_unfold/callbacks/base.py +98 -0
  6. django_cfg/modules/django_unfold/callbacks/charts.py +224 -0
  7. django_cfg/modules/django_unfold/callbacks/commands.py +40 -0
  8. django_cfg/modules/django_unfold/callbacks/main.py +191 -0
  9. django_cfg/modules/django_unfold/callbacks/revolution.py +76 -0
  10. django_cfg/modules/django_unfold/callbacks/statistics.py +240 -0
  11. django_cfg/modules/django_unfold/callbacks/system.py +180 -0
  12. django_cfg/modules/django_unfold/callbacks/users.py +65 -0
  13. django_cfg/modules/django_unfold/models/config.py +10 -3
  14. django_cfg/modules/django_unfold/tailwind.py +68 -0
  15. django_cfg/templates/admin/components/action_grid.html +49 -0
  16. django_cfg/templates/admin/components/card.html +50 -0
  17. django_cfg/templates/admin/components/data_table.html +67 -0
  18. django_cfg/templates/admin/components/metric_card.html +39 -0
  19. django_cfg/templates/admin/components/modal.html +58 -0
  20. django_cfg/templates/admin/components/progress_bar.html +25 -0
  21. django_cfg/templates/admin/components/section_header.html +26 -0
  22. django_cfg/templates/admin/components/stat_item.html +32 -0
  23. django_cfg/templates/admin/components/stats_grid.html +72 -0
  24. django_cfg/templates/admin/components/status_badge.html +28 -0
  25. django_cfg/templates/admin/components/user_avatar.html +27 -0
  26. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +7 -7
  27. django_cfg/templates/admin/snippets/components/activity_tracker.html +48 -11
  28. django_cfg/templates/admin/snippets/components/charts_section.html +63 -13
  29. django_cfg/templates/admin/snippets/components/django_commands.html +18 -18
  30. django_cfg/templates/admin/snippets/components/quick_actions.html +3 -47
  31. django_cfg/templates/admin/snippets/components/recent_activity.html +28 -38
  32. django_cfg/templates/admin/snippets/components/recent_users_table.html +22 -53
  33. django_cfg/templates/admin/snippets/components/stats_cards.html +2 -66
  34. django_cfg/templates/admin/snippets/components/system_health.html +13 -63
  35. django_cfg/templates/admin/snippets/components/system_metrics.html +8 -25
  36. django_cfg/templates/admin/snippets/tabs/commands_tab.html +1 -1
  37. django_cfg/templates/admin/snippets/tabs/overview_tab.html +4 -4
  38. django_cfg/templates/admin/snippets/zones/zones_table.html +12 -33
  39. django_cfg/templatetags/django_cfg.py +2 -1
  40. {django_cfg-1.2.7.dist-info → django_cfg-1.2.8.dist-info}/METADATA +2 -1
  41. {django_cfg-1.2.7.dist-info → django_cfg-1.2.8.dist-info}/RECORD +44 -24
  42. django_cfg/modules/django_unfold/callbacks.py +0 -795
  43. {django_cfg-1.2.7.dist-info → django_cfg-1.2.8.dist-info}/WHEEL +0 -0
  44. {django_cfg-1.2.7.dist-info → django_cfg-1.2.8.dist-info}/entry_points.txt +0 -0
  45. {django_cfg-1.2.7.dist-info → django_cfg-1.2.8.dist-info}/licenses/LICENSE +0 -0
@@ -2,17 +2,7 @@
2
2
 
3
3
  <!-- System Metrics -->
4
4
  <div class="mt-8 w-full">
5
- <div class="flex items-center mb-6">
6
- <div class="flex items-center justify-center w-8 h-8 bg-blue-100 dark:bg-blue-900/20 rounded-lg mr-3">
7
- <span class="material-icons text-blue-600 dark:text-blue-400 text-lg">analytics</span>
8
- </div>
9
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark">
10
- System Metrics
11
- </h2>
12
- <span class="ml-auto text-xs text-font-subtle-light dark:text-font-subtle-dark bg-base-100 dark:bg-base-800 px-2 py-1 rounded-full">
13
- Live Data
14
- </span>
15
- </div>
5
+ {% include 'admin/components/section_header.html' with title='System Metrics' icon='analytics' icon_color='blue' badge='Live Data' %}
16
6
 
17
7
  <div class="grid grid-cols-1 md:grid-cols-2 gap-6 w-full">
18
8
  {% if system_metrics %}
@@ -27,8 +17,7 @@
27
17
  {% else %}text-red-600 dark:text-red-400{% endif %} mr-2">storage</span>
28
18
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ system_metrics.database.type }}</span>
29
19
  </div>
30
- {% component "unfold/components/progress.html" with value=system_metrics.database.health_percentage title="Connection Health" description=system_metrics.database.description %}
31
- {% endcomponent %}
20
+ {% include 'admin/components/progress_bar.html' with value=system_metrics.database.health_percentage title="Connection Health" description=system_metrics.database.description %}
32
21
  {% endcomponent %}
33
22
  </div>
34
23
  {% endif %}
@@ -44,8 +33,7 @@
44
33
  {% else %}text-red-600 dark:text-red-400{% endif %} mr-2">memory</span>
45
34
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ system_metrics.cache.type }}</span>
46
35
  </div>
47
- {% component "unfold/components/progress.html" with value=system_metrics.cache.health_percentage title="Performance" description=system_metrics.cache.description %}
48
- {% endcomponent %}
36
+ {% include 'admin/components/progress_bar.html' with value=system_metrics.cache.health_percentage title="Performance" description=system_metrics.cache.description %}
49
37
  {% endcomponent %}
50
38
  </div>
51
39
  {% endif %}
@@ -61,8 +49,7 @@
61
49
  {% else %}text-gray-600 dark:text-gray-400{% endif %} mr-2">folder</span>
62
50
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ system_metrics.storage.type }}</span>
63
51
  </div>
64
- {% component "unfold/components/progress.html" with value=system_metrics.storage.health_percentage title="Usage" description=system_metrics.storage.description %}
65
- {% endcomponent %}
52
+ {% include 'admin/components/progress_bar.html' with value=system_metrics.storage.health_percentage title="Usage" description=system_metrics.storage.description %}
66
53
  {% endcomponent %}
67
54
  </div>
68
55
  {% endif %}
@@ -78,8 +65,7 @@
78
65
  {% else %}text-red-600 dark:text-red-400{% endif %} mr-2">api</span>
79
66
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ system_metrics.api.type }}</span>
80
67
  </div>
81
- {% component "unfold/components/progress.html" with value=system_metrics.api.health_percentage title="URL Patterns" description=system_metrics.api.description %}
82
- {% endcomponent %}
68
+ {% include 'admin/components/progress_bar.html' with value=system_metrics.api.health_percentage title="URL Patterns" description=system_metrics.api.description %}
83
69
  {% endcomponent %}
84
70
  </div>
85
71
  {% endif %}
@@ -91,8 +77,7 @@
91
77
  <span class="material-icons text-green-600 dark:text-green-400 mr-2">storage</span>
92
78
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">PostgreSQL</span>
93
79
  </div>
94
- {% component "unfold/components/progress.html" with value=85 title="Connection Health" description="Healthy - 85%" %}
95
- {% endcomponent %}
80
+ {% include 'admin/components/progress_bar.html' with value=85 title="Connection Health" description="Healthy - 85%" %}
96
81
  {% endcomponent %}
97
82
  </div>
98
83
 
@@ -102,8 +87,7 @@
102
87
  <span class="material-icons text-primary-600 dark:text-primary-500 mr-2">memory</span>
103
88
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Memory Cache</span>
104
89
  </div>
105
- {% component "unfold/components/progress.html" with value=90 title="Performance" description="Optimal - 90%" %}
106
- {% endcomponent %}
90
+ {% include 'admin/components/progress_bar.html' with value=90 title="Performance" description="Optimal - 90%" %}
107
91
  {% endcomponent %}
108
92
  </div>
109
93
 
@@ -113,8 +97,7 @@
113
97
  <span class="material-icons text-amber-600 dark:text-amber-400 mr-2">folder</span>
114
98
  <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Disk Space</span>
115
99
  </div>
116
- {% component "unfold/components/progress.html" with value=67 title="Usage" description="67% used (33% free)" %}
117
- {% endcomponent %}
100
+ {% include 'admin/components/progress_bar.html' with value=67 title="Usage" description="67% used (33% free)" %}
118
101
  {% endcomponent %}
119
102
  </div>
120
103
  {% endif %}
@@ -3,7 +3,7 @@
3
3
  <!-- Commands Tab Content -->
4
4
  <div class="space-y-8">
5
5
  <!-- Header -->
6
- <div class="bg-white dark:bg-base-900 rounded-xl p-8 border border-base-200 dark:border-base-700 shadow-xs">
6
+ <div class="">
7
7
  <div class="flex items-center justify-between mb-6">
8
8
  <div>
9
9
  <h1 class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">Django Commands</h1>
@@ -1,9 +1,9 @@
1
1
  {% load unfold %}
2
2
 
3
3
  <!-- Overview Tab Content -->
4
- <div class="space-y-10">
4
+ <div class="space-y-10 flex flex-col gap-8">
5
5
  <!-- Hero Section with Key Metrics -->
6
- <div class="mb-6">
6
+ <div>
7
7
  <div class="flex items-center justify-between mb-6">
8
8
  <div>
9
9
  <h1 class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">System Overview</h1>
@@ -22,7 +22,7 @@
22
22
  </div>
23
23
 
24
24
  <!-- Primary Dashboard Row -->
25
- <div class="grid grid-cols-1 xl:grid-cols-3 gap-8">
25
+ <div class="grid grid-cols-1 xl:grid-cols-3" style="gap: 2rem;">
26
26
  <!-- Main Content Area -->
27
27
  <div class="xl:col-span-2 space-y-8">
28
28
  <!-- Charts Section -->
@@ -70,7 +70,7 @@
70
70
  </div>
71
71
 
72
72
  <!-- Secondary Metrics Row -->
73
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
73
+ <div class="grid grid-cols-1 lg:grid-cols-2 ье" style="gap: 2rem;">
74
74
  <!-- System Metrics -->
75
75
  <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 shadow-xs">
76
76
  <div class="p-6 border-b border-base-200 dark:border-base-700">
@@ -1,21 +1,12 @@
1
1
  {% load unfold %}
2
2
 
3
- <!-- API Zones Table with semantic colors -->
3
+ <!-- API Zones Table using reusable components -->
4
4
  <div class="w-full">
5
- <div class="flex items-center justify-between mb-6">
6
- <div class="flex items-center">
7
- <span class="material-icons text-blue-600 dark:text-blue-400 mr-3">public</span>
8
- <div>
9
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark">
10
- API Zones
11
- </h2>
12
- <p class="text-sm text-font-subtle-light dark:text-font-subtle-dark mt-1">
13
- Configure and monitor API zone access and permissions
14
- </p>
15
- </div>
16
- </div>
17
-
18
- </div>
5
+ {% capture as zone_subtitle silent %}
6
+ Configure and monitor API zone access and permissions
7
+ {% endcapture %}
8
+
9
+ {% include 'admin/components/section_header.html' with title='API Zones' icon='public' icon_color='blue' %}
19
10
 
20
11
  <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 overflow-hidden shadow-sm max-w-full">
21
12
  {% if zones_table.rows %}
@@ -35,8 +26,8 @@
35
26
  <tr class="hover:bg-base-100 dark:hover:bg-base-800 transition-colors duration-150">
36
27
  <td class="px-6 py-4 whitespace-nowrap">
37
28
  <div class="flex items-center">
38
- <div class="flex-shrink-0">
39
- <div class="h-8 w-8 bg-primary-100 dark:bg-primary-900/20 rounded-lg flex items-center justify-center mr-3">
29
+ <div class="flex-shrink-0 mr-3">
30
+ <div class="h-8 w-8 bg-primary-100 dark:bg-primary-900/20 rounded-lg flex items-center justify-center">
40
31
  <span class="material-icons text-sm text-primary-600 dark:text-primary-400">
41
32
  {% if row.name == 'public' %}public
42
33
  {% elif row.name == 'internal' %}corporate_fare
@@ -82,25 +73,13 @@
82
73
  </td>
83
74
  <td class="px-6 py-4 whitespace-nowrap">
84
75
  {% if row.status == 'active' or row.status == 'enabled' %}
85
- <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400">
86
- <span class="material-icons text-xs mr-1">check_circle</span>
87
- Active
88
- </span>
76
+ {% include 'admin/components/status_badge.html' with status='active' text='Active' %}
89
77
  {% elif row.status == 'maintenance' %}
90
- <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-amber-100 dark:bg-amber-900/20 text-amber-600 dark:text-amber-400">
91
- <span class="material-icons text-xs mr-1">build</span>
92
- Maintenance
93
- </span>
78
+ {% include 'admin/components/status_badge.html' with status='warning' text='Maintenance' icon='build' %}
94
79
  {% elif row.status == 'disabled' %}
95
- <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-100 dark:bg-red-900/20 text-red-600 dark:text-red-400">
96
- <span class="material-icons text-xs mr-1">block</span>
97
- Disabled
98
- </span>
80
+ {% include 'admin/components/status_badge.html' with status='error' text='Disabled' icon='block' %}
99
81
  {% else %}
100
- <span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-base-100 dark:bg-base-800 text-font-default-light dark:text-font-default-dark">
101
- <span class="material-icons text-xs mr-1">help</span>
102
- {{ row.status|title }}
103
- </span>
82
+ {% include 'admin/components/status_badge.html' with status='' text=row.status|title icon='help' %}
104
83
  {% endif %}
105
84
  </td>
106
85
  <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
@@ -14,7 +14,8 @@ def lib_name():
14
14
  """Get the library name."""
15
15
  # Lazy import to avoid AppRegistryNotReady error
16
16
  from django_cfg.config import LIB_NAME
17
- return LIB_NAME
17
+ from django_cfg import __version__
18
+ return f"{LIB_NAME} ({__version__})"
18
19
 
19
20
 
20
21
  @register.simple_tag
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.2.7
3
+ Version: 1.2.8
4
4
  Summary: 🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
5
5
  Project-URL: Homepage, https://django-cfg.com
6
6
  Project-URL: Documentation, https://django-cfg.com
@@ -110,6 +110,7 @@ Requires-Dist: pymdown-extensions<11.0,>=10.16; extra == 'docs'
110
110
  Provides-Extra: full
111
111
  Requires-Dist: django<6.0,>=5.2; extra == 'full'
112
112
  Requires-Dist: redis<7.0,>=6.4.0; extra == 'full'
113
+ Provides-Extra: local
113
114
  Provides-Extra: tasks
114
115
  Requires-Dist: redis<7.0,>=6.4.0; extra == 'tasks'
115
116
  Provides-Extra: test
@@ -1,10 +1,10 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=cUJMT2AzDvUmWArUe1FBbZ8EbRbn7T11NuZ5gQjnUic,1630
2
+ django_cfg/__init__.py,sha256=Cp3C1op--KxvioBZSUd1TlDKFSFwsCkCsT6Tx-nzB2M,1630
3
3
  django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
4
4
  django_cfg/config.py,sha256=0cuRJVEnf03WzvEqhwzLvn9Zi1805C5KG1yk27ekABA,1190
5
5
  django_cfg/urls.py,sha256=bpRFjMonQuk4UCUMxx4ueBX3YDNB7HXKFwEghQ3KR3o,793
6
6
  django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
7
- django_cfg/apps/urls.py,sha256=xdRTe1bMzF753cH5tw9peIwr21kciy13I368b_JyWk0,2118
7
+ django_cfg/apps/urls.py,sha256=IEHCO3g0yJq_zLWvtbfrcYQpV3tBUYTNUC2RWWCM7oY,2122
8
8
  django_cfg/apps/accounts/README.md,sha256=YkUYJ3iKMYTmm9ALK2PDnX75SDqZxgnkzNLCD5efxRs,8227
9
9
  django_cfg/apps/accounts/__init__.py,sha256=osecEQhMJVP8ejhZzElNsAqA1fX-GPD3K5_yNwDk6IE,100
10
10
  django_cfg/apps/accounts/apps.py,sha256=Xd4XNpY1tw3zOqk_M9L6MR6oFdfFMYrfmrmbj0uelUs,492
@@ -379,18 +379,27 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
379
379
  django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
380
380
  django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
381
381
  django_cfg/modules/django_unfold/__init__.py,sha256=Z91x1iGmkzlRbEb2L9OCFmYDKNAV9C4G3i15j5S0esc,1898
382
- django_cfg/modules/django_unfold/callbacks.py,sha256=4sCM8F2YCJbTK_TkfKrQw9gUm8zkkexbo0gstl2VsAA,29975
383
382
  django_cfg/modules/django_unfold/dashboard.py,sha256=zCYXhQUBdWrChRnvAQfa4gTRygKuF7aGO5IC7NrpAh8,12193
384
383
  django_cfg/modules/django_unfold/models.py,sha256=bY6QSSaH_-r9vOTkSQjxeIkl5RaED7XkxXkT8-W5stk,4014
385
384
  django_cfg/modules/django_unfold/system_monitor.py,sha256=cznZqldRJqiSLSJbs4U7R2rX8ClzoIpqdfXdXqI2iQw,6955
386
- django_cfg/modules/django_unfold/tailwind.py,sha256=eo5t0opF_-HX3ztnWA6BUOf35aVN0qUFYRkuabiH2KA,9237
385
+ django_cfg/modules/django_unfold/tailwind.py,sha256=X9o1K3QL0VwUISgJ26sLb6zkdK-00qiDuekqTw-fydc,10846
387
386
  django_cfg/modules/django_unfold/utils.py,sha256=ASY6aElXrwP38aqPYKVNc68SVm4ACwnL2ZQtykwVPXM,4501
387
+ django_cfg/modules/django_unfold/callbacks/__init__.py,sha256=7HiFap6ca9J3TFQ2QNVZJV8W1h7lbKkEZSudmbAtzHY,163
388
+ django_cfg/modules/django_unfold/callbacks/actions.py,sha256=SMTPa3fEvRVvR5kqkSqdUuLKgbWCFXNLltgzj_8Dqp8,1459
389
+ django_cfg/modules/django_unfold/callbacks/base.py,sha256=1JiGqY4pRV9kSIk0f3bd5sHSAhD1wk9pAFl3c8yQREw,3185
390
+ django_cfg/modules/django_unfold/callbacks/charts.py,sha256=572ogmblGaj0lcpmNNGTKvdAxQ1Y1Gt8oTSR0-Qjav8,8371
391
+ django_cfg/modules/django_unfold/callbacks/commands.py,sha256=L27Njk6uF7lBHjJjBjfxMnw3zNKahgtJctfw9KtHsvA,1285
392
+ django_cfg/modules/django_unfold/callbacks/main.py,sha256=Y8gD47EjoHs8Nn99x6A63v0opQqUbEEiURwO6kamoG0,7397
393
+ django_cfg/modules/django_unfold/callbacks/revolution.py,sha256=Ury0poaGj4J0lFx4siIwJBcubEvwivGemRIE0KEKAWE,3093
394
+ django_cfg/modules/django_unfold/callbacks/statistics.py,sha256=IYgqycFpWgOk5e22IZpOuJAhjC6-4uaZENqTm-NLwC8,8800
395
+ django_cfg/modules/django_unfold/callbacks/system.py,sha256=76o8Hx4WNsAz2B4D_F-7CHJVWh6U2M3MDsqriSxFBzo,6087
396
+ django_cfg/modules/django_unfold/callbacks/users.py,sha256=HBNmkyYFvLn35E2b1y5ZMbaWW1i_ouhRr1AbGs6liyU,2094
388
397
  django_cfg/modules/django_unfold/icons/README.md,sha256=j-NUixSC1QJh7PqYKxLZpPrTxKrAnx0urQraXgv4JHI,5612
389
398
  django_cfg/modules/django_unfold/icons/__init__.py,sha256=YXupXKorQ4fd5moQWWbjtLuvdXunMcxhbNGl6Bu__aA,198
390
399
  django_cfg/modules/django_unfold/icons/constants.py,sha256=phuomZCNKaTHwpa09VKZ4n2oNBmEX0mOlFK8MawwEK4,124659
391
400
  django_cfg/modules/django_unfold/icons/generate_icons.py,sha256=aesfyaZlIqQ_W6vb2O1Yl1ljVIx5M3HZNrnYc1fySkg,16559
392
401
  django_cfg/modules/django_unfold/models/__init__.py,sha256=1U7rkWx8yBWiX_cCMj0k_6m_LiC_OhUnLizAwjaRcF8,1037
393
- django_cfg/modules/django_unfold/models/config.py,sha256=g-28YHCZZVzC1HoZIh6C1zm4Wn4yoOJR0xrXWO-u54o,21552
402
+ django_cfg/modules/django_unfold/models/config.py,sha256=9NNFLHOwfqNfgDk3h67aFew0y3HwOeHgGaUsnkPQRRA,21813
394
403
  django_cfg/modules/django_unfold/models/dashboard.py,sha256=moK_6jj-tKItZZfmzklKaZ6fvw-oE2TMeudiZh_FPPI,7939
395
404
  django_cfg/modules/django_unfold/models/dropdown.py,sha256=bbRYl0iuzBrwgmqUMTDw9n4_tZ8L6Fwxm6AuUxQWp3g,1276
396
405
  django_cfg/modules/django_unfold/models/navigation.py,sha256=xrP2szoe1MSiTVAfc0Hd2dS32HhCp8XHBJinF5yc_U8,2575
@@ -406,6 +415,17 @@ django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3
406
415
  django_cfg/routing/routers.py,sha256=J89kcIArV2lSl3rzh61Rya0h-I5Zq7-QAat6PvmKVFs,1582
407
416
  django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
408
417
  django_cfg/templates/admin/index.html,sha256=kehH-W9fTTUo36G9X82vM7L3Mr_lTiMkfp0qxPJAaSg,1247
418
+ django_cfg/templates/admin/components/action_grid.html,sha256=inffy-bMcuecSwgnR3HIEGE-r9wG_BgPttkvHqqFih8,3068
419
+ django_cfg/templates/admin/components/card.html,sha256=gOW8MBvRiWPQdoSYg_MH7KQ8o_WTRC5anyefRcPtRjM,2167
420
+ django_cfg/templates/admin/components/data_table.html,sha256=zD8B_zv2VQh-cikyLGPTzzmtmnB97MDItK38P3po6OE,2799
421
+ django_cfg/templates/admin/components/metric_card.html,sha256=a_OR5rtYi9yOFzStWmpdPSoYvmBHeHm2t1TnArm6jpU,1726
422
+ django_cfg/templates/admin/components/modal.html,sha256=9xBmA7W0eqkqU23dYu5VfJySyINTXQW_LK7bhh2v_uA,2849
423
+ django_cfg/templates/admin/components/progress_bar.html,sha256=vspLpYcUcNbg29dpeRBT9IoqWw-7v9VCXpTAEbMtEIg,944
424
+ django_cfg/templates/admin/components/section_header.html,sha256=l_skppG1YPhlroRaejySDcUcdWpCarn1VyD0GJW35zQ,933
425
+ django_cfg/templates/admin/components/stat_item.html,sha256=XCxgUumBxNWJvWVyZD-XPz6tNimZMFGr-C8-ezOGLH0,1754
426
+ django_cfg/templates/admin/components/stats_grid.html,sha256=4Mt2OgDjmSeEXdPZ8YnnvvLDuIc74m6E5ZivrDhmqcs,3745
427
+ django_cfg/templates/admin/components/status_badge.html,sha256=AP2fCdVzUe_dRVWqF0B8UeHt_cIjygOf6tERgvmRC8g,1591
428
+ django_cfg/templates/admin/components/user_avatar.html,sha256=ChID6GB9iyHnYsqkbNLRmXKXZOn_u8GVa1dd_HZzQH8,1280
409
429
  django_cfg/templates/admin/constance/change_list.html,sha256=A6VN_gOQPzNvWvsOzfNFMXh-2qgfyWt4urmX95MIUuk,4820
410
430
  django_cfg/templates/admin/constance/includes/default_value.html,sha256=dHu28vMi0OOn4KmRseMwWiWq51fz7EFdz4RZB6_4jrk,1301
411
431
  django_cfg/templates/admin/constance/includes/fieldset_header.html,sha256=kAyS0jbWNwk7aBcI7G4rx-kvVw315m21kxzSDii-qig,838
@@ -415,34 +435,34 @@ django_cfg/templates/admin/constance/includes/table_headers.html,sha256=_flMPr9m
415
435
  django_cfg/templates/admin/import_export/change_list_export.html,sha256=oFBsnpgZ24gV4--UpPRLAqr_kU6-Y3MAudpHQKigKQY,1241
416
436
  django_cfg/templates/admin/import_export/change_list_import.html,sha256=jL7Dhjcbx8IfzY-ltlxoWLvF97tD9B77moj8Mh6sRjY,1214
417
437
  django_cfg/templates/admin/import_export/change_list_import_export.html,sha256=KWnPbkv_kP5TlAKBRutbk_eFTqPXDt6_SmxXULE94iE,1840
418
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=ggh2nOYcIxSEkFvniuo-8mixAz13IkfLKXd3NTf7lHQ,18162
419
- django_cfg/templates/admin/snippets/components/activity_tracker.html,sha256=WtZyHUmAQwVjvL3PV8OTu5_-FGhTUcPyBUXi8K-c6Eg,692
420
- django_cfg/templates/admin/snippets/components/charts_section.html,sha256=SZV2GLkSkYbXaWnUntbwxBhVXJRPHpjNcJrapqv3jO4,1932
421
- django_cfg/templates/admin/snippets/components/django_commands.html,sha256=53QZIwpXfqE21KtGriOW9T_kX-3XeZOoeOE1-XjIHlw,16047
422
- django_cfg/templates/admin/snippets/components/quick_actions.html,sha256=6A7Nm4mx168T6-al4NCKz13CSQKvktNWTXHEGoCDIDw,7508
423
- django_cfg/templates/admin/snippets/components/recent_activity.html,sha256=IVCQWNqj2avK4ZvsUc7EDGCkGN-DKx6Ib9ea0CwpJBY,2718
424
- django_cfg/templates/admin/snippets/components/recent_users_table.html,sha256=aPD1haGyn8cHvDjHjRFupYx4YhAXH3QXSKUMnErriNc,9270
425
- django_cfg/templates/admin/snippets/components/stats_cards.html,sha256=GLIPZgLPkShcCoEr8sj0IUVbcBhYPqiFeW10lqw7imE,3887
438
+ django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=wxtJWKhTtMH9cz_JIY-cj5AHIzIxGfpxeqFz1OwTD6k,18219
439
+ django_cfg/templates/admin/snippets/components/activity_tracker.html,sha256=FDiS4SfTiXBYWCWUWNyF7BPx05Bj4_wiFJ2RQSej5GU,3085
440
+ django_cfg/templates/admin/snippets/components/charts_section.html,sha256=sPjWvCc0y50gIOhpfloF6s9uT9XHc_S0u1eC3zZ6DwY,5401
441
+ django_cfg/templates/admin/snippets/components/django_commands.html,sha256=yXDK0lqQnQbKOCDDbfX9sbG05hcxL0A9_8bAlblsQmA,15943
442
+ django_cfg/templates/admin/snippets/components/quick_actions.html,sha256=AZ-93LK5TVvDdoTexrKGjoluKTRXAr9vQpj7OkFxj3s,4020
443
+ django_cfg/templates/admin/snippets/components/recent_activity.html,sha256=eWFII320pZL3S6hxCcdWKCwWjjn7bEERotjvVqGDAYU,1713
444
+ django_cfg/templates/admin/snippets/components/recent_users_table.html,sha256=xqlKawGT7RMLg1lDhW5vYsJuIjB2thvRgtjGMhoRVJo,6551
445
+ django_cfg/templates/admin/snippets/components/stats_cards.html,sha256=8RAtDTIcq7OBcdk_TWVovJ_Hk8UIlj5teuqnO2w0TAs,181
426
446
  django_cfg/templates/admin/snippets/components/stats_tiles.html,sha256=ELPz7ujZqZ55ejMIRLZt29dOn4k50L9F0u8cHgvMWPo,8206
427
- django_cfg/templates/admin/snippets/components/system_health.html,sha256=uQqmdP0RgIJiINUgfPEdRhbiobYyNaaxqlrjfBFhjZg,4533
428
- django_cfg/templates/admin/snippets/components/system_metrics.html,sha256=gb2YNHm09UnDjrtnem7pVd3oZXE4-Cshbkda11JgkoM,7204
447
+ django_cfg/templates/admin/snippets/components/system_health.html,sha256=N9MObX5D28fADMf1Xb9fArrq-3f6A5PHuDa_JdYjyOI,1578
448
+ django_cfg/templates/admin/snippets/components/system_metrics.html,sha256=OMXt_RoDd909A8lY0L4DC9LTpaloxkI2Q7kdsQmMOmc,6480
429
449
  django_cfg/templates/admin/snippets/components/user_permissions.html,sha256=ZFunUwWV7LRmtctn4m6kSirWZ5voIY4haJljENQ24eo,3830
430
450
  django_cfg/templates/admin/snippets/tabs/app_stats_tab.html,sha256=aW7kLfBF9Ch4YeBGgPNJAmPs90RSEfNs66-DpX-O6aY,14390
431
- django_cfg/templates/admin/snippets/tabs/commands_tab.html,sha256=YoPn1B0KeM7i7UXxEkaTgTVQ8sfDjYzBqIb4kdZhjjc,3533
432
- django_cfg/templates/admin/snippets/tabs/overview_tab.html,sha256=BVRhlGhtT1ire8yQLKg7Jig2Pk0z3q5HWDbaDtYvnkc,4628
451
+ django_cfg/templates/admin/snippets/tabs/commands_tab.html,sha256=Df4RXR2n_kg9110OEAQU_fJ5NW496wEeoBIcZ6gngFc,3439
452
+ django_cfg/templates/admin/snippets/tabs/overview_tab.html,sha256=GKM0tyqINFYWUDLc68vEgQe_4mUxQ3Im9O7mBJP4Jwo,4666
433
453
  django_cfg/templates/admin/snippets/tabs/stats_tab.html,sha256=jIqSnp4WTo2jAzzMqo9As6z5PykWsO_V1VwBEpTzZ5E,5170
434
454
  django_cfg/templates/admin/snippets/tabs/users_tab.html,sha256=04D05VSeidn2qJnQmktVI7TNlm7tNcXYXJAsk32U5hY,2813
435
- django_cfg/templates/admin/snippets/zones/zones_table.html,sha256=2oaiCXVof2F7LiDM7yrqKyKBIgYZrH5cSjkTN5ysDdU,13768
455
+ django_cfg/templates/admin/snippets/zones/zones_table.html,sha256=Hg4hT61yX0um00j4HkbkANOt0ehKwYIMT-r2IzTOpVo,12358
436
456
  django_cfg/templates/emails/base_email.html,sha256=TWcvYa2IHShlF_E8jf1bWZStRO0v8G4L_GexPxvz6XQ,8836
437
457
  django_cfg/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
438
- django_cfg/templatetags/django_cfg.py,sha256=ZobXXXHFSv6Iiz_fad12QdmRyEONjoRZipA8HusmMAM,768
458
+ django_cfg/templatetags/django_cfg.py,sha256=BpP4Q8zguNckZomtZBqdIBnQFO2gWtaTbeqfMgo--6E,828
439
459
  django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,435
440
460
  django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVkaI3ToVM,13899
441
461
  django_cfg/utils/smart_defaults.py,sha256=b6A1z7VO1NJGq0oUQXN5P97c3k_Ssgw6qUi0mK-4TlM,19786
442
462
  django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
443
463
  django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
444
- django_cfg-1.2.7.dist-info/METADATA,sha256=gRTDIKd6eEvtx2ph2-DD4uMxNEDS_y4602_EKyhWGk0,45616
445
- django_cfg-1.2.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
446
- django_cfg-1.2.7.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
447
- django_cfg-1.2.7.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
448
- django_cfg-1.2.7.dist-info/RECORD,,
464
+ django_cfg-1.2.8.dist-info/METADATA,sha256=l_PBuMBmzv37qK5OwK8VZvqtSBomVQ0duh-gai0_-rk,45638
465
+ django_cfg-1.2.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
466
+ django_cfg-1.2.8.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
467
+ django_cfg-1.2.8.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
468
+ django_cfg-1.2.8.dist-info/RECORD,,