-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathviews.py
More file actions
107 lines (89 loc) · 3.7 KB
/
views.py
File metadata and controls
107 lines (89 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
from django.shortcuts import render,redirect
from django.views.decorators.csrf import csrf_exempt
import json
from django.core.exceptions import BadRequest
from django.http import HttpResponse
from codeless_django.data_manager import DataManager
from codeless_django.writers.apps import WriteApps
from codeless_django.writers.files import AdditionalFileWriter
from codeless_django.writers.documentation import DocumentationWriter
import os
data_manager=DataManager()
# Create your views here.
@csrf_exempt
def home(request):
data=data_manager._load_data()
for option,value in request.POST.items():
if value:
print(value)
return render(request, 'codeless_django/demo.html',context=data )
@csrf_exempt
def add_app(request):
app_name = request.POST.get("app_name")
data_manager.create_app(app_name.lower())
return redirect('home')
@csrf_exempt
def add_model(request,app_name):
model_name = request.POST.get("model_name")
data_manager.create_model(app_name, model_name)
return redirect('home')
@csrf_exempt
def add_field(request,model_name,app_name):
if request.method=="POST":
request.POST._mutable=True
field_name =request.POST.pop('field_name')[0]
field_type = request.POST.pop('field_class')[0]
data_manager.create_field(app_name, model_name, field_name, field_type)
for option_name,option_value in request.POST.items():
if option_value:
data_manager.create_option(app_name, model_name, field_name, option_name, option_value)
return redirect('home')
else:
context={}
context["field_class"]=request.GET.get('field_class',"")
context["model_name"]=model_name
context["app_name"]=app_name
return render(request, 'codeless_django/forms/field_form.html',context=context)
@csrf_exempt
def add_model_meta(request,model_name,app_name):
if request.method=="POST":
for meta_option_name,meta_option_value in request.POST.items():
if meta_option_value:
data_manager.create_meta_option(app_name, model_name,meta_option_name, meta_option_value)
return redirect('home')
else:
context={}
context["model_name"]=model_name
context["app_name"]=app_name
return render(request, 'codeless_django/forms/model_meta_form.html',context=context)
def get_field_options(request):
field_class=request.GET.get('field_class',"")
return render(request, 'codeless_django/forms/field_option.html',context={"field_class":field_class})
def get_fields(request,model_name,app_name):
context={}
context['fields']=data_manager.get_fields(app_name, model_name)
print(context['fields'])
return render(request, 'codeless_django/fields.html',context=context)
def delete_app(request,app_name):
data_manager.delete_app(app_name)
return redirect('home')
def delete_model(request,app_name,model_name):
data_manager.delete_model(app_name, model_name)
return redirect('home')
def delete_field(request,app_name,model_name, field_name):
data_manager.delete_field(app_name, model_name, field_name)
return redirect('home')
def delete_meta_options(request,app_name,model_name):
data_manager.delete_meta_option(app_name, model_name)
return redirect('home')
@csrf_exempt
def create_apps(request):
write_template_views=bool(request.POST.get("template_views"))
write_api_views=bool(request.POST.get("api_views"))
args = "--api-views" if write_api_views else ""
args += " --template-views" if write_template_views else ""
os.system(f"python manage.py writeapps {args}")
if write_api_views:
return redirect('/swagger/')
else:
return redirect('/')