django-cfg 1.4.58__py3-none-any.whl → 1.4.60__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 (59) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/ipc/RPC_LOGGING.md +321 -0
  3. django_cfg/apps/ipc/TESTING.md +539 -0
  4. django_cfg/apps/ipc/__init__.py +12 -3
  5. django_cfg/apps/ipc/admin.py +212 -0
  6. django_cfg/apps/ipc/migrations/0001_initial.py +137 -0
  7. django_cfg/apps/ipc/migrations/__init__.py +0 -0
  8. django_cfg/apps/ipc/models.py +221 -0
  9. django_cfg/apps/ipc/serializers/__init__.py +10 -0
  10. django_cfg/apps/ipc/serializers/serializers.py +114 -0
  11. django_cfg/apps/ipc/services/client/client.py +83 -4
  12. django_cfg/apps/ipc/services/logging.py +239 -0
  13. django_cfg/apps/ipc/services/monitor.py +5 -3
  14. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/main.mjs +269 -0
  15. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/overview.mjs +259 -0
  16. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/testing.mjs +375 -0
  17. django_cfg/apps/ipc/templates/django_cfg_ipc/components/methods_content.html +22 -0
  18. django_cfg/apps/ipc/templates/django_cfg_ipc/components/notifications_content.html +9 -0
  19. django_cfg/apps/ipc/templates/django_cfg_ipc/components/overview_content.html +9 -0
  20. django_cfg/apps/ipc/templates/django_cfg_ipc/components/requests_content.html +23 -0
  21. django_cfg/apps/ipc/templates/django_cfg_ipc/components/stat_cards.html +50 -0
  22. django_cfg/apps/ipc/templates/django_cfg_ipc/components/system_status.html +47 -0
  23. django_cfg/apps/ipc/templates/django_cfg_ipc/components/tab_navigation.html +29 -0
  24. django_cfg/apps/ipc/templates/django_cfg_ipc/components/testing_tools.html +184 -0
  25. django_cfg/apps/ipc/templates/django_cfg_ipc/pages/dashboard.html +56 -0
  26. django_cfg/apps/ipc/urls.py +4 -2
  27. django_cfg/apps/ipc/views/__init__.py +7 -2
  28. django_cfg/apps/ipc/views/dashboard.py +1 -1
  29. django_cfg/apps/ipc/views/{viewsets.py → monitoring.py} +17 -11
  30. django_cfg/apps/ipc/views/testing.py +285 -0
  31. django_cfg/core/backends/__init__.py +1 -0
  32. django_cfg/core/backends/smtp.py +69 -0
  33. django_cfg/middleware/authentication.py +157 -0
  34. django_cfg/models/api/drf/config.py +2 -2
  35. django_cfg/models/services/email.py +11 -1
  36. django_cfg/modules/django_client/system/generate_mjs_clients.py +1 -1
  37. django_cfg/modules/django_dashboard/sections/widgets.py +209 -0
  38. django_cfg/modules/django_unfold/callbacks/main.py +43 -18
  39. django_cfg/modules/django_unfold/dashboard.py +41 -4
  40. django_cfg/pyproject.toml +1 -1
  41. django_cfg/static/js/api/index.mjs +8 -3
  42. django_cfg/static/js/api/ipc/client.mjs +40 -0
  43. django_cfg/static/js/api/knowbase/client.mjs +309 -0
  44. django_cfg/static/js/api/knowbase/index.mjs +13 -0
  45. django_cfg/static/js/api/payments/client.mjs +46 -1215
  46. django_cfg/static/js/api/types.mjs +164 -337
  47. django_cfg/templates/admin/index.html +8 -0
  48. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +13 -1
  49. django_cfg/templates/admin/sections/widgets_section.html +129 -0
  50. django_cfg/templates/admin/snippets/tabs/widgets_tab.html +38 -0
  51. django_cfg/utils/smart_defaults.py +1 -1
  52. {django_cfg-1.4.58.dist-info → django_cfg-1.4.60.dist-info}/METADATA +1 -1
  53. {django_cfg-1.4.58.dist-info → django_cfg-1.4.60.dist-info}/RECORD +58 -31
  54. django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +0 -202
  55. /django_cfg/apps/ipc/static/django_cfg_ipc/js/{dashboard.mjs → dashboard.mjs.old} +0 -0
  56. /django_cfg/apps/ipc/templates/django_cfg_ipc/{base.html → layout/base.html} +0 -0
  57. {django_cfg-1.4.58.dist-info → django_cfg-1.4.60.dist-info}/WHEEL +0 -0
  58. {django_cfg-1.4.58.dist-info → django_cfg-1.4.60.dist-info}/entry_points.txt +0 -0
  59. {django_cfg-1.4.58.dist-info → django_cfg-1.4.60.dist-info}/licenses/LICENSE +0 -0
@@ -77,4 +77,12 @@
77
77
  {% else %}
78
78
  {% include 'admin/snippets/tabs/documentation_tab.html' %}
79
79
  {% endif %}
80
+ {% endblock %}
81
+
82
+ {% block widgets_tab %}
83
+ {% if widgets_section %}
84
+ {{ widgets_section|safe }}
85
+ {% else %}
86
+ {% include 'admin/snippets/tabs/widgets_tab.html' %}
87
+ {% endif %}
80
88
  {% endblock %}
@@ -16,7 +16,7 @@
16
16
  if (!tabs.length || !contents.length) return;
17
17
 
18
18
  // Tab names for URL hash
19
- const tabNames = ['overview', 'zones', 'users', 'system', 'stats', 'app-stats', 'commands', 'documentation'];
19
+ const tabNames = ['overview', 'zones', 'users', 'system', 'stats', 'app-stats', 'commands', 'documentation', 'widgets'];
20
20
 
21
21
  // Global function for tab switching
