django-cfg 1.3.9__py3-none-any.whl → 1.3.11__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 (187) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/payments/admin/networks_admin.py +12 -1
  3. django_cfg/apps/payments/admin/payments_admin.py +13 -0
  4. django_cfg/apps/payments/admin_interface/serializers/payment_serializers.py +62 -14
  5. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_card.html +121 -0
  6. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_qr_code.html +95 -0
  7. django_cfg/apps/payments/admin_interface/templates/payments/components/progress_bar.html +37 -0
  8. django_cfg/apps/payments/admin_interface/templates/payments/components/provider_stats.html +60 -0
  9. django_cfg/apps/payments/admin_interface/templates/payments/components/status_badge.html +41 -0
  10. django_cfg/apps/payments/admin_interface/templates/payments/components/status_overview.html +83 -0
  11. django_cfg/apps/payments/admin_interface/templates/payments/payment_detail.html +363 -0
  12. django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +33 -3
  13. django_cfg/apps/payments/admin_interface/views/api/payments.py +102 -0
  14. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +96 -45
  15. django_cfg/apps/payments/admin_interface/views/forms.py +5 -1
  16. django_cfg/apps/payments/config/__init__.py +14 -15
  17. django_cfg/apps/payments/config/django_cfg_integration.py +59 -1
  18. django_cfg/apps/payments/config/helpers.py +8 -13
  19. django_cfg/apps/payments/migrations/0001_initial.py +33 -46
  20. django_cfg/apps/payments/migrations/0002_rename_payments_un_user_id_7f6e79_idx_payments_un_user_id_8ce187_idx_and_more.py +46 -0
  21. django_cfg/apps/payments/migrations/0003_universalpayment_status_changed_at.py +25 -0
  22. django_cfg/apps/payments/models/managers/payment_managers.py +142 -25
  23. django_cfg/apps/payments/models/payments.py +94 -0
  24. django_cfg/apps/payments/services/core/base.py +4 -4
  25. django_cfg/apps/payments/services/core/payment_service.py +265 -38
  26. django_cfg/apps/payments/services/providers/base.py +209 -3
  27. django_cfg/apps/payments/services/providers/models/__init__.py +2 -0
  28. django_cfg/apps/payments/services/providers/models/base.py +25 -2
  29. django_cfg/apps/payments/services/providers/nowpayments/models.py +2 -2
  30. django_cfg/apps/payments/services/providers/nowpayments/provider.py +57 -9
  31. django_cfg/apps/payments/services/providers/registry.py +5 -5
  32. django_cfg/apps/payments/services/types/requests.py +19 -7
  33. django_cfg/apps/payments/signals/payment_signals.py +31 -2
  34. django_cfg/apps/payments/static/payments/js/api-client.js +6 -1
  35. django_cfg/apps/payments/static/payments/js/payment-detail.js +167 -0
  36. django_cfg/apps/payments/static/payments/js/payment-form.js +35 -26
  37. django_cfg/apps/payments/templatetags/payment_tags.py +8 -0
  38. django_cfg/apps/payments/urls.py +3 -2
  39. django_cfg/apps/payments/views/api/currencies.py +3 -0
  40. django_cfg/apps/payments/views/serializers/currencies.py +18 -5
  41. django_cfg/apps/tasks/admin/tasks_admin.py +2 -2
  42. django_cfg/apps/tasks/static/tasks/css/dashboard.css +68 -217
  43. django_cfg/apps/tasks/static/tasks/js/api.js +40 -84
  44. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +24 -0
  45. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +85 -0
  46. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +216 -0
  47. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +245 -0
  48. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +123 -0
  49. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +120 -0
  50. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +350 -0
  51. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +169 -0
  52. django_cfg/apps/tasks/tasks/__init__.py +10 -0
  53. django_cfg/apps/tasks/tasks/demo_tasks.py +133 -0
  54. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +42 -45
  55. django_cfg/apps/tasks/templates/tasks/components/{status_cards.html → overview_content.html} +30 -11
  56. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +19 -0
  57. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +16 -10
  58. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +51 -0
  59. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +30 -0
  60. django_cfg/apps/tasks/templates/tasks/layout/base.html +117 -0
  61. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +82 -0
  62. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +40 -0
  63. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +37 -0
  64. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +41 -0
  65. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +50 -0
  66. django_cfg/apps/tasks/urls.py +2 -2
  67. django_cfg/apps/tasks/urls_admin.py +2 -2
  68. django_cfg/apps/tasks/utils/__init__.py +1 -0
  69. django_cfg/apps/tasks/utils/simulator.py +356 -0
  70. django_cfg/apps/tasks/views/__init__.py +16 -0
  71. django_cfg/apps/tasks/views/api.py +569 -0
  72. django_cfg/apps/tasks/views/dashboard.py +58 -0
  73. django_cfg/core/integration/__init__.py +21 -0
  74. django_cfg/management/commands/rundramatiq_simulator.py +430 -0
  75. django_cfg/models/constance.py +0 -11
  76. django_cfg/models/payments.py +137 -3
  77. django_cfg/modules/django_tasks.py +54 -21
  78. django_cfg/registry/core.py +4 -9
  79. django_cfg/template_archive/django_sample.zip +0 -0
  80. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/METADATA +2 -2
  81. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/RECORD +84 -152
  82. django_cfg/apps/payments/config/constance/__init__.py +0 -22
  83. django_cfg/apps/payments/config/constance/config_service.py +0 -123
  84. django_cfg/apps/payments/config/constance/fields.py +0 -69
  85. django_cfg/apps/payments/config/constance/settings.py +0 -160
  86. django_cfg/apps/payments/migrations/0002_currency_usd_rate_currency_usd_rate_updated_at.py +0 -26
  87. django_cfg/apps/payments/migrations/0003_remove_provider_currency_fields.py +0 -28
  88. django_cfg/apps/payments/migrations/0004_add_reserved_usd_field.py +0 -30
  89. django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -614
  90. django_cfg/apps/tasks/static/tasks/js/modals.js +0 -452
  91. django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -144
  92. django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -454
  93. django_cfg/apps/tasks/static/tasks/js/theme.js +0 -77
  94. django_cfg/apps/tasks/templates/tasks/base.html +0 -96
  95. django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -85
  96. django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -22
  97. django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -19
  98. django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -103
  99. django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -32
  100. django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -29
  101. django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -29
  102. django_cfg/apps/tasks/views.py +0 -461
  103. django_cfg/management/commands/app_agent_diagnose.py +0 -470
  104. django_cfg/management/commands/app_agent_generate.py +0 -342
  105. django_cfg/management/commands/app_agent_info.py +0 -308
  106. django_cfg/management/commands/auto_generate.py +0 -486
  107. django_cfg/modules/django_app_agent/__init__.py +0 -87
  108. django_cfg/modules/django_app_agent/agents/__init__.py +0 -40
  109. django_cfg/modules/django_app_agent/agents/base/__init__.py +0 -24
  110. django_cfg/modules/django_app_agent/agents/base/agent.py +0 -354
  111. django_cfg/modules/django_app_agent/agents/base/context.py +0 -236
  112. django_cfg/modules/django_app_agent/agents/base/executor.py +0 -430
  113. django_cfg/modules/django_app_agent/agents/generation/__init__.py +0 -12
  114. django_cfg/modules/django_app_agent/agents/generation/app_generator/__init__.py +0 -15
  115. django_cfg/modules/django_app_agent/agents/generation/app_generator/config_validator.py +0 -147
  116. django_cfg/modules/django_app_agent/agents/generation/app_generator/main.py +0 -99
  117. django_cfg/modules/django_app_agent/agents/generation/app_generator/models.py +0 -32
  118. django_cfg/modules/django_app_agent/agents/generation/app_generator/prompt_manager.py +0 -290
  119. django_cfg/modules/django_app_agent/agents/interfaces.py +0 -376
  120. django_cfg/modules/django_app_agent/core/__init__.py +0 -33
  121. django_cfg/modules/django_app_agent/core/config.py +0 -300
  122. django_cfg/modules/django_app_agent/core/exceptions.py +0 -359
  123. django_cfg/modules/django_app_agent/models/__init__.py +0 -71
  124. django_cfg/modules/django_app_agent/models/base.py +0 -283
  125. django_cfg/modules/django_app_agent/models/context.py +0 -496
  126. django_cfg/modules/django_app_agent/models/enums.py +0 -481
  127. django_cfg/modules/django_app_agent/models/requests.py +0 -500
  128. django_cfg/modules/django_app_agent/models/responses.py +0 -585
  129. django_cfg/modules/django_app_agent/pytest.ini +0 -6
  130. django_cfg/modules/django_app_agent/services/__init__.py +0 -42
  131. django_cfg/modules/django_app_agent/services/app_generator/__init__.py +0 -30
  132. django_cfg/modules/django_app_agent/services/app_generator/ai_integration.py +0 -133
  133. django_cfg/modules/django_app_agent/services/app_generator/context.py +0 -40
  134. django_cfg/modules/django_app_agent/services/app_generator/main.py +0 -202
  135. django_cfg/modules/django_app_agent/services/app_generator/structure.py +0 -316
  136. django_cfg/modules/django_app_agent/services/app_generator/validation.py +0 -125
  137. django_cfg/modules/django_app_agent/services/base.py +0 -437
  138. django_cfg/modules/django_app_agent/services/context_builder/__init__.py +0 -34
  139. django_cfg/modules/django_app_agent/services/context_builder/code_extractor.py +0 -141
  140. django_cfg/modules/django_app_agent/services/context_builder/context_generator.py +0 -276
  141. django_cfg/modules/django_app_agent/services/context_builder/main.py +0 -272
  142. django_cfg/modules/django_app_agent/services/context_builder/models.py +0 -40
  143. django_cfg/modules/django_app_agent/services/context_builder/pattern_analyzer.py +0 -85
  144. django_cfg/modules/django_app_agent/services/project_scanner/__init__.py +0 -31
  145. django_cfg/modules/django_app_agent/services/project_scanner/app_discovery.py +0 -311
  146. django_cfg/modules/django_app_agent/services/project_scanner/main.py +0 -221
  147. django_cfg/modules/django_app_agent/services/project_scanner/models.py +0 -59
  148. django_cfg/modules/django_app_agent/services/project_scanner/pattern_detection.py +0 -94
  149. django_cfg/modules/django_app_agent/services/questioning_service/__init__.py +0 -28
  150. django_cfg/modules/django_app_agent/services/questioning_service/main.py +0 -273
  151. django_cfg/modules/django_app_agent/services/questioning_service/models.py +0 -111
  152. django_cfg/modules/django_app_agent/services/questioning_service/question_generator.py +0 -251
  153. django_cfg/modules/django_app_agent/services/questioning_service/response_processor.py +0 -347
  154. django_cfg/modules/django_app_agent/services/questioning_service/session_manager.py +0 -356
  155. django_cfg/modules/django_app_agent/services/report_service.py +0 -332
  156. django_cfg/modules/django_app_agent/services/template_manager/__init__.py +0 -18
  157. django_cfg/modules/django_app_agent/services/template_manager/jinja_engine.py +0 -236
  158. django_cfg/modules/django_app_agent/services/template_manager/main.py +0 -159
  159. django_cfg/modules/django_app_agent/services/template_manager/models.py +0 -36
  160. django_cfg/modules/django_app_agent/services/template_manager/template_loader.py +0 -100
  161. django_cfg/modules/django_app_agent/services/template_manager/templates/admin.py.j2 +0 -105
  162. django_cfg/modules/django_app_agent/services/template_manager/templates/apps.py.j2 +0 -31
  163. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_config.py.j2 +0 -44
  164. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_module.py.j2 +0 -81
  165. django_cfg/modules/django_app_agent/services/template_manager/templates/forms.py.j2 +0 -107
  166. django_cfg/modules/django_app_agent/services/template_manager/templates/models.py.j2 +0 -139
  167. django_cfg/modules/django_app_agent/services/template_manager/templates/serializers.py.j2 +0 -91
  168. django_cfg/modules/django_app_agent/services/template_manager/templates/tests.py.j2 +0 -195
  169. django_cfg/modules/django_app_agent/services/template_manager/templates/urls.py.j2 +0 -35
  170. django_cfg/modules/django_app_agent/services/template_manager/templates/views.py.j2 +0 -211
  171. django_cfg/modules/django_app_agent/services/template_manager/variable_processor.py +0 -200
  172. django_cfg/modules/django_app_agent/services/validation_service/__init__.py +0 -25
  173. django_cfg/modules/django_app_agent/services/validation_service/django_validator.py +0 -333
  174. django_cfg/modules/django_app_agent/services/validation_service/main.py +0 -242
  175. django_cfg/modules/django_app_agent/services/validation_service/models.py +0 -66
  176. django_cfg/modules/django_app_agent/services/validation_service/quality_validator.py +0 -352
  177. django_cfg/modules/django_app_agent/services/validation_service/security_validator.py +0 -272
  178. django_cfg/modules/django_app_agent/services/validation_service/syntax_validator.py +0 -203
  179. django_cfg/modules/django_app_agent/ui/__init__.py +0 -25
  180. django_cfg/modules/django_app_agent/ui/cli.py +0 -419
  181. django_cfg/modules/django_app_agent/ui/rich_components.py +0 -622
  182. django_cfg/modules/django_app_agent/utils/__init__.py +0 -38
  183. django_cfg/modules/django_app_agent/utils/logging.py +0 -360
  184. django_cfg/modules/django_app_agent/utils/validation.py +0 -417
  185. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/WHEEL +0 -0
  186. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/entry_points.txt +0 -0
  187. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/licenses/LICENSE +0 -0
