|
|
- 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],
- # })
|