22
22
  window.switchTab = function(idx, updateHash = true) {
@@ -509,6 +509,14 @@
509
509
  <span class="material-icons mr-2 align-middle text-sm">description</span>
510
510
  Documentation
511
511
  </button>
512
+ <button
513
+ type="button"
514
+ data-tab="8"
515
+ class="px-4 py-3 rounded-t-lg focus:outline-none"
516
+ >
517
+ <span class="material-icons mr-2 align-middle text-sm">widgets</span>
518
+ Widgets
519
+ </button>
512
520
  </div>
513
521
 
514
522
  <div class="flex flex-col gap-5">
@@ -545,6 +553,10 @@
545
553
  <div class="tab-content" data-tab="7">
546
554
  {% block documentation_tab %}{% endblock %}
547
555
  </div>
556
+
557
+ <div class="tab-content" data-tab="8">
558
+ {% block widgets_tab %}{% endblock %}
559
+ </div>
548
560
  </div>
549
561
 
550
562
  <!-- Footer Section -->
@@ -0,0 +1,129 @@
1
+ {% load unfold %}
2
+
3
+ <!-- Widgets Section -->
4
+ <div class="space-y-8">
5
+ <!-- Header -->
6
+ <div class="flex items-center justify-between mb-6">
7
+ <div>
8
+ <h1 class="text-2xl font-bold theme-text flex items-center">
9
+ <span class="material-icons mr-3 text-blue-500">widgets</span>
10
+ {{ title|default:"Dashboard Widgets" }}
11
+ </h1>
12
+ <p class="text-gray-600 dark:text-gray-300 mt-2">
13
+ {% if data.has_widgets %}
14
+ Showing {{ data.widgets_count }} widget{{ data.widgets_count|pluralize }}
15
+ {% else %}
16
+ No widgets configured
17
+ {% endif %}
18
+ </p>
19
+ </div>
20
+ </div>
21
+
22
+ {% if data.has_widgets %}
23
+ <!-- Stats Widgets -->
24
+ {% if stats_widgets %}
25
+ {% for widget in stats_widgets %}
26
+ <div class="theme-card rounded-lg shadow-sm border theme-border mb-6">
27
+ <!-- Widget Header -->
28
+ <div class="p-6 border-b theme-border">
29
+ <h2 class="text-lg font-semibold theme-text flex items-center">
30
+ <span class="material-icons text-blue-500 mr-2">dashboard</span>
31
+ {{ widget.title }}
32
+ </h2>
33
+ </div>
34
+
35
+ <!-- Widget Content: Stats Cards -->
36
+ <div class="p-6">
37
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
38
+ {% for card in widget.cards %}
39
+ <div class="theme-card p-6 rounded-lg shadow-sm border theme-border">
40
+ <div class="flex items-start justify-between mb-4">
41
+ <div class="flex-1">
42
+ <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">
43
+ {{ card.title }}
44
+ </p>
45
+ <p class="text-2xl font-bold theme-text">
46
+ {{ card.value_template }}
47
+ </p>
48
+ </div>
49
+ {% if card.icon %}
50
+ <span class="material-icons text-{{ card.color }}-500 text-3xl">
51
+ {{ card.icon }}
52
+ </span>
53
+ {% endif %}
54
+ </div>
55
+
56
+ {% if card.description %}
57
+ <p class="text-xs text-gray-500 dark:text-gray-400 mt-2">
58
+ {{ card.description }}
59
+ </p>
60
+ {% endif %}
61
+
62
+ {% if card.change %}
63
+ <div class="mt-3 flex items-center">
64
+ <span class="text-xs px-2 py-1 rounded
65
+ {% if card.change_type == 'positive' %}
66
+ bg-green-100 text-green-700 dark:bg-green-900/20 dark:text-green-400
67
+ {% elif card.change_type == 'negative' %}
68
+ bg-red-100 text-red-700 dark:bg-red-900/20 dark:text-red-400
69
+ {% else %}
70
+ bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-400
71
+ {% endif %}
72
+ ">
73
+ {{ card.change }}
74
+ </span>
75
+ </div>
76
+ {% endif %}
77
+ </div>
78
+ {% endfor %}
79
+ </div>
80
+ </div>
81
+ </div>
82
+ {% endfor %}
83
+ {% endif %}
84
+
85
+ <!-- Chart Widgets (if any) -->
86
+ {% if chart_widgets %}
87
+ {% for widget in chart_widgets %}
88
+ <div class="theme-card rounded-lg shadow-sm border theme-border p-6 mb-6">
89
+ <h2 class="text-lg font-semibold theme-text mb-4">
90
+ {{ widget.title }}
91
+ </h2>
92
+ <!-- Chart rendering would go here -->
93
+ <div class="h-64 flex items-center justify-center text-gray-400">
94
+ Chart widget rendering (TODO)
95
+ </div>
96
+ </div>
97
+ {% endfor %}
98
+ {% endif %}
99
+
100
+ <!-- Custom Widgets (if any) -->
101
+ {% if custom_widgets %}
102
+ {% for widget in custom_widgets %}
103
+ <div class="theme-card rounded-lg shadow-sm border theme-border p-6 mb-6">
104
+ <h2 class="text-lg font-semibold theme-text mb-4">
105
+ {{ widget.title }}
106
+ </h2>
107
+ <!-- Custom widget rendering -->
108
+ <div class="text-gray-600 dark:text-gray-300">
109
+ Custom widget type: {{ widget.type }}
110
+ </div>
111
+ </div>
112
+ {% endfor %}
113
+ {% endif %}
114
+
115
+ {% else %}
116
+ <!-- No Widgets State -->
117
+ <div class="theme-card rounded-lg shadow-sm border theme-border p-12 text-center">
118
+ <span class="material-icons text-gray-300 dark:text-gray-600 text-6xl mb-4">
119
+ widgets
120
+ </span>
121
+ <h3 class="text-lg font-semibold text-gray-600 dark:text-gray-400 mb-2">
122
+ No Widgets Configured
123
+ </h3>
124
+ <p class="text-sm text-gray-500 dark:text-gray-500">
125
+ Widgets can be added in DashboardManager.get_widgets_config()
126
+ </p>
127
+ </div>
128
+ {% endif %}
129
+ </div>
@@ -0,0 +1,38 @@
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>
@@ -233,7 +233,7 @@ class SmartDefaults:
233
233
  """Get Django REST Framework defaults."""
234
234
  return {
235
235
  'DEFAULT_AUTHENTICATION_CLASSES': [
236
- 'rest_framework_simplejwt.authentication.JWTAuthentication',
236
+ 'django_cfg.middleware.authentication.JWTAuthenticationWithLastLogin',
237
237
  # SessionAuthentication removed (requires CSRF)
238
238
  ],
239
239
  'DEFAULT_PERMISSION_CLASSES': [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.4.58
3
+ Version: 1.4.60
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
@@ -1,5 +1,5 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=xvsWFNn7uE0LObynfGlxmJdta8SvRibIQyMzXnL8cFY,1620
2
+ django_cfg/__init__.py,sha256=fJ_0Ac-Ttb6P-1aXu8SCuaQz3nt3pb_KPKKpx7VO6To,1620
3
3
  django_cfg/apps.py,sha256=72m3uuvyqGiLx6gOfE-BD3P61jddCCERuBOYpxTX518,1605
4
4
  django_cfg/config.py,sha256=y4Z3rnYsHBE0TehpwAIPaxr---mkvyKrZGGsNwYso74,1398
5
5
  django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
@@ -120,24 +120,43 @@ django_cfg/apps/api/health/serializers.py,sha256=Y_kn_RIn4MBRJWbsO2_DNEG_AqxnhuD
120
120
  django_cfg/apps/api/health/urls.py,sha256=eCTzgB4rv_H2W0NrixPO6qsh0pT2oUePrYAT5D35QIY,550
121
121
  django_cfg/apps/api/health/views.py,sha256=65oA6O3gaz2ECY2SiXlT3n4JpORt0nDufa_10um0nRw,8194
122
122
  django_cfg/apps/ipc/README.md,sha256=f_t_dK-W6GXMy7kxKpa_FidkZPII4M7eI3cmTFkJRMg,8971
123
- django_cfg/apps/ipc/__init__.py,sha256=1uZR8WqNdgWs-s0NXVvNFJ5ir7k5BnMcse44flXIuyg,1489
123
+ django_cfg/apps/ipc/RPC_LOGGING.md,sha256=NmYdCM0FggMdCbAzFH1dzKEsK97merVunN3Yk9nlO_E,7919
124
+ django_cfg/apps/ipc/TESTING.md,sha256=c-AdIfEZMbr7fvwKwfRWciZzS-m4TXnNcfcLJrt0fOQ,11544
125
+ django_cfg/apps/ipc/__init__.py,sha256=C86RhKR8MeKAyaJhegWjZCKohI5TlX5dIwhIHsmNEQk,1727
126
+ django_cfg/apps/ipc/admin.py,sha256=QzaJLsMPreK1sPSkzXceRsPW7r1iOxzNLwQ_Hn__gUo,6100
124
127
  django_cfg/apps/ipc/apps.py,sha256=FJrHrcxeyk-SR8V_mv4kC6IClczffligz9K8y-WevJc,716
125
- django_cfg/apps/ipc/urls.py,sha256=EJ-xDmAD7-XhURTIGxfgwrbbEbTWMJtFE3aazqla7gI,448
128
+ django_cfg/apps/ipc/models.py,sha256=yr5PLYr8Vb639eLlNwMmK5ltoWE9UWCnmZ9BaKgDaMU,6251
129
+ django_cfg/apps/ipc/urls.py,sha256=LuqwwAKqs-nHoXae3yJiUjVhK5T8DthrAt9LCAUAYNI,568
126
130
  django_cfg/apps/ipc/urls_admin.py,sha256=YvixgQXTVFWojJeYmo0b7AF9X9g7Nmhwxv7Fm4ihTAg,399
127
- django_cfg/apps/ipc/serializers/__init__.py,sha256=F7hvptXZP-vyeQpnn5SQxbl2gYWlFfy7cFCojo4TXSU,387
128
- django_cfg/apps/ipc/serializers/serializers.py,sha256=Yb3ai5H_T2mpYKe4qNYyQEvkHnLaVTcNa2CTdgwoD_g,6577
131
+ django_cfg/apps/ipc/migrations/0001_initial.py,sha256=9fpp3bvYFZL48hRKeyxEchtnMSuQlbGIBeydZfsCMnQ,5011
132
+ django_cfg/apps/ipc/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
+ django_cfg/apps/ipc/serializers/__init__.py,sha256=5b9-6f0Nrrf6g7lZR1-l5xhliB8yRWSCbym8GpkmMsw,705
134
+ django_cfg/apps/ipc/serializers/serializers.py,sha256=R6e4sNp7i58bQq9gflpoEsDVhItsDnQv548bJYX1WNg,9692
129
135
  django_cfg/apps/ipc/services/__init__.py,sha256=YdHT1pd7FZbjYFaPAf3rw_t3NIHA-6TIWI7Il2ELLO4,96
130
- django_cfg/apps/ipc/services/monitor.py,sha256=NjZdNACiFggi9HgjXRwVDdj5DfloYeO5OuOe6XIAtZs,15368
136
+ django_cfg/apps/ipc/services/logging.py,sha256=FZCel-I2wcPAXoy1JethrpCB_TzqYs14Fc-h0oeIUeQ,7240
137
+ django_cfg/apps/ipc/services/monitor.py,sha256=5_ttY_D9EoZ3LUKb5S05_jwW6W6A8NyUkS1QbR6wfMw,15496
131
138
  django_cfg/apps/ipc/services/client/__init__.py,sha256=7tMogbz93FefNoT5ul5_kGwnYnL29WS-rHh1T5lVl6w,456
132
- django_cfg/apps/ipc/services/client/client.py,sha256=aSCa_wjw0XPntd2KL2tQUsu3iOXdwT2KHOwFK9vb4xo,17479
139
+ django_cfg/apps/ipc/services/client/client.py,sha256=dopna1aWTia49pEjYRHnxlmvmwofNwbUnTFK9BfyCEQ,20296
133
140
  django_cfg/apps/ipc/services/client/config.py,sha256=A6xWzRfVb03hatoHmT8saePy3zPHgm0FOwXKT8QShOY,5895
134
141
  django_cfg/apps/ipc/services/client/exceptions.py,sha256=vAnZgH4ZYnqs7HJs11Rm6oqM-aTVAdPVcQZ9NcpE6Ik,5866
135
- django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs,sha256=FTumHeB_IwfsQvgm5_teC8UAw-baTGIrrR1nXDSMocc,16187
136
- django_cfg/apps/ipc/templates/django_cfg_ipc/base.html,sha256=naTYIAlETt00FVVBmz-dB5iPWekITagkTgGgKb25N60,2405
137
- django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html,sha256=ZVJ8xvLJIuCD0e8sCUtHKgJMKGyL5hQwU-pxhAC5LxI,10599
138
- django_cfg/apps/ipc/views/__init__.py,sha256=FI8I0bASo-Az4WmURtN6NXhouNbXr_82cNjaILojlls,164
139
- django_cfg/apps/ipc/views/dashboard.py,sha256=lou_r9b1UtUJ_DaZrL_QpLDRrVto8oL83CUCde6zMFA,401
140
- django_cfg/apps/ipc/views/viewsets.py,sha256=ALy3DRSPZDH0eAis37UR8T_U5mY7UJKFGQ67xn1Ynvw,8605
142
+ django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs.old,sha256=FTumHeB_IwfsQvgm5_teC8UAw-baTGIrrR1nXDSMocc,16187
143
+ django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/main.mjs,sha256=v_0YQa88MX3NI5kyHl_6CREB_Mw3iDsnk4vWMVntWdk,9088
144
+ django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/overview.mjs,sha256=j9i67T7450ILLBWcj56gynCfg8x1o4HYFWNI57z8Ppg,9483
145
+ django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/testing.mjs,sha256=FoTlliqkuIIlb-vvNvglZFS8FPlVsVXl3Ra_JxthChU,12389
146
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/methods_content.html,sha256=svwBW8CztvEL4qjdHHYAOVgnXuutbOa15LypSJ797ok,1206
147
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/notifications_content.html,sha256=euBmWVE70rKtQl8qANdovoydN3sUfxkLU3n976ZDw3M,436
148
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/overview_content.html,sha256=3k_Na1u2eBOlZ3m0dDHlj4tQVg_EUamJKf2nDTC_6t4,434
149
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/requests_content.html,sha256=q1kQ0izzf4PIg0WLkX0bfyIJ_RquUQrLedQ_xYllLH4,1346
150
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/stat_cards.html,sha256=8CnB5Tx7BOkAuSZm6BjHuxBZkaHrXnw0kQwT4PjipFc,2695
151
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/system_status.html,sha256=qNe98FDgJGhOxSoi9xnCpd1Qzhlx3H6cPSy0Tu4A-c0,2018
152
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/tab_navigation.html,sha256=5HFvvNr-u6gIu4Km6ePjOsv65s03z_49xhX9n85_WoY,2415
153
+ django_cfg/apps/ipc/templates/django_cfg_ipc/components/testing_tools.html,sha256=g1FiEHIoaFwoecUP6qi1tPRckVZTbq5FsFinkkPuOjM,10241
154
+ django_cfg/apps/ipc/templates/django_cfg_ipc/layout/base.html,sha256=naTYIAlETt00FVVBmz-dB5iPWekITagkTgGgKb25N60,2405
155
+ django_cfg/apps/ipc/templates/django_cfg_ipc/pages/dashboard.html,sha256=DHy2a1UlESuc5nZfN8DqNjS02QDtmWWMVggjXDMh6DA,1973
156
+ django_cfg/apps/ipc/views/__init__.py,sha256=8aJAuDRg9CInvJ9CgSVC7aTIsVdziQwqTQVohsudUSo,241
157
+ django_cfg/apps/ipc/views/dashboard.py,sha256=s8JLG9FbAtER0u3D0dx1hGhLZrjp1lcnizPsk2COxm4,407
158
+ django_cfg/apps/ipc/views/monitoring.py,sha256=yqHkYvregMXVad6knYq3qSgxheDN31PawjdvK0ee-Oc,8937
159
+ django_cfg/apps/ipc/views/testing.py,sha256=BUIAaVQNbNPVccXhfbSnVyFm0PuNVOAqvlNvpKpt7ns,9603
141
160
  django_cfg/apps/knowbase/README.md,sha256=HXt_J6WCN-LsMhA7p9mdvih07_vp_r_hkPdmqHhNEeo,3965
142
161
  django_cfg/apps/knowbase/__init__.py,sha256=cfGnxDQwjajPhUoleKkgvdabJcB0LdXEglnsBojKkPo,1045
143
162
  django_cfg/apps/knowbase/apps.py,sha256=GAYw98_rQdGHoak58xN-0vjdDcRNpJuND3kV-FfM1II,3290
@@ -456,6 +475,8 @@ django_cfg/core/config.py,sha256=0xwXf0cPiRGM8paUPXjECHdYqwuRLy4WkunavWl9Igw,679
456
475
  django_cfg/core/constants.py,sha256=ool-h1MXDtgRKj8-e8aYcM6XY_Uzy1dgx-xLy0gsk10,2686
457
476
  django_cfg/core/exceptions.py,sha256=-jHOxN_X_k9BGI50zBLloVawCMe-uIruiyLHto12B-k,2215
458
477
  django_cfg/core/validation.py,sha256=QmwGlNDa0MFG2OUmgykIUAaEotT55YNh-wAWSVxOAos,6165
478
+ django_cfg/core/backends/__init__.py,sha256=5Qfza7oKQ8_UIHOs4ibhYvwtgAjngUqLrlwjKl_q124,38
479
+ django_cfg/core/backends/smtp.py,sha256=kWkNMG7UwLsHcFYSKRgrk1HbP9mU1fxzWYnalHXqoL8,2308
459
480
  django_cfg/core/base/__init__.py,sha256=Z3bZvxejxk4vvWqmqTBLUi9XJpo6A_5Bq4R0J8q81Y4,116
460
481
  django_cfg/core/base/config_model.py,sha256=y9GKtE2dKBRNBdsarCrvqgzOYbuuqxzqGTUgs9GsGTU,21469
461
482
  django_cfg/core/builders/__init__.py,sha256=jkInI7_jbxcjitapohw6QmbJPpacnnID6V1JovqtOFM,282
@@ -533,6 +554,7 @@ django_cfg/management/commands/validate_openapi.py,sha256=CdcoMhtxQhjTL6nCifAYkn
533
554
  django_cfg/middleware/README.md,sha256=M-SvjLUygS6t_flzG4mcKSCSzU1xAVGvm9Lr3Qbsvn8,13089
534
555
  django_cfg/middleware/__init__.py,sha256=EVah9AYIWT3R8inTqPY20oB4xb-KejhwqngM1Z4UrD8,465
535
556
  django_cfg/middleware/admin_notifications.py,sha256=EVoXjSLaDz4r-lL5hy6V9sC1BpNF0rKsa-s6L31foRQ,6856
557
+ django_cfg/middleware/authentication.py,sha256=Gi9oEdu2XKbYUSDtCo3Uw5Os8sBBzbyuSc9voffH6pA,5224
536
558
  django_cfg/middleware/pagination.py,sha256=xnaFH1olDH_m4ecwpTTUyFWV6jKoF6IxJvagSZSJR0E,8603
537
559
  django_cfg/middleware/public_endpoints.py,sha256=p-VCjeu0k7B4OuQIe2OVUx7Onh9gsM2HweWcYNxEaRA,6775
538
560
  django_cfg/middleware/user_activity.py,sha256=bgftHXXeGBS-jCa8mLzTx4Gcz2fHTaQz_nbRCR5Yqio,5980
@@ -544,7 +566,7 @@ django_cfg/models/api/jwt.py,sha256=U3uvMHK3bMl7PV2MyWlwT4pwRpB4PUuCWbeOkLLplhY,
544
566
  django_cfg/models/api/keys.py,sha256=aVOBZHVIs0Qmi7-doajYD3r2AKsniPuhTEFvMTgIvdY,3531
545
567
  django_cfg/models/api/limits.py,sha256=IZ2rlrz6k8AG43c1pEX1Xykfjht1lc6g5wdE6GA0_Rk,7212
546
568
  django_cfg/models/api/drf/__init__.py,sha256=AXdeVxWYWL9dNZAFNLuaS9XDJpa-Rzo22sS5Pfl3wAw,535
547
- django_cfg/models/api/drf/config.py,sha256=GN8WYMeVdTZfUsOVdW4KQtRBKPTlpNJlHd7HcV_vbCc,3384
569
+ django_cfg/models/api/drf/config.py,sha256=PXDfFtwcYh_QHG54FYLKynPhByT28fGr8hsCVwiDUi8,3428
548
570
  django_cfg/models/api/drf/redoc.py,sha256=XNNWnMwkfIhtkCUt_KiPtc0-Nw0E3jvQOIjwcdie5a0,762
549
571
  django_cfg/models/api/drf/spectacular.py,sha256=UYBATiEY3qzx0IlTvCyhpymASO2Wej_j-gQsgL03Nec,5020
550
572
  django_cfg/models/api/drf/swagger.py,sha256=ku_eE7bWgHxjXD6Z2sEKSYE-bIzmZfAR0vQW9xqlG4Q,2127
@@ -575,7 +597,7 @@ django_cfg/models/payments/__init__.py,sha256=FSUh37wJyGH_cR7CDenK2Wu3rfj9xjUfla
575
597
  django_cfg/models/payments/config.py,sha256=e_yvJ1uaT3FTobWB2tsCcjbill4dqn56kGqBYxwyrtY,2798
576
598
  django_cfg/models/services/__init__.py,sha256=K3mit3rKumqC4XiCUU0BziZC3143j1SM9j0lEAwhtRY,419
577
599
  django_cfg/models/services/base.py,sha256=q_QggR8i_6qoiIvbAubddCklpfjVfeLP3Bv2bsdT4BQ,1607
578
- django_cfg/models/services/email.py,sha256=LyBGG1OVM8RefwMEZDhYwADmnBexEcQWxzYwOeF0du8,4694
600
+ django_cfg/models/services/email.py,sha256=JigMJaJA26MT_Euc4q_OfmZYJYzaGyHb0JXsNFOS0uY,5119
579
601
  django_cfg/models/services/telegram.py,sha256=wrMqOGZCp1KAxRmCn5oxMU0BMBgbzsQD6o0Fi_7kfIY,4810
580
602
  django_cfg/models/tasks/__init__.py,sha256=6t33r91zv_nyve1NfZeEziF0_mwgfAFuJpsnm38Ps3k,1320
581
603
  django_cfg/models/tasks/backends.py,sha256=mGB92TdD-zwrVckFRZ0EA0WWWLiR-gRM2fVv5rINOzM,6823
@@ -731,7 +753,7 @@ django_cfg/modules/django_client/spectacular/enum_naming.py,sha256=FMJyJiS7nBs-Q
731
753
  django_cfg/modules/django_client/spectacular/schema.py,sha256=6oJxoNsSsZLlM2qmKuJGU1sPPyEGr1Xit_xBfLvprHU,1639
732
754
  django_cfg/modules/django_client/system/__init__.py,sha256=uDARdYmmJ2yR0pCNaIQpsAPcErvhO7FNYX0CTbow8Y8,622
733
755
  django_cfg/modules/django_client/system/base_generator.py,sha256=skEf8_vXz3AeHZqOg_BjqsL1AToPn-RQY0211-ZXncM,4396
734
- django_cfg/modules/django_client/system/generate_mjs_clients.py,sha256=TkM1eNUOdvQNUswRBPGHcVfianThSMUpEU4_bVR1Nos,5650
756
+ django_cfg/modules/django_client/system/generate_mjs_clients.py,sha256=-EEnibUErUOJfODAqdorLw3p_IjRGln_R_-oKXrHN10,5653
735
757
  django_cfg/modules/django_client/system/mjs_generator.py,sha256=c6ktFR8Ipuju3CGPe6NUnlBwiqPrT_ik1ysRsBcd9Nw,7351
736
758
  django_cfg/modules/django_client/system/schema_parser.py,sha256=wRQ8nAIDsEIwTKBjK76ac36OWiH8hD0GKs-w9FpVBpw,6982
737
759
  django_cfg/modules/django_client/system/templates/api_client.js.j2,sha256=u3CLl4LVNgGrusuhiY8Q7btWpwkF2ijYxtZmFCsbBfk,2803
@@ -767,6 +789,7 @@ django_cfg/modules/django_dashboard/sections/documentation.py,sha256=rpBRGhawCay
767
789
  django_cfg/modules/django_dashboard/sections/overview.py,sha256=Gfgl55d9S9ohzDJ_UxxCP7ny6NbbhfZ24l1uAs0PEc0,13391
768
790
  django_cfg/modules/django_dashboard/sections/stats.py,sha256=5k2DKr_87Os0H8Wd_hU3sIcAq799OOnjApJ14hDF-gc,1282
769
791
  django_cfg/modules/django_dashboard/sections/system.py,sha256=3zAfms02qB2zSQt3BjBYKw-JlLTjaj0A6qciqYOKNMo,2026
792
+ django_cfg/modules/django_dashboard/sections/widgets.py,sha256=sFUhk8BWW-KzMw3hDjcotw1hz3LFULGhHRhx5shrYC4,7646
770
793
  django_cfg/modules/django_drf_theme/__init__.py,sha256=0D5ctzcjadbw-z7jpvVjvo8C1ufrGRk6b-mA4xSutTE,525
771
794
  django_cfg/modules/django_drf_theme/apps.py,sha256=UzcjnTQyMqExKGwhg5KhCK0eEqgGXtaYbCztHd_V2pw,428
772
795
  django_cfg/modules/django_drf_theme/renderers.py,sha256=AVlXpepI62iHcZhbGAsLwtXpnQ8NeN0zyWQbePUnN3w,1808
@@ -887,7 +910,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
887
910
  django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
888
911
  django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
889
912
  django_cfg/modules/django_unfold/__init__.py,sha256=QB551Si2k-g_LoB3WdhkLBKaI2O4qiynCCCbzhqLM3c,1898
890
- django_cfg/modules/django_unfold/dashboard.py,sha256=c0R9DYFpv0LQR46NA2RPvZkp0CmjEOu5kY2zGRUHac8,15894
913
+ django_cfg/modules/django_unfold/dashboard.py,sha256=xqBpKb4o2C_mndks7fkkOD8Cp4szcc8_r8ACVj3IGwc,17342
891
914
  django_cfg/modules/django_unfold/models.py,sha256=E6NPu2lKkgXkTsqpriupoW5IER_nuvATYvoO8VzjhWE,3942
892
915
  django_cfg/modules/django_unfold/system_monitor.py,sha256=KcrTa5irstdB1pDKe3sC0zl4tz9LVjhp7xvbqUM4YVk,6781
893
916
  django_cfg/modules/django_unfold/tailwind.py,sha256=9yy50g4AQKnEKAHlcS9mJ4cX7v_d-on4Tei8m9kYA2w,10633
@@ -898,7 +921,7 @@ django_cfg/modules/django_unfold/callbacks/apizones.py,sha256=SHHlMGoCxBxijafdUp
898
921
  django_cfg/modules/django_unfold/callbacks/base.py,sha256=1qVfK7aIWs9DzFWsCjP6QBF8UD48A3G1cwvIegQXcEA,9990
899
922
  django_cfg/modules/django_unfold/callbacks/charts.py,sha256=OhqT_w7qV5XBqQaEBXKl1IkclhCcjdI2I8phYBO0W1Y,7965
900
923
  django_cfg/modules/django_unfold/callbacks/commands.py,sha256=qQ8z3oeaieyJDJHKd_VZ38jksZ1NmJM-mMptNI1IV7c,1281
901
- django_cfg/modules/django_unfold/callbacks/main.py,sha256=jxV3LwYNL58gQY7sBNtGuJJwhoWPKQyyFkNn0FVXW4A,11980
924
+ django_cfg/modules/django_unfold/callbacks/main.py,sha256=qDUiAzl0Keh1zl2s0awbPmBMUoRpSOkhpX1sjCgnJ04,13366
902
925
  django_cfg/modules/django_unfold/callbacks/statistics.py,sha256=f6yDLywGqAgDyoEv1CzWEGVsqIrT6o-bTv4CgfeTmMo,8746
903
926
  django_cfg/modules/django_unfold/callbacks/system.py,sha256=7YWC_-Db6bvDxArxMNfRoTRuRq9reF67UJn8IpWel8c,6078
904
927
  django_cfg/modules/django_unfold/callbacks/users.py,sha256=5UHPLZyG1GWTKSO6FZyWJloWJ-fnTpCYNAgyADab7aQ,2070
@@ -924,24 +947,26 @@ django_cfg/static/admin/js/commands.js,sha256=o_t5gFGsVsL3ApFFyokDNk3oUip5hPn0tu
924
947
  django_cfg/static/admin/js/dashboard.js,sha256=uCcu6mnG0HNiHI_HVyYMc5c1YGg727PzutZU8JNR9Es,4176
925
948
  django_cfg/static/js/api-loader.mjs,sha256=boGqqRGnFR-Mzo_RQOjhAzNvsb7QxZddSwMKROzkk9Q,5163
926
949
  django_cfg/static/js/api/base.mjs,sha256=Qjngf8783y47FnQ0ZOvtdFTSF6t-vYqvJaFPJmaTY40,4524
927
- django_cfg/static/js/api/index.mjs,sha256=6Hf0FJnbpW8fddWqlRnZyXLyHdG6sXIRLVjpKiISjtg,2349
928
- django_cfg/static/js/api/types.mjs,sha256=ybBPGQCb9X-jHldqO9MpcZNAdWgfDXZbHtq2-ILx8jw,77092
950
+ django_cfg/static/js/api/index.mjs,sha256=lZEWrgU1xGOgXT3O5J2u-cXq7_5CzgKwkaLyiEWvfl0,2482
951
+ django_cfg/static/js/api/types.mjs,sha256=L6tl85PfYX2kPGrIZ17kQbYOlh0MSKsBiX3HBsoamUg,61427
929
952
  django_cfg/static/js/api/accounts/client.mjs,sha256=taP5xvYSMhRdhob1WxLmdM-5SsyQv7WIs2ONVecZ5Mw,3708
930
953
  django_cfg/static/js/api/accounts/index.mjs,sha256=Inx2iGWk4K5JXMLeRCfTnTfSviTwuZQJKjn5RVyVDqE,315
931
- django_cfg/static/js/api/ipc/client.mjs,sha256=2WSGfhU4czVerVsTcWiCcp9NaXDI1kBViLq4hHrx-nU,3751
954
+ django_cfg/static/js/api/ipc/client.mjs,sha256=vGzH_HPjC_Z90EW2LslNYoAqQDEGxb_qBDSGGNgWZ6w,6445
932
955
  django_cfg/static/js/api/ipc/index.mjs,sha256=Zenfy7i2Hthq4bFBfjz2QxjWhLNaC5W1FvHeMqgLQ-o,280
956
+ django_cfg/static/js/api/knowbase/client.mjs,sha256=GsX-GF-9YGtff2RS9K97J05Ye8UP_gV7MWXTuH12vqw,24449
957
+ django_cfg/static/js/api/knowbase/index.mjs,sha256=AOJD4k_cp-dG-IwscX_YyLUBNzUrjLuZIoTyBJ2TUzs,315
933
958
  django_cfg/static/js/api/leads/client.mjs,sha256=XCOvHzST9SzBTS3PA2y2cgXc3MyrlCGGnkiu9Nge1Xg,3380
934
959
  django_cfg/static/js/api/leads/index.mjs,sha256=5jG0w5FJEWwtZ5wzp9Pfzl687DmF6NRqmXKUqMHRLdo,294
935
960
  django_cfg/static/js/api/newsletter/client.mjs,sha256=HRoovJSYfreyL798itLUlkqowVN20Smfq3UxXIUwaiA,7148
936
961
  django_cfg/static/js/api/newsletter/index.mjs,sha256=PdKy7BwCMhdUCEcjpTGEBpIYP0IlWM70pkZA1COzv8c,329
937
- django_cfg/static/js/api/payments/client.mjs,sha256=H4WXZWW0X6aT-s5lOQqwJqTjjW839DZSV563ABZh4ds,81275
962
+ django_cfg/static/js/api/payments/client.mjs,sha256=xny3OUW0kQC3Hb112uTRreNkQWaOJEoG_I4-hseGeaI,4253
938
963
  django_cfg/static/js/api/payments/index.mjs,sha256=BlPilLuoQZPFNgVPkgZbKVhFwP-NmjpejSYRHdFxnWw,315
939
964
  django_cfg/static/js/api/support/client.mjs,sha256=kqI80DkAVfn3yqEI4RFLeu01hg2mqFsVhk0O6YjKwv4,5661
940
965
  django_cfg/static/js/api/support/index.mjs,sha256=oPA3iGkUWYyKQuJlI5-tSxD3AOhwlAzXKAh4CNCNziQ,308
941
966
  django_cfg/static/js/api/tasks/client.mjs,sha256=tIy8K-finXzTUL9kOo_L4Q1kchDaHyuzjwS4VymiWPM,3579
942
967
  django_cfg/static/js/api/tasks/index.mjs,sha256=yCY1GzdD-RtFZ3pAfk1l0msgO1epyo0lsGCjH0g1Afc,294
943
968
  django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
944
- django_cfg/templates/admin/index.html,sha256=zZAOy393_KMu9fnD1XMDG5OABg3r3tl9lY0QGLuE-rU,2170
969
+ django_cfg/templates/admin/index.html,sha256=bbGe7QgEkbmc8m01uOcZ_ytYtRPULBkp95yxVns4i6Y,2366
945
970
  django_cfg/templates/admin/index_new.html,sha256=B5nC6TMjHCvbyX-SG7kIyLbFyGUNm-86Uo694EdfUZQ,4262
946
971
  django_cfg/templates/admin/components/action_grid.html,sha256=Ol6UqHR6CQkrLzOIqIWeBk-fu3dYu2x1xxjaL6HnXRQ,2840
947
972
  django_cfg/templates/admin/components/card.html,sha256=gOW8MBvRiWPQdoSYg_MH7KQ8o_WTRC5anyefRcPtRjM,2167
@@ -966,12 +991,13 @@ django_cfg/templates/admin/import_export/change_list_export.html,sha256=oFBsnpgZ
966
991
  django_cfg/templates/admin/import_export/change_list_import.html,sha256=jL7Dhjcbx8IfzY-ltlxoWLvF97tD9B77moj8Mh6sRjY,1214
967
992
  django_cfg/templates/admin/import_export/change_list_import_export.html,sha256=KWnPbkv_kP5TlAKBRutbk_eFTqPXDt6_SmxXULE94iE,1840
968
993
  django_cfg/templates/admin/layouts/base_dashboard.html,sha256=GziX02ldpFNvnuIxUl2FrWBEs97A4DuvE_BOZaDkyLU,1935
969
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=Wu5M6mAe7hez5BBltY2_EwxRgBv5bghtgUm12DDjMAA,20162
994
+ django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=BrpQldcMjFm6ZnQxUwWk6U13ucb05vog9juOaDP_hAw,20589
970
995
  django_cfg/templates/admin/sections/commands_section.html,sha256=I6PsDeQtQWc9xBxbIVa39jfZ7WAu4U3Q8Cii4hsIBCE,28948
971
996
  django_cfg/templates/admin/sections/documentation_section.html,sha256=aIJ8nAd0Ifw5-Zfl-HLDx_x5KxF9InWyqrI2sJf9Dks,10451
972
997
  django_cfg/templates/admin/sections/overview_section.html,sha256=gfhjBzQBtZQAj1DnjhFE6efgXFWb4GotIgW6kyRVE-g,4726
973
998
  django_cfg/templates/admin/sections/stats_section.html,sha256=iUF-ILAkHBHMb7p2pZXsn_ILYd68mmyr7uFH4He2TKg,1524
974
999
  django_cfg/templates/admin/sections/system_section.html,sha256=jcbLoIF-EIodppWFrf8zs85zxdAfFpjdcNuiGIwmjNE,4766
1000
+ django_cfg/templates/admin/sections/widgets_section.html,sha256=xgRF-M1iuN4E4QNuiyrem1XHs7UKzdPribeWu91_J5w,6444
975
1001
  django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md,sha256=SM0gO0bchhgTZdLXfZxv7Zq0Bbt0C0cfFqceUcL4JCU,8923
976
1002
  django_cfg/templates/admin/snippets/components/activity_tracker.html,sha256=y9PsU_XKBPxiOm762UL7ZAw0Lqh5D4lUTgFnLeCso3w,4359
977
1003
  django_cfg/templates/admin/snippets/components/charts_section.html,sha256=eIJFFuy3vAz0pYRAVEgJ7Nzc3BbNGIqrEWT4SitoMrQ,9808
@@ -991,20 +1017,21 @@ django_cfg/templates/admin/snippets/tabs/documentation_tab.html,sha256=3SGpqsIsl
991
1017
  django_cfg/templates/admin/snippets/tabs/overview_tab.html,sha256=mX8C9EQmpwW-uYN5i0hjpn-q-LXtjenGWNI3BmsJsaI,3918
992
1018
  django_cfg/templates/admin/snippets/tabs/stats_tab.html,sha256=jIqSnp4WTo2jAzzMqo9As6z5PykWsO_V1VwBEpTzZ5E,5170
993
1019
  django_cfg/templates/admin/snippets/tabs/users_tab.html,sha256=04D05VSeidn2qJnQmktVI7TNlm7tNcXYXJAsk32U5hY,2813
1020
+ django_cfg/templates/admin/snippets/tabs/widgets_tab.html,sha256=1TxvLPjydcOQRVdaEzGaIq8QZD_CmGY58X9wcqNrtpM,1699
994
1021
  django_cfg/templates/admin/snippets/zones/zones_table.html,sha256=WtaI-x16LijochRy7uFj8xyUeqcCqhenF9xKRW_JQWE,11879
995
1022
  django_cfg/templates/emails/base_email.html,sha256=TWcvYa2IHShlF_E8jf1bWZStRO0v8G4L_GexPxvz6XQ,8836
996
1023
  django_cfg/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
997
1024
  django_cfg/templatetags/django_cfg.py,sha256=Ijjc1t75QTObukPDT6XSxLJ-OzuoO2DuF7TOuQF0QOQ,1449
998
1025
  django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,435
999
1026
  django_cfg/utils/path_resolution.py,sha256=2n0I04lQkSssFaELu3A93YyMAl1K10KPdpxMt5k4Iy0,13341
1000
- django_cfg/utils/smart_defaults.py,sha256=LFBiOd92TSAHAvU8YVi7W5_3HgjpIBw02PpYJ0S5dmk,9229
1027
+ django_cfg/utils/smart_defaults.py,sha256=ZUj6K_Deq-fp5O0Dy_Emt257UWFn0f9bkgFv9YCR58U,9239
1001
1028
  django_cfg/utils/version_check.py,sha256=WO51J2m2e-wVqWCRwbultEwu3q1lQasV67Mw2aa5jlw,4711
1002
1029
  django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
1003
1030
  django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
1004
1031
  django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1005
- django_cfg/pyproject.toml,sha256=aQKWhPoe2fVhuceH7OVIjIlBk-8WODegteCuSRNou8Q,8260
1006
- django_cfg-1.4.58.dist-info/METADATA,sha256=akaBdM8svg5BD4HFs6nCbYybT8XCgkqt38QEJaChz_k,22589
1007
- django_cfg-1.4.58.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1008
- django_cfg-1.4.58.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1009
- django_cfg-1.4.58.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1010
- django_cfg-1.4.58.dist-info/RECORD,,
1032
+ django_cfg/pyproject.toml,sha256=uRiQ0bh7I2s6i1PaZbVrLukJxc76LqNVAahy3DZ-fLU,8260
1033
+ django_cfg-1.4.60.dist-info/METADATA,sha256=JN6wZGPFqI3Aa0DcXJn77Dc-8Q2qAjEWCtfigCni29o,22589
1034
+ django_cfg-1.4.60.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1035
+ django_cfg-1.4.60.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1036
+ django_cfg-1.4.60.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1037
+ django_cfg-1.4.60.dist-info/RECORD,,