@@ -1,486 +0,0 @@
1
- """
2
- Auto Generation Command for Django Config Toolkit
3
- Generate configuration files, models, and other Django components.
4
- """
5
-
6
- import os
7
- import json
8
- from pathlib import Path
9
- from django.core.management.base import BaseCommand
10
- from django.core.management import call_command
11
- from django.conf import settings
12
- import questionary
13
- from datetime import datetime
14
- from django_cfg.modules.django_logger import get_logger
15
-
16
- from django_cfg import ConfigToolkit
17
-
18
- logger = get_logger('auto_generate')
19
-
20
-
21
- class Command(BaseCommand):
22
- help = 'Auto-generate configuration files and Django components'
23
-
24
- def add_arguments(self, parser):
25
- parser.add_argument(
26
- '--config',
27
- action='store_true',
28
- help='Generate configuration files only'
29
- )
30
- parser.add_argument(
31
- '--models',
32
- action='store_true',
33
- help='Generate model files only'
34
- )
35
- parser.add_argument(
36
- '--all',
37
- action='store_true',
38
- help='Generate all components'
39
- )
40
-
41
- def handle(self, *args, **options):
42
- logger.info("Starting auto_generate command")
43
- if options['all']:
44
- self.generate_all()
45
- elif options['config']:
46
- self.generate_config_files()
47
- elif options['models']:
48
- self.generate_model_files()
49
- else:
50
- self.show_interactive_menu()
51
-
52
- def show_interactive_menu(self):
53
- """Show interactive menu with generation options"""
54
- self.stdout.write(self.style.SUCCESS('\n🚀 Auto Generation Tool - Django Config Toolkit\n'))
55
-
56
- choices = [
57
- questionary.Choice('⚙️ Generate Configuration Files', value='config'),
58
- questionary.Choice('📊 Generate Model Files', value='models'),
59
- questionary.Choice('🔄 Generate All Components', value='all'),
60
- questionary.Choice('📝 Generate Environment Template', value='env'),
61
- questionary.Choice('🔧 Generate Settings Template', value='settings'),
62
- questionary.Choice('❌ Exit', value='exit')
63
- ]
64
-
65
- choice = questionary.select(
66
- 'Select generation option:',
67
- choices=choices
68
- ).ask()
69
-
70
- if choice == 'config':
71
- self.generate_config_files()
72
- elif choice == 'models':
73
- self.generate_model_files()
74
- elif choice == 'all':
75
- self.generate_all()
76
- elif choice == 'env':
77
- self.generate_env_template()
78
- elif choice == 'settings':
79
- self.generate_settings_template()
80
- elif choice == 'exit':
81
- self.stdout.write('Goodbye! 👋')
82
- return
83
-
84
- def generate_all(self):
85
- """Generate all components"""
86
- self.stdout.write(self.style.SUCCESS('🔄 Generating all components...'))
87
-
88
- self.generate_config_files()
89
- self.generate_model_files()
90
- self.generate_env_template()
91
- self.generate_settings_template()
92
-
93
- self.stdout.write(self.style.SUCCESS('✅ All components generated!'))
94
-
95
- def generate_config_files(self):
96
- """Generate configuration files"""
97
- self.stdout.write(self.style.SUCCESS('⚙️ Generating configuration files...'))
98
-
99
- # Generate config.py
100
- self.generate_config_py()
101
-
102
- # Generate database config
103
- self.generate_database_config()
104
-
105
- # Generate security config
106
- self.generate_security_config()
107
-
108
- self.stdout.write(self.style.SUCCESS('✅ Configuration files generated!'))
109
-
110
- def generate_model_files(self):
111
- """Generate model files"""
112
- self.stdout.write(self.style.SUCCESS('📊 Generating model files...'))
113
-
114
- # Generate base models
115
- self.generate_base_models()
116
-
117
- # Generate API models
118
- self.generate_api_models()
119
-
120
- self.stdout.write(self.style.SUCCESS('✅ Model files generated!'))
121
-
122
- def generate_config_py(self):
123
- """Generate main config.py file"""
124
- config_content = '''"""
125
- Configuration file for Django Config Toolkit
126
- Auto-generated configuration with smart defaults.
127
- """
128
-
129
- from django_cfg import ConfigToolkit
130
-
131
- # Initialize configuration
132
- config = ConfigToolkit()
133
-
134
- # Export all settings
135
- globals().update(config.get_django_settings())
136
-
137
- # Type-safe access to configuration
138
- DEBUG = config.debug
139
- SECRET_KEY = config.secret_key
140
- DATABASE_URL = config.database_url
141
- ALLOWED_HOSTS = config.allowed_hosts
142
- '''
143
-
144
- config_path = Path('config.py')
145
- if not config_path.exists():
146
- with open(config_path, 'w') as f:
147
- f.write(config_content)
148
- self.stdout.write(f' 📄 Created {config_path}')
149
-
150
- def generate_database_config(self):
151
- """Generate database configuration"""
152
- db_config_content = '''"""
153
- Database Configuration
154
- Auto-generated database settings.
155
- """
156
-
157
- from django_cfg import DatabaseConfig
158
-
159
- # Database configuration
160
- db_config = DatabaseConfig(
161
- database_url="sqlite:///db.sqlite3",
162
- max_connections=20,
163
- conn_max_age=600,
164
- conn_health_checks=True,
165
- ssl_require=False,
166
- ssl_mode="prefer",
167
- query_timeout=30,
168
- )
169
-
170
- # Additional databases (uncomment and configure as needed)
171
- # db_config.read_replica_url = "postgresql://user:pass@host:port/db"
172
- # db_config.cache_db_url = "redis://localhost:6379/1"
173
- # db_config.analytics_db_url = "postgresql://user:pass@host:port/analytics"
174
-
175
- # Export database settings
176
- globals().update(db_config.to_django_settings())
177
- '''
178
-
179
- db_config_path = Path('database_config.py')
180
- if not db_config_path.exists():
181
- with open(db_config_path, 'w') as f:
182
- f.write(db_config_content)
183
- self.stdout.write(f' 📄 Created {db_config_path}')
184
-
185
- def generate_security_config(self):
186
- """Generate security configuration"""
187
- security_config_content = '''"""
188
- Security Configuration
189
- Auto-generated security settings.
190
- """
191
-
192
- from django_cfg import SecurityConfig
193
-
194
- # Security configuration
195
- security_config = SecurityConfig(
196
- secret_key="your-secret-key-here",
197
- debug=False,
198
- allowed_hosts=["localhost", "127.0.0.1"],
199
- csrf_trusted_origins=["http://localhost:3000"],
200
- cors_allowed_origins=["http://localhost:3000"],
201
- cors_allowed_methods=["GET", "POST", "PUT", "DELETE"],
202
- cors_allowed_headers=["*"],
203
- )
204
-
205
- # Export security settings
206
- globals().update(security_config.to_django_settings())
207
- '''
208
-
209
- security_config_path = Path('security_config.py')
210
- if not security_config_path.exists():
211
- with open(security_config_path, 'w') as f:
212
- f.write(security_config_content)
213
- self.stdout.write(f' 📄 Created {security_config_path}')
214
-
215
- def generate_base_models(self):
216
- """Generate base model files"""
217
- base_models_content = '''"""
218
- Base Models
219
- Auto-generated base model classes.
220
- """
221
-
222
- from django.db import models
223
- from django.utils import timezone
224
-
225
-
226
- class BaseModel(models.Model):
227
- """Base model with common fields."""
228
-
229
- created_at = models.DateTimeField(auto_now_add=True)
230
- updated_at = models.DateTimeField(auto_now=True)
231
- is_active = models.BooleanField(default=True)
232
-
233
- class Meta:
234
- abstract = True
235
-
236
- def __str__(self):
237
- return f"{self.__class__.__name__} {self.id}"
238
-
239
-
240
- class TimestampedModel(BaseModel):
241
- """Model with timestamps."""
242
-
243
- created_by = models.ForeignKey(
244
- 'auth.User',
245
- on_delete=models.SET_NULL,
246
- null=True,
247
- blank=True,
248
- related_name='%(class)s_created'
249
- )
250
- updated_by = models.ForeignKey(
251
- 'auth.User',
252
- on_delete=models.SET_NULL,
253
- null=True,
254
- blank=True,
255
- related_name='%(class)s_updated'
256
- )
257
-
258
- class Meta:
259
- abstract = True
260
- '''
261
-
262
- base_models_path = Path('models/base.py')
263
- base_models_path.parent.mkdir(exist_ok=True)
264
-
265
- if not base_models_path.exists():
266
- with open(base_models_path, 'w') as f:
267
- f.write(base_models_content)
268
- self.stdout.write(f' 📄 Created {base_models_path}')
269
-
270
- def generate_api_models(self):
271
- """Generate API model files"""
272
- api_models_content = '''"""
273
- API Models
274
- Auto-generated API model classes.
275
- """
276
-
277
- from django.db import models
278
- from .base import BaseModel
279
-
280
-
281
- class APIModel(BaseModel):
282
- """Base model for API resources."""
283
-
284
- name = models.CharField(max_length=255)
285
- description = models.TextField(blank=True)
286
- slug = models.SlugField(max_length=255, unique=True)
287
-
288
- class Meta:
289
- abstract = True
290
-
291
- def __str__(self):
292
- return self.name
293
-
294
-
295
- class ConfigModel(APIModel):
296
- """Configuration model for storing settings."""
297
-
298
- key = models.CharField(max_length=255, unique=True)
299
- value = models.JSONField()
300
- value_type = models.CharField(
301
- max_length=50,
302
- choices=[
303
- ('string', 'String'),
304
- ('integer', 'Integer'),
305
- ('float', 'Float'),
306
- ('boolean', 'Boolean'),
307
- ('json', 'JSON'),
308
- ],
309
- default='string'
310
- )
311
-
312
- class Meta:
313
- verbose_name = 'Configuration'
314
- verbose_name_plural = 'Configurations'
315
- '''
316
-
317
- api_models_path = Path('models/api.py')
318
- api_models_path.parent.mkdir(exist_ok=True)
319
-
320
- if not api_models_path.exists():
321
- with open(api_models_path, 'w') as f:
322
- f.write(api_models_content)
323
- self.stdout.write(f' 📄 Created {api_models_path}')
324
-
325
- def generate_env_template(self):
326
- """Generate environment template file"""
327
- env_template_content = '''# Environment Configuration Template
328
- # Copy this file to .env and configure your settings
329
-
330
- # Django Settings
331
- DEBUG=True
332
- SECRET_KEY=your-secret-key-here
333
- ALLOWED_HOSTS=localhost,127.0.0.1
334
-
335
- # Database Settings
336
- DATABASE_URL=sqlite:///db.sqlite3
337
- # DATABASE_URL=postgresql://user:password@localhost:5432/dbname
338
- # DATABASE_URL=mysql://user:password@localhost:3306/dbname
339
-
340
- # Additional Databases (optional)
341
- # DATABASE_URL_CARS=postgresql://user:password@localhost:5432/cars_db
342
- # DATABASE_URL_ANALYTICS=postgresql://user:password@localhost:5432/analytics_db
343
- # DATABASE_URL_CACHE=redis://localhost:6379/1
344
-
345
- # Email Settings
346
- EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
347
- EMAIL_HOST=smtp.gmail.com
348
- EMAIL_PORT=587
349
- EMAIL_USE_TLS=True
350
- EMAIL_HOST_USER=your-email@gmail.com
351
- EMAIL_HOST_PASSWORD=your-app-password
352
-
353
- # Cache Settings
354
- CACHE_BACKEND=django.core.cache.backends.locmem.LocMemCache
355
- # CACHE_BACKEND=django.core.cache.backends.redis.RedisCache
356
- # CACHE_LOCATION=redis://127.0.0.1:6379/1
357
-
358
- # Security Settings
359
- CSRF_TRUSTED_ORIGINS=http://localhost:3000
360
- CORS_ALLOWED_ORIGINS=http://localhost:3000
361
-
362
- # API Settings
363
- API_KEY=your-api-key-here
364
- API_RATE_LIMIT=1000
365
-
366
- # Logging Settings
367
- LOG_LEVEL=INFO
368
- LOG_FILE=logs/app.log
369
- '''
370
-
371
- env_template_path = Path('.env.template')
372
- if not env_template_path.exists():
373
- with open(env_template_path, 'w') as f:
374
- f.write(env_template_content)
375
- self.stdout.write(f' 📄 Created {env_template_path}')
376
-
377
- def generate_settings_template(self):
378
- """Generate Django settings template"""
379
- settings_template_content = '''"""
380
- Django Settings Template
381
- Auto-generated Django settings with Django Config Toolkit.
382
- """
383
-
384
- import os
385
- from pathlib import Path
386
-
387
- # Build paths inside the project like this: BASE_DIR / 'subdir'.
388
- BASE_DIR = Path(__file__).resolve().parent.parent
389
-
390
- # Import configuration from Django Config Toolkit
391
- from django_cfg import ConfigToolkit
392
-
393
- # Initialize configuration
394
- config = ConfigToolkit()
395
-
396
- # Export all settings
397
- globals().update(config.get_django_settings())
398
-
399
- # Application definition
400
- INSTALLED_APPS = [
401
- 'django.contrib.admin',
402
- 'django.contrib.auth',
403
- 'django.contrib.contenttypes',
404
- 'django.contrib.sessions',
405
- 'django.contrib.messages',
406
- 'django.contrib.staticfiles',
407
-
408
- # Third party apps
409
- 'rest_framework',
410
- 'corsheaders',
411
- 'django_cfg',
412
-
413
- # Local apps
414
- # Add your apps here
415
- ]
416
-
417
- MIDDLEWARE = [
418
- 'corsheaders.middleware.CorsMiddleware',
419
- 'django.middleware.security.SecurityMiddleware',
420
- 'django.contrib.sessions.middleware.SessionMiddleware',
421
- 'django.middleware.common.CommonMiddleware',
422
- 'django.middleware.csrf.CsrfViewMiddleware',
423
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
424
- 'django.contrib.messages.middleware.MessageMiddleware',
425
- 'django.middleware.clickjacking.XFrameOptionsMiddleware',
426
- ]
427
-
428
- ROOT_URLCONF = 'project.urls'
429
-
430
- TEMPLATES = [
431
- {
432
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
433
- 'DIRS': [BASE_DIR / 'templates'],
434
- 'APP_DIRS': True,
435
- 'OPTIONS': {
436
- 'context_processors': [
437
- 'django.template.context_processors.debug',
438
- 'django.template.context_processors.request',
439
- 'django.contrib.auth.context_processors.auth',
440
- 'django.contrib.messages.context_processors.messages',
441
- ],
442
- },
443
- },
444
- ]
445
-
446
- WSGI_APPLICATION = 'project.wsgi.application'
447
-
448
- # Static files (CSS, JavaScript, Images)
449
- STATIC_URL = '/static/'
450
- STATIC_ROOT = BASE_DIR / 'staticfiles'
451
- STATICFILES_DIRS = [BASE_DIR / 'static']
452
-
453
- # Media files
454
- MEDIA_URL = '/media/'
455
- MEDIA_ROOT = BASE_DIR / 'media'
456
-
457
- # Default primary key field type
458
- DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
459
-
460
- # REST Framework settings
461
- REST_FRAMEWORK = {
462
- 'DEFAULT_AUTHENTICATION_CLASSES': [
463
- 'rest_framework.authentication.SessionAuthentication',
464
- 'rest_framework.authentication.TokenAuthentication',
465
- ],
466
- 'DEFAULT_PERMISSION_CLASSES': [
467
- 'rest_framework.permissions.IsAuthenticated',
468
- ],
469
- 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
470
- 'PAGE_SIZE': 20,
471
- }
472
-
473
- # Health check URLs
474
- HEALTH_CHECK_URLS = [
475
- 'health/',
476
- 'health/detailed/',
477
- 'ready/',
478
- 'alive/',
479
- ]
480
- '''
481
-
482
- settings_template_path = Path('settings_template.py')
483
- if not settings_template_path.exists():
484
- with open(settings_template_path, 'w') as f:
485
- f.write(settings_template_content)
486
- self.stdout.write(f' 📄 Created {settings_template_path}')
@@ -1,87 +0,0 @@
1
- """
2
- Django App Agent Module - AI-Powered Django Application Generator.
3
-
4
- This module provides intelligent Django application generation using AI agents
5
- with infrastructure-aware code generation and intelligent questioning systems.
6
-
7
- Key Features:
8
- - AI-powered code generation with Pydantic AI
9
- - Infrastructure-aware pattern recognition
10
- - Intelligent questioning for requirement gathering
11
- - Type-safe everything with Pydantic 2
12
- - Rich CLI interface with progress tracking
13
- - Multi-agent orchestration for complex workflows
14
-
15
- Usage:
16
- from django_cfg.modules.django_app_agent import AppGeneratorService
17
-
18
- service = AppGeneratorService()
19
- result = await service.generate_app(request)
20
- """
21
-
22
- from typing import TYPE_CHECKING
23
-
24
- # Version information
25
- __version__ = "0.4.0"
26
- __author__ = "Django-CFG Team"
27
- __email__ = "team@django-cfg.dev"
28
-
29
- # Module metadata
30
- __title__ = "Django App Agent"
31
- __description__ = "AI-Powered Django Application Generator"
32
- __url__ = "https://github.com/django-cfg/django-cfg"
33
- __license__ = "MIT"
34
-
35
- # Public API exports (lazy loading for performance)
36
- if TYPE_CHECKING:
37
- from .services.app_generator import AppGeneratorService
38
- from .services.questioning_service import QuestioningService
39
- from .services.diagnostic_service import DiagnosticService
40
- from .models.requests import AppGenerationRequest
41
- from .models.responses import AppGenerationResult
42
- from .core.exceptions import (
43
- DjangoAppAgentError,
44
- GenerationError,
45
- ValidationError,
46
- ConfigurationError
47
- )
48
-
49
- __all__ = [
50
- # Services
51
- "AppGeneratorService",
52
- "QuestioningService",
53
- "DiagnosticService",
54
-
55
- # Models
56
- "AppGenerationRequest",
57
- "AppGenerationResult",
58
-
59
- # Exceptions
60
- "DjangoAppAgentError",
61
- "GenerationError",
62
- "ValidationError",
63
- "ConfigurationError",
64
-
65
- # Metadata
66
- "__version__",
67
- "__author__",
68
- "__title__",
69
- "__description__",
70
- ]
71
-
72
-
73
- def get_version() -> str:
74
- """Get the current version of Django App Agent Module."""
75
- return __version__
76
-
77
-
78
- def get_info() -> dict[str, str]:
79
- """Get module information."""
80
- return {
81
- "title": __title__,
82
- "version": __version__,
83
- "description": __description__,
84
- "author": __author__,
85
- "url": __url__,
86
- "license": __license__,
87
- }
@@ -1,40 +0,0 @@
1
- """
2
- AI Agents for Django App Agent Module.
3
-
4
- This module contains specialized AI agents for:
5
- - Code generation and analysis
6
- - Intelligent questioning
7
- - Quality validation
8
- - Diagnostic problem solving
9
- - Orchestration and coordination
10
- """
11
-
12
- from .base import DjangoAgent, AgentExecutor, AgentContext
13
- from .interfaces import AgentRegistry, AgentClientFactory
14
-
15
- # TODO: Import specialized agents when they are implemented
16
- # from .generation import AppGeneratorAgent
17
- # from .analysis import CodeAnalysisAgent, ProjectAnalysisAgent
18
- # from .validation import QualityValidationAgent, SecurityValidationAgent
19
- # from .dialogue import DialogueAgent, QuestioningAgent
20
- # from .diagnostic import DiagnosticAgent, ProblemSolverAgent
21
-
22
- __all__ = [
23
- # Base classes
24
- "DjangoAgent",
25
- "AgentExecutor",
26
- "AgentContext",
27
- "AgentRegistry",
28
- "AgentClientFactory",
29
-
30
- # TODO: Add specialized agents when implemented
31
- # "AppGeneratorAgent",
32
- # "CodeAnalysisAgent",
33
- # "ProjectAnalysisAgent",
34
- # "QualityValidationAgent",
35
- # "SecurityValidationAgent",
36
- # "DialogueAgent",
37
- # "QuestioningAgent",
38
- # "DiagnosticAgent",
39
- # "ProblemSolverAgent",
40
- ]
@@ -1,24 +0,0 @@
1
- """
2
- Base classes for Django App Agent AI agents.
3
-
4
- This module provides foundational classes for all AI agents:
5
- - DjangoAgent: Base class with django-cfg integration
6
- - AgentContext: Context management for agent execution
7
- - AgentExecutor: Execution management and orchestration
8
- """
9
-
10
- from .agent import DjangoAgent, SimpleTextAgent, create_simple_agent
11
- from .context import AgentContext, AgentDependencies, create_agent_dependencies
12
- from .executor import AgentExecutor, ExecutionResult, ExecutionStatus
13
-
14
- __all__ = [
15
- "DjangoAgent",
16
- "SimpleTextAgent",
17
- "create_simple_agent",
18
- "AgentContext",
19
- "AgentDependencies",
20
- "create_agent_dependencies",
21
- "AgentExecutor",
22
- "ExecutionResult",
23
- "ExecutionStatus",
24
- ]