85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
from django.shortcuts import render
|
|
from django.forms import modelformset_factory
|
|
from django.http import HttpResponse
|
|
from formtools.wizard.views import CookieWizardView
|
|
|
|
from .forms import ProjectForm, VolunteerForm, LibraryForm, IFGForm
|
|
from .models import Project
|
|
|
|
def intern(request):
|
|
# return HttpResponse("Hello, world. You're at the input form")
|
|
# ProjectFormSet = modelformset_factory(Project, fields='__all__')
|
|
if request.method == 'POST':
|
|
print('POST detected')
|
|
form = ProjectForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
print('form valid')
|
|
form.save()
|
|
|
|
# do something.
|
|
else:
|
|
print("form not valid")
|
|
else:
|
|
print
|
|
form = ProjectForm()
|
|
return render(request, 'input/project.html', {'form': form})
|
|
|
|
def done(request):
|
|
return HttpResponse("Your data is save now.")
|
|
|
|
def extern(request):
|
|
return HttpResponse("The world out there is large and dangerous")
|
|
|
|
class ExternView(CookieWizardView):
|
|
template_name = "input/extern.html"
|
|
form_list = [VolunteerForm, LibraryForm]
|
|
|
|
# def process_step(self, form):
|
|
# if form.cleaned_data.get('choice') == 'IFG':
|
|
# print ('IFG detected!')
|
|
# self.form_list = [VolunteerForm, IFGForm]
|
|
# print('leaving process_step()')
|
|
# return self.get_form_step_data(form)
|
|
|
|
def get_form(self, step=None, data=None, files=None):
|
|
if step is None:
|
|
step = self.steps.current
|
|
print ("get_form() step " + step)
|
|
|
|
# prev_data = self.get_cleaned_data_for_step(self.get_prev_step(
|
|
# self.steps.current))
|
|
# print (data)
|
|
|
|
if step == '1':
|
|
prev_data = self.get_cleaned_data_for_step('0')
|
|
if prev_data.get('choice') == 'IFG':
|
|
print ('IFG detected!')
|
|
form = IFGForm(data)
|
|
else:
|
|
form = LibraryForm(data)
|
|
else:
|
|
form = super().get_form(step, data, files)
|
|
return form
|
|
|
|
def done(self, form_list, **kwargs):
|
|
print('ExternView.done() reached')
|
|
# gather data from all forms
|
|
data = {}
|
|
for form in form_list:
|
|
data = {**data, **form.cleaned_data}
|
|
print(data)
|
|
|
|
# write data to database
|
|
form = form.save(commit=False)
|
|
# this is ugly code. how can we copy this without explicit writing?
|
|
# i found no way to access the ModelForm.Meta.exclude-array
|
|
form.realname = data['realname']
|
|
form.username = data['username']
|
|
form.email = data['email']
|
|
form.save()
|
|
|
|
return done(self.request)
|
|
# return render(self.request, 'saved', {
|
|
# 'form_data': [form.cleaned_data for form in form_list],
|
|
# })
|