django-cfg 1.4.88__py3-none-any.whl → 1.4.89__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.

Potentially problematic release.


This version of django-cfg might be problematic. Click here for more details.

Files changed (146) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/centrifugo/views/__init__.py +0 -2
  3. django_cfg/apps/dashboard/services/__init__.py +2 -0
  4. django_cfg/apps/dashboard/services/overview_service.py +205 -0
  5. django_cfg/apps/frontend/test_routing.py +134 -0
  6. django_cfg/apps/frontend/views.py +69 -28
  7. django_cfg/apps/urls.py +0 -1
  8. django_cfg/core/builders/apps_builder.py +0 -58
  9. django_cfg/modules/django_unfold/__init__.py +5 -24
  10. django_cfg/modules/django_unfold/models/__init__.py +0 -23
  11. django_cfg/modules/django_unfold/models/config.py +11 -65
  12. django_cfg/modules/django_unfold/{dashboard.py → navigation.py} +21 -152
  13. django_cfg/modules/django_unfold/tailwind.py +2 -4
  14. django_cfg/pyproject.toml +1 -1
  15. django_cfg/registry/third_party.py +0 -9
  16. django_cfg/routing/callbacks.py +1 -43
  17. django_cfg/static/frontend/admin/404/index.html +1 -1
  18. django_cfg/static/frontend/admin/404.html +1 -1
  19. django_cfg/static/frontend/admin/500/index.html +1 -1
  20. django_cfg/static/frontend/admin/_next/static/{D_d9HRw5Yn7BRHAX5q89_ → 0sN9ktsgXH48ygtGSrhfu}/_buildManifest.js +1 -1
  21. django_cfg/static/frontend/admin/_next/static/chunks/50314-9443faa6df24aebf.js +1 -0
  22. django_cfg/static/frontend/admin/_next/static/chunks/pages/{_app-1c0fff0f59a6d683.js → _app-c7dcd3aa616fab68.js} +1 -1
  23. django_cfg/static/frontend/admin/_next/static/chunks/pages/private/{centrifugo-44a8313fa040e9ad.js → centrifugo-f9ecbc3ae0052a03.js} +1 -1
  24. django_cfg/static/frontend/admin/auth/index.html +1 -1
  25. django_cfg/static/frontend/admin/index.html +1 -1
  26. django_cfg/static/frontend/admin/legal/cookies/index.html +1 -1
  27. django_cfg/static/frontend/admin/legal/privacy/index.html +1 -1
  28. django_cfg/static/frontend/admin/legal/security/index.html +1 -1
  29. django_cfg/static/frontend/admin/legal/terms/index.html +1 -1
  30. django_cfg/static/frontend/admin/private/centrifugo/index.html +1 -1
  31. django_cfg/static/frontend/admin/private/index.html +1 -1
  32. django_cfg/static/frontend/admin/private/profile/index.html +1 -1
  33. django_cfg/static/frontend/admin/private/ui/index.html +2 -2
  34. {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/METADATA +1 -1
  35. {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/RECORD +39 -143
  36. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/css/dashboard.css +0 -260
  37. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_channels.mjs +0 -313
  38. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_testing.mjs +0 -803
  39. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/main.mjs +0 -341
  40. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/overview.mjs +0 -432
  41. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/testing.mjs +0 -33
  42. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/websocket.mjs +0 -210
  43. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/channels_content.html +0 -46
  44. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/live_channels_content.html +0 -123
  45. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/overview_content.html +0 -45
  46. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/publishes_content.html +0 -84
  47. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/stat_cards.html +0 -53
  48. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/system_status.html +0 -91
  49. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/tab_navigation.html +0 -29
  50. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/testing_tools.html +0 -415
  51. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/layout/base.html +0 -61
  52. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/pages/dashboard.html +0 -58
  53. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/tags/connection_script.html +0 -48
  54. django_cfg/apps/centrifugo/templatetags/__init__.py +0 -1
  55. django_cfg/apps/centrifugo/templatetags/centrifugo_tags.py +0 -81
  56. django_cfg/apps/centrifugo/urls_admin.py +0 -20
  57. django_cfg/apps/centrifugo/views/dashboard.py +0 -28
  58. django_cfg/modules/django_dashboard/__init__.py +0 -23
  59. django_cfg/modules/django_dashboard/components.py +0 -312
  60. django_cfg/modules/django_dashboard/debug.py +0 -174
  61. django_cfg/modules/django_dashboard/management/__init__.py +0 -0
  62. django_cfg/modules/django_dashboard/management/commands/__init__.py +0 -0
  63. django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +0 -109
  64. django_cfg/modules/django_dashboard/sections/__init__.py +0 -1
  65. django_cfg/modules/django_dashboard/sections/base.py +0 -129
  66. django_cfg/modules/django_dashboard/sections/commands.py +0 -33
  67. django_cfg/modules/django_dashboard/sections/documentation.py +0 -393
  68. django_cfg/modules/django_dashboard/sections/overview.py +0 -398
  69. django_cfg/modules/django_dashboard/sections/stats.py +0 -48
  70. django_cfg/modules/django_dashboard/sections/system.py +0 -74
  71. django_cfg/modules/django_dashboard/sections/widgets.py +0 -222
  72. django_cfg/modules/django_unfold/callbacks/__init__.py +0 -9
  73. django_cfg/modules/django_unfold/callbacks/actions.py +0 -51
  74. django_cfg/modules/django_unfold/callbacks/apizones.py +0 -122
  75. django_cfg/modules/django_unfold/callbacks/base.py +0 -290
  76. django_cfg/modules/django_unfold/callbacks/charts.py +0 -223
  77. django_cfg/modules/django_unfold/callbacks/commands.py +0 -40
  78. django_cfg/modules/django_unfold/callbacks/main.py +0 -322
  79. django_cfg/modules/django_unfold/callbacks/statistics.py +0 -240
  80. django_cfg/modules/django_unfold/callbacks/system.py +0 -180
  81. django_cfg/modules/django_unfold/callbacks/users.py +0 -65
  82. django_cfg/modules/django_unfold/models/dashboard.py +0 -207
  83. django_cfg/modules/django_unfold/models/tabs.py +0 -26
  84. django_cfg/modules/django_unfold/models.py +0 -98
  85. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +0 -102
  86. django_cfg/static/frontend/admin/_next/static/chunks/50314-5ec79b293c2283dd.js +0 -1
  87. django_cfg/templates/admin/sections/commands_section.html +0 -5
  88. django_cfg/templates/admin/sections/documentation_section.html +0 -5
  89. django_cfg/templates/admin/sections/overview_section.html +0 -5
  90. django_cfg/templates/admin/sections/stats_section.html +0 -5
  91. django_cfg/templates/admin/sections/system_section.html +0 -5
  92. django_cfg/templates/admin/sections/widgets_section.html +0 -11
  93. django_cfg/templates/admin_old/components/action_grid.html +0 -49
  94. django_cfg/templates/admin_old/components/card.html +0 -50
  95. django_cfg/templates/admin_old/components/data_table.html +0 -67
  96. django_cfg/templates/admin_old/components/metric_card.html +0 -39
  97. django_cfg/templates/admin_old/components/modal.html +0 -58
  98. django_cfg/templates/admin_old/components/progress_bar.html +0 -20
  99. django_cfg/templates/admin_old/components/section_header.html +0 -26
  100. django_cfg/templates/admin_old/components/stat_item.html +0 -32
  101. django_cfg/templates/admin_old/components/stats_grid.html +0 -72
  102. django_cfg/templates/admin_old/components/status_badge.html +0 -28
  103. django_cfg/templates/admin_old/components/user_avatar.html +0 -27
  104. django_cfg/templates/admin_old/constance/change_list.html +0 -74
  105. django_cfg/templates/admin_old/constance/includes/default_value.html +0 -24
  106. django_cfg/templates/admin_old/constance/includes/fieldset_header.html +0 -15
  107. django_cfg/templates/admin_old/constance/includes/results_list.html +0 -16
  108. django_cfg/templates/admin_old/constance/includes/setting_row.html +0 -50
  109. django_cfg/templates/admin_old/constance/includes/table_headers.html +0 -10
  110. django_cfg/templates/admin_old/examples/component_class_example.html +0 -156
  111. django_cfg/templates/admin_old/import_export/change_list_export.html +0 -24
  112. django_cfg/templates/admin_old/import_export/change_list_import.html +0 -24
  113. django_cfg/templates/admin_old/import_export/change_list_import_export.html +0 -34
  114. django_cfg/templates/admin_old/index.html +0 -80
  115. django_cfg/templates/admin_old/index_new.html +0 -119
  116. django_cfg/templates/admin_old/layouts/base_dashboard.html +0 -62
  117. django_cfg/templates/admin_old/layouts/dashboard_with_tabs.html +0 -176
  118. django_cfg/templates/admin_old/sections/commands_section.html +0 -549
  119. django_cfg/templates/admin_old/sections/documentation_section.html +0 -152
  120. django_cfg/templates/admin_old/sections/overview_section.html +0 -112
  121. django_cfg/templates/admin_old/sections/stats_section.html +0 -35
  122. django_cfg/templates/admin_old/sections/system_section.html +0 -99
  123. django_cfg/templates/admin_old/sections/widgets_section.html +0 -129
  124. django_cfg/templates/admin_old/snippets/components/activity_tracker.html +0 -70
  125. django_cfg/templates/admin_old/snippets/components/charts_section.html +0 -113
  126. django_cfg/templates/admin_old/snippets/components/django_commands.html +0 -270
  127. django_cfg/templates/admin_old/snippets/components/quick_actions.html +0 -66
  128. django_cfg/templates/admin_old/snippets/components/recent_activity_improved.html +0 -25
  129. django_cfg/templates/admin_old/snippets/components/recent_users_table.html +0 -102
  130. django_cfg/templates/admin_old/snippets/components/stats_cards.html +0 -4
  131. django_cfg/templates/admin_old/snippets/components/stats_tiles.html +0 -92
  132. django_cfg/templates/admin_old/snippets/components/system_health.html +0 -22
  133. django_cfg/templates/admin_old/snippets/components/system_metrics.html +0 -199
  134. django_cfg/templates/admin_old/snippets/components/user_permissions.html +0 -57
  135. django_cfg/templates/admin_old/snippets/tabs/app_stats_tab.html +0 -201
  136. django_cfg/templates/admin_old/snippets/tabs/commands_tab.html +0 -114
  137. django_cfg/templates/admin_old/snippets/tabs/documentation_tab.html +0 -42
  138. django_cfg/templates/admin_old/snippets/tabs/overview_tab.html +0 -116
  139. django_cfg/templates/admin_old/snippets/tabs/stats_tab.html +0 -89
  140. django_cfg/templates/admin_old/snippets/tabs/users_tab.html +0 -51
  141. django_cfg/templates/admin_old/snippets/tabs/widgets_tab.html +0 -38
  142. django_cfg/templates/admin_old/snippets/zones/zones_table.html +0 -176
  143. /django_cfg/static/frontend/admin/_next/static/{D_d9HRw5Yn7BRHAX5q89_ → 0sN9ktsgXH48ygtGSrhfu}/_ssgManifest.js +0 -0
  144. {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/WHEEL +0 -0
  145. {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/entry_points.txt +0 -0
  146. {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/licenses/LICENSE +0 -0
@@ -1,114 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Commands Tab Content -->
4
- <div class="space-y-8">
5
- <!-- Header -->
6
- <div class="">
7
- <div class="flex items-center justify-between mb-6">
8
- <div>
9
- <h1 class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">Django Commands</h1>
10
- <p class="text-font-default-light dark:text-font-default-dark mt-2">
11
- Discover and explore all available Django management commands
12
- </p>
13
- </div>
14
- <div class="flex items-center space-x-2 text-sm text-font-subtle-light dark:text-font-subtle-dark">
15
- <span class="material-icons text-purple-500">terminal</span>
16
- <span>{{ django_commands.total_commands }} commands available</span>
17
- </div>
18
- </div>
19
-
20
- <!-- Quick Stats -->
21
- <div class="grid grid-cols-1 md:grid-cols-4 gap-4">
22
- <div class="bg-base-50 dark:bg-base-800 rounded-lg p-4">
23
- <div class="flex items-center">
24
- <span class="material-icons text-blue-600 dark:text-blue-400 mr-3">terminal</span>
25
- <div>
26
- <div class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">{{ django_commands.total_commands }}</div>
27
- <div class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Total Commands</div>
28
- </div>
29
- </div>
30
- </div>
31
-
32
- <div class="bg-base-50 dark:bg-base-800 rounded-lg p-4">
33
- <div class="flex items-center">
34
- <span class="material-icons text-green-600 dark:text-green-400 mr-3">settings</span>
35
- <div>
36
- <div class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">{{ django_commands.core_commands }}</div>
37
- <div class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Core Commands</div>
38
- </div>
39
- </div>
40
- </div>
41
-
42
- <div class="bg-base-50 dark:bg-base-800 rounded-lg p-4">
43
- <div class="flex items-center">
44
- <span class="material-icons text-indigo-600 dark:text-indigo-400 mr-3">apps</span>
45
- <div>
46
- <div class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">{{ django_commands.custom_commands }}</div>
47
- <div class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Custom Commands</div>
48
- </div>
49
- </div>
50
- </div>
51
-
52
- <div class="bg-base-50 dark:bg-base-800 rounded-lg p-4">
53
- <div class="flex items-center">
54
- <span class="material-icons text-purple-600 dark:text-purple-400 mr-3">category</span>
55
- <div>
56
- <div class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">{{ django_commands.categories|length }}</div>
57
- <div class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Categories</div>
58
- </div>
59
- </div>
60
- </div>
61
- </div>
62
- </div>
63
-
64
- <!-- Commands Section -->
65
- {% include 'admin/snippets/components/django_commands.html' %}
66
-
67
- <!-- Documentation Section -->
68
- <div class="mt-12">
69
- <div class="flex items-center justify-between mb-6">
70
- <div>
71
- <h2 class="text-xl font-bold text-font-important-light dark:text-font-important-dark flex items-center">
72
- <span class="material-icons text-blue-500 mr-2">menu_book</span>
73
- Commands Documentation
74
- </h2>
75
- <p class="text-font-default-light dark:text-font-default-dark mt-2">
76
- Complete guide to Django management commands
77
- </p>
78
- </div>
79
- </div>
80
-
81
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 overflow-hidden shadow-sm">
82
- <div class="p-6">
83
- {% if documentation_content %}
84
- <!-- Rendered Markdown Content -->
85
- <div class="prose prose-slate dark:prose-invert max-w-none">
86
- {{ documentation_content|safe }}
87
- </div>
88
- {% else %}
89
- <!-- Fallback: Basic documentation -->
90
- <div class="prose prose-slate dark:prose-invert max-w-none">
91
- <h2>Django Management Commands</h2>
92
- <p>Django management commands provide a command-line interface for administrative tasks.</p>
93
-
94
- <h3>Common Commands</h3>
95
- <ul>
96
- <li><code>migrate</code> - Apply database migrations</li>
97
- <li><code>makemigrations</code> - Create new migrations</li>
98
- <li><code>runserver</code> - Start development server</li>
99
- <li><code>createsuperuser</code> - Create admin user</li>
100
- <li><code>collectstatic</code> - Collect static files</li>
101
- </ul>
102
-
103
- <h3>Getting Help</h3>
104
- <p>To get help for any command, use:</p>
105
- <pre class="bg-base-50 dark:bg-base-800 rounded-lg p-4 overflow-x-auto text-sm"><code>python manage.py help &lt;command_name&gt;</code></pre>
106
-
107
- <h3>Custom Commands</h3>
108
- <p>You can create custom management commands by adding them to <code>management/commands/</code> directory in your Django app.</p>
109
- </div>
110
- {% endif %}
111
- </div>
112
- </div>
113
- </div>
114
- </div>
@@ -1,42 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Documentation Tab Content -->
4
- <div class="space-y-8">
5
- <!-- Header -->
6
- <div class="">
7
- <div class="flex items-center justify-between mb-6">
8
- <div>
9
- <h1 class="text-2xl font-bold text-font-important-light dark:text-font-important-dark">Commands Documentation</h1>
10
- <p class="text-font-default-light dark:text-font-default-dark mt-2">
11
- Complete guide to all Django management commands
12
- </p>
13
- </div>
14
- <div class="flex items-center space-x-2 text-sm text-font-subtle-light dark:text-font-subtle-dark">
15
- <span class="material-icons text-blue-500">menu_book</span>
16
- <span>Management Commands Reference</span>
17
- </div>
18
- </div>
19
- </div>
20
-
21
- <!-- Documentation Content -->
22
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 overflow-hidden shadow-sm">
23
- <div class="p-6">
24
- {% if documentation_content %}
25
- <!-- Rendered Markdown Content -->
26
- <div class="prose prose-slate dark:prose-invert max-w-none">
27
- {{ documentation_content|safe }}
28
- </div>
29
- {% else %}
30
- <!-- Fallback: Display README.md as code -->
31
- <div class="markdown-body">
32
- <pre class="bg-base-50 dark:bg-base-800 rounded-lg p-4 overflow-x-auto text-sm"><code>{% if readme_content %}{{ readme_content }}{% else %}Documentation not found.
33
-
34
- Please ensure that README.md exists at:
35
- /src/django_cfg/management/README.md{% endif %}</code></pre>
36
- </div>
37
- {% endif %}
38
- </div>
39
- </div>
40
- </div>
41
-
42
- <!-- Prose styles loaded from /static/admin/css/prose-unfold.css -->
@@ -1,116 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Overview Tab Content -->
4
- <div class="space-y-10 flex flex-col gap-8">
5
- <!-- Hero Section with Key Metrics -->
6
- <div>
7
- <div class="flex items-center justify-between mb-6">
8
- <div>
9
- <h1 class="text-2xl font-bold theme-text">System Overview</h1>
10
- <p class="text-gray-600 dark:text-gray-300 mt-2">
11
- Real-time monitoring and key performance indicators
12
- </p>
13
- </div>
14
- <div class="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
15
- <span class="material-icons text-green-500">fiber_manual_record</span>
16
- <span>Live data</span>
17
- </div>
18
- </div>
19
-
20
- <!-- Key Statistics Cards -->
21
- {% include 'admin/snippets/components/stats_cards.html' %}
22
- </div>
23
-
24
- <!-- System Health & Quick Actions - Full Width Row -->
25
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
26
- <!-- System Health Card -->
27
- <div class="theme-card rounded-lg shadow-sm border">
28
- <div class="p-6">
29
- {% include 'admin/snippets/components/system_health.html' %}
30
- </div>
31
- </div>
32
-
33
- <!-- Quick Actions Card -->
34
- <div class="theme-card rounded-lg border theme-border shadow-sm">
35
- <div class="p-6">
36
- {% include 'admin/snippets/components/quick_actions.html' %}
37
- </div>
38
- </div>
39
- </div>
40
-
41
- <!-- Charts & Recent Activity - Full Width -->
42
- <div class="space-y-8">
43
- <!-- Charts Section -->
44
- {% include 'admin/snippets/components/charts_section.html' %}
45
-
46
- <!-- Recent Activity Stream -->
47
- <div class="theme-card rounded-lg shadow-sm border">
48
- <div class="p-6 border-b theme-border">
49
- <div class="flex items-center justify-between">
50
- <h3 class="text-lg font-semibold theme-text flex items-center">
51
- <span class="material-icons text-blue-600 mr-2">timeline</span>
52
- Recent Activity
53
- </h3>
54
- <a
55
- href="#"
56
- class="text-sm text-blue-600 hover:text-blue-700 flex items-center"
57
- >
58
- View all
59
- <span class="material-icons text-xs ml-1">arrow_forward</span>
60
- </a>
61
- </div>
62
- </div>
63
- <div class="p-6">
64
- {% include 'admin/snippets/components/recent_activity_improved.html' %}
65
- </div>
66
- </div>
67
- </div>
68
-
69
- <!-- Secondary Metrics Row -->
70
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
71
- <!-- System Metrics -->
72
- <div class="theme-card rounded-lg border theme-border shadow-sm">
73
- <div class="p-6 border-b theme-border">
74
- <h3 class="text-lg font-semibold theme-text flex items-center">
75
- <span class="material-icons text-blue-500 mr-2">memory</span>
76
- System Metrics
77
- </h3>
78
- </div>
79
- <div class="p-6">
80
- {% include 'admin/snippets/components/system_metrics.html' %}
81
- </div>
82
- </div>
83
-
84
- <!-- Activity Tracker -->
85
- <div class="theme-card rounded-lg border theme-border shadow-sm">
86
- <div class="p-6 border-b theme-border">
87
- <h3 class="text-lg font-semibold theme-text flex items-center">
88
- <span class="material-icons text-blue-600 mr-2">track_changes</span>
89
- Activity Tracker
90
- </h3>
91
- </div>
92
- <div class="p-6">
93
- {% include 'admin/snippets/components/activity_tracker.html' %}
94
- </div>
95
- </div>
96
- </div>
97
-
98
- <!-- Application Statistics (if available) -->
99
- {% if stats_groups %}
100
- <div class="bg-gray-50 dark:bg-gray-800 rounded-xl p-8 border theme-border">
101
- <div class="flex items-center mb-6">
102
- <span class="material-icons text-green-500 mr-3">apps</span>
103
- <div>
104
- <h2 class="text-xl font-semibold theme-text">
105
- Application Statistics
106
- </h2>
107
- <p class="text-gray-600 dark:text-gray-300 text-sm mt-1">
108
- Detailed metrics for each application module
109
- </p>
110
- </div>
111
- </div>
112
- {% include 'admin/snippets/components/stats_tiles.html' %}
113
- </div>
114
- {% endif %}
115
-
116
- </div>
@@ -1,89 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Statistics Tab -->
4
- <div class="space-y-8">
5
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark mb-4">
6
- System Statistics
7
- </h2>
8
-
9
- <!-- Stats Grid -->
10
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
11
- {% for card in stats_cards %}
12
- {% component "unfold/components/card.html" with title=card.title %}
13
- <div class="flex items-center justify-between">
14
- <div class="flex items-center">
15
- <span class="material-icons text-2xl text-font-subtle-light dark:text-font-subtle-dark mr-3">{{ card.icon }}</span>
16
- <div>
17
- <div class="text-3xl font-bold text-font-important-light dark:text-font-important-dark">{{ card.value }}</div>
18
- <div class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ card.change }}</div>
19
- </div>
20
- </div>
21
- <div class="text-right">
22
- <div class="text-xs text-font-subtle-light dark:text-font-subtle-dark">{{ card.change_type }}</div>
23
- </div>
24
- </div>
25
- {% endcomponent %}
26
- {% endfor %}
27
- </div>
28
-
29
- <!-- Detailed Stats Sections -->
30
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
31
- <!-- Users Statistics -->
32
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-6">
33
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark mb-4">
34
- <span class="material-icons mr-2">people</span>
35
- User Statistics
36
- </h3>
37
- <div class="space-y-4">
38
- <div class="flex justify-between items-center">
39
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Total Users</span>
40
- <span class="font-semibold text-font-default-light dark:text-font-default-dark">{{ total_users_count }}</span>
41
- </div>
42
- <div class="flex justify-between items-center">
43
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Active Users</span>
44
- <span class="font-semibold text-font-default-light dark:text-font-default-dark">{{ active_users_count }}</span>
45
- </div>
46
- <div class="flex justify-between items-center">
47
- <span class="text-font-subtle-light dark:text-font-subtle-dark">New Users (7d)</span>
48
- <span class="font-semibold text-font-default-light dark:text-font-default-dark">{{ new_users_count }}</span>
49
- </div>
50
- <div class="flex justify-between items-center">
51
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Superusers</span>
52
- <span class="font-semibold text-font-default-light dark:text-font-default-dark">{{ superusers_count }}</span>
53
- </div>
54
- </div>
55
- </div>
56
-
57
- <!-- System Health -->
58
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-6">
59
- <h3 class="text-lg font-semibold text-font-important-light dark:text-font-important-dark mb-4">
60
- <span class="material-icons mr-2">health_and_safety</span>
61
- System Health
62
- </h3>
63
- <div class="space-y-4">
64
- <div class="flex justify-between items-center">
65
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Database</span>
66
- <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400"> Healthy
67
- </span>
68
- </div>
69
- <div class="flex justify-between items-center">
70
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Cache</span>
71
- <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400"> Healthy
72
- </span>
73
- </div>
74
- <div class="flex justify-between items-center">
75
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Queue</span>
76
- <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400"> Healthy
77
- </span>
78
- </div>
79
- <div class="flex justify-between items-center">
80
- <span class="text-font-subtle-light dark:text-font-subtle-dark">Storage</span>
81
- <span class="px-2 py-1 text-xs font-semibold rounded-full bg-green-100 dark:bg-green-900/20 text-green-600 dark:text-green-400"> Healthy
82
- </span>
83
- </div>
84
- </div>
85
- </div>
86
- </div>
87
-
88
-
89
- </div>
@@ -1,51 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Users Tab Content -->
4
- <div class="space-y-8">
5
- <!-- Recent Users Table -->
6
- {% include 'admin/snippets/components/recent_users_table.html' %}
7
-
8
- <!-- User Permissions -->
9
- {% include 'admin/snippets/components/user_permissions.html' %}
10
-
11
- <!-- User Statistics -->
12
- <div class="w-full">
13
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark mb-4">
14
- User Statistics
15
- </h2>
16
- <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
17
- <div class="bg-white dark:bg-base-900 rounded-lg p-6 border border-base-200 dark:border-base-700 shadow-xs">
18
- <div class="flex items-center">
19
- <span class="material-icons text-blue-600 dark:text-blue-400 mr-3">person_add</span>
20
- <div>
21
- <h3 class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">New Users</h3>
22
- <p class="text-2xl font-bold text-blue-600 dark:text-blue-400">{{ new_users_count|default:0 }}</p>
23
- <p class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Last 7 days</p>
24
- </div>
25
- </div>
26
- </div>
27
-
28
- <div class="bg-white dark:bg-base-900 rounded-lg p-6 border border-base-200 dark:border-base-700 shadow-xs">
29
- <div class="flex items-center">
30
- <span class="material-icons text-green-600 dark:text-green-400 mr-3">check_circle</span>
31
- <div>
32
- <h3 class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">Active Users</h3>
33
- <p class="text-2xl font-bold text-green-600 dark:text-green-400">{{ active_users_count|default:0 }}</p>
34
- <p class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Currently active</p>
35
- </div>
36
- </div>
37
- </div>
38
-
39
- <div class="bg-white dark:bg-base-900 rounded-lg p-6 border border-base-200 dark:border-base-700 shadow-xs">
40
- <div class="flex items-center">
41
- <span class="material-icons text-primary-600 dark:text-primary-500 mr-3">admin_panel_settings</span>
42
- <div>
43
- <h3 class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">Superusers</h3>
44
- <p class="text-2xl font-bold text-primary-600 dark:text-primary-500">{{ superusers_count|default:0 }}</p>
45
- <p class="text-sm text-font-subtle-light dark:text-font-subtle-dark">Administrators</p>
46
- </div>
47
- </div>
48
- </div>
49
- </div>
50
- </div>
51
- </div>
@@ -1,38 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- Widgets Tab Content -->
4
- <div class="space-y-8">
5
- <!-- Info Banner -->
6
- <div class="bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg p-4">
7
- <div class="flex items-start">
8
- <span class="material-icons text-blue-500 mr-3">info</span>
9
- <div>
10
- <h4 class="text-sm font-semibold text-blue-900 dark:text-blue-300 mb-1">
11
- About Dashboard Widgets
12
- </h4>
13
- <p class="text-xs text-blue-700 dark:text-blue-400">
14
- Widgets are automatically generated from <code class="bg-blue-100 dark:bg-blue-800 px-1 rounded">DashboardManager.get_widgets_config()</code>.
15
- Add custom widgets by extending the configuration in your project's dashboard manager.
16
- </p>
17
- </div>
18
- </div>
19
- </div>
20
-
21
- <!-- Widgets Content (will be replaced by widgets_section if available) -->
22
- {% if widgets_section %}
23
- {{ widgets_section|safe }}
24
- {% else %}
25
- <!-- Fallback: show message if widgets_section not rendered -->
26
- <div class="theme-card rounded-lg shadow-sm border theme-border p-12 text-center">
27
- <span class="material-icons text-gray-300 dark:text-gray-600 text-6xl mb-4">
28
- widgets
29
- </span>
30
- <h3 class="text-lg font-semibold text-gray-600 dark:text-gray-400 mb-2">
31
- Widgets Section Not Loaded
32
- </h3>
33
- <p class="text-sm text-gray-500 dark:text-gray-500">
34
- The widgets section is being initialized. Please refresh the page.
35
- </p>
36
- </div>
37
- {% endif %}
38
- </div>
@@ -1,176 +0,0 @@
1
- {% load unfold %}
2
-
3
- <!-- API Zones Table using reusable components -->
4
- <div class="w-full">
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' %}
10
-
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">
12
- {% if zones_table.rows %}
13
- <div class="overflow-x-auto">
14
- <table class="w-full divide-y divide-base-200 dark:divide-base-700">
15
- <thead class="bg-base-50 dark:bg-base-800 border-b border-base-200 dark:border-base-700">
16
- <tr>
17
- {% for header in zones_table.headers %}
18
- <th class="px-6 py-3 text-left text-xs font-medium text-font-subtle-light dark:text-font-subtle-dark uppercase tracking-wider">
19
- {{ header.label }}
20
- </th>
21
- {% endfor %}
22
- </tr>
23
- </thead>
24
- <tbody class="bg-white dark:bg-base-900 divide-y divide-base-200 dark:divide-base-700">
25
- {% for row in zones_table.rows %}
26
- <tr class="hover:bg-base-50 dark:hover:bg-base-700 transition-colors duration-150">
27
- <td class="px-6 py-4 whitespace-nowrap">
28
- <div class="flex items-center">
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">
31
- <span class="material-icons text-sm text-primary-600 dark:text-primary-400">
32
- {% if row.name == 'public' %}public
33
- {% elif row.name == 'internal' %}corporate_fare
34
- {% elif row.name == 'admin' %}admin_panel_settings
35
- {% elif row.name == 'data' %}data_usage
36
- {% else %}api{% endif %}
37
- </span>
38
- </div>
39
- </div>
40
- <div>
41
- <div class="text-sm font-medium text-font-default-light dark:text-font-default-dark">
42
- {{ row.name|title }}
43
- </div>
44
- <div class="text-xs text-font-subtle-light dark:text-font-subtle-dark">
45
- Zone: {{ row.name }}
46
- </div>
47
- </div>
48
- </div>
49
- </td>
50
- <td class="px-6 py-4">
51
- <div class="text-sm font-medium text-font-default-light dark:text-font-default-dark">
52
- {{ row.title }}
53
- </div>
54
- <div class="text-xs text-font-subtle-light dark:text-font-subtle-dark mt-1 max-w-xs truncate">
55
- {{ row.description }}
56
- </div>
57
- </td>
58
- <td class="px-6 py-4 whitespace-nowrap text-center">
59
- <div class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">
60
- {{ row.apps_count|default:row.app_count|default:0 }}
61
- </div>
62
- <div class="text-xs text-font-subtle-light dark:text-font-subtle-dark">
63
- {% if row.apps_count|default:row.app_count|default:0 == 1 %}App{% else %}Apps{% endif %}
64
- </div>
65
- </td>
66
- <td class="px-6 py-4 whitespace-nowrap text-center">
67
- <div class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">
68
- {{ row.endpoints_count|default:row.endpoint_count|default:0 }}
69
- </div>
70
- <div class="text-xs text-font-subtle-light dark:text-font-subtle-dark">
71
- {% if row.endpoints_count|default:row.endpoint_count|default:0 == 1 %}Endpoint{% else %}Endpoints{% endif %}
72
- </div>
73
- </td>
74
- <td class="px-6 py-4 whitespace-nowrap">
75
- {% if row.status == 'active' or row.status == 'enabled' %}
76
- {% include 'admin/components/status_badge.html' with status='active' text='Active' %}
77
- {% elif row.status == 'maintenance' %}
78
- {% include 'admin/components/status_badge.html' with status='warning' text='Maintenance' icon='build' %}
79
- {% elif row.status == 'disabled' %}
80
- {% include 'admin/components/status_badge.html' with status='error' text='Disabled' icon='block' %}
81
- {% else %}
82
- {% include 'admin/components/status_badge.html' with status='' text=row.status|title icon='help' %}
83
- {% endif %}
84
- </td>
85
- <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
86
- <div class="flex items-center space-x-2 text-sm">
87
- <a href="{{ row.schema_url }}" target="_blank" class="inline-flex items-center px-3 py-1.5 rounded-default bg-primary-100 dark:bg-primary-900/20 text-primary-600 dark:text-primary-400 hover:bg-primary-200 dark:hover:bg-primary-800/30 transition-colors text-xs font-medium">
88
- <span class="material-icons text-xs mr-1">description</span>
89
- Schema
90
- </a>
91
- </div>
92
- </td>
93
- </tr>
94
- {% endfor %}
95
- </tbody>
96
- </table>
97
- </div>
98
- {% else %}
99
- <div class="text-center py-16">
100
- <div class="flex flex-col items-center">
101
- <div class="bg-base-100 dark:bg-base-800 rounded-full p-4 mb-4">
102
- <span class="material-icons text-3xl text-base-300 dark:text-base-600">public</span>
103
- </div>
104
- <h3 class="text-lg font-medium text-font-important-light dark:text-font-important-dark mb-2">No API zones configured</h3>
105
- <p class="text-font-subtle-light dark:text-font-subtle-dark max-w-md mx-auto mb-6">
106
- API zones help organize and control access to different parts of your application.
107
- Create your first zone to get started.
108
- </p>
109
- <button class="inline-flex items-center px-4 py-2 border border-primary-600 dark:border-primary-500 rounded-md text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 dark:bg-primary-500 dark:hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2">
110
- <span class="material-icons text-sm mr-2">add</span>
111
- Create First Zone
112
- </button>
113
- </div>
114
- </div>
115
- {% endif %}
116
- </div>
117
-
118
- <!-- Zone Statistics -->
119
- {% if zones_table.rows %}
120
- <div class="mt-6 grid grid-cols-1 md:grid-cols-4 gap-4">
121
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-4 shadow-xs">
122
- <div class="flex items-center">
123
- <div class="flex-shrink-0 bg-primary-100 dark:bg-primary-900/20 p-2 rounded-lg">
124
- <span class="material-icons text-primary-600 dark:text-primary-400">public</span>
125
- </div>
126
- <div class="ml-3">
127
- <p class="text-sm font-medium text-font-subtle-light dark:text-font-subtle-dark">Total Zones</p>
128
- <p class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">{{ zones_table.rows|length }}</p>
129
- </div>
130
- </div>
131
- </div>
132
-
133
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-4 shadow-xs">
134
- <div class="flex items-center">
135
- <div class="flex-shrink-0 bg-success-100 dark:bg-success-900/20 p-2 rounded-lg">
136
- <span class="material-icons text-success-600 dark:text-success-400">check_circle</span>
137
- </div>
138
- <div class="ml-3">
139
- <p class="text-sm font-medium text-font-subtle-light dark:text-font-subtle-dark">Active Zones</p>
140
- <p class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">
141
- {{ zones_table.rows|length }}
142
- </p>
143
- </div>
144
- </div>
145
- </div>
146
-
147
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-4 shadow-xs">
148
- <div class="flex items-center">
149
- <div class="flex-shrink-0 bg-primary-100 dark:bg-primary-900/20 p-2 rounded-lg">
150
- <span class="material-icons text-primary-600 dark:text-primary-500">apps</span>
151
- </div>
152
- <div class="ml-3">
153
- <p class="text-sm font-medium text-font-subtle-light dark:text-font-subtle-dark">Total Apps</p>
154
- <p class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">
155
- {% widthratio zones_table.rows|length 1 8 %}
156
- </p>
157
- </div>
158
- </div>
159
- </div>
160
-
161
- <div class="bg-white dark:bg-base-900 rounded-lg border border-base-200 dark:border-base-700 p-4 shadow-xs">
162
- <div class="flex items-center">
163
- <div class="flex-shrink-0 bg-warning-100 dark:bg-warning-900/20 p-2 rounded-lg">
164
- <span class="material-icons text-warning-600 dark:text-warning-400">api</span>
165
- </div>
166
- <div class="ml-3">
167
- <p class="text-sm font-medium text-font-subtle-light dark:text-font-subtle-dark">Endpoints</p>
168
- <p class="text-lg font-semibold text-font-default-light dark:text-font-default-dark">
169
- {% widthratio zones_table.rows|length 3 25 %}
170
- </p>
171
- </div>
172
- </div>
173
- </div>
174
- </div>
175
- {% endif %}
176
- </div>