[TASK] Try using inline form sets.
This commit is contained in:
parent
a7a8601566
commit
32f5915530
|
@ -1,11 +1,11 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from frontend.models import Project, PersonGlobalIdentity, PresentationPerson
|
from frontend.models import Project, PersonGlobalIdentity, PresentationPerson, Presentation
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Submit, Layout
|
from crispy_forms.layout import Submit, Layout
|
||||||
|
|
||||||
from django.forms.formsets import BaseFormSet
|
from django.forms.models import inlineformset_factory
|
||||||
|
|
||||||
class NewProjectForm(forms.ModelForm):
|
class NewProjectForm(forms.ModelForm):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
@ -84,27 +84,6 @@ class PersonMapForm(forms.Form):
|
||||||
preferred_identity = forms.BooleanField(initial=False, required=False)
|
preferred_identity = forms.BooleanField(initial=False, required=False)
|
||||||
|
|
||||||
|
|
||||||
class PresentationFormSet(BaseFormSet):
|
|
||||||
""" This can be done better, but i don't know how yet. """
|
|
||||||
def add_fields(self, form, index):
|
|
||||||
""" Add fields for Presentation to the FormSet. """
|
|
||||||
super(PresentationFormSet, self).add_fields(form, index)
|
|
||||||
# Additional fields for the actual presentation
|
|
||||||
form.fields["title"] = forms.CharField()
|
|
||||||
form.fields["event_type"] = forms.ChoiceField(choices=[(u'new', u'Hauptvortrag'), (u'existing', u'andere Veranstaltung')], initial=u'new', widget=forms.RadioSelect())
|
|
||||||
form.fields["abstract"] = forms.CharField()
|
|
||||||
# Event (other event)
|
|
||||||
form.fields["date"] = forms.DateField()
|
|
||||||
form.fields["rahmen"] = forms.CharField()
|
|
||||||
form.fields["workshop"] = forms.BooleanField()
|
|
||||||
form.fields["place"] = forms.CharField()
|
|
||||||
form.fields["startdate"] = forms.DateField()
|
|
||||||
form.fields["enddate"] = forms.DateField()
|
|
||||||
# additional comment + email
|
|
||||||
form.fields["comments"] = forms.CharField()
|
|
||||||
form.fields["email"] = forms.EmailField()
|
|
||||||
|
|
||||||
|
|
||||||
class PresentationPersonForm(forms.ModelForm):
|
class PresentationPersonForm(forms.ModelForm):
|
||||||
""" Modelform for PresentationPerson """
|
""" Modelform for PresentationPerson """
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
@ -154,6 +133,8 @@ class PresentationPersonForm(forms.ModelForm):
|
||||||
model = PresentationPerson
|
model = PresentationPerson
|
||||||
fields = [u'given_name', u'additional_name', u'family_name', u'hshmembership']
|
fields = [u'given_name', u'additional_name', u'family_name', u'hshmembership']
|
||||||
|
|
||||||
|
PresentationPersonFormSet = inlineformset_factory(Presentation, PresentationPerson)
|
||||||
|
|
||||||
|
|
||||||
class PresentationForm(forms.Form):
|
class PresentationForm(forms.Form):
|
||||||
""" Big form containing all the stuff about the things. """
|
""" Big form containing all the stuff about the things. """
|
||||||
|
@ -168,10 +149,6 @@ class PresentationForm(forms.Form):
|
||||||
u'title',
|
u'title',
|
||||||
u'event_type',
|
u'event_type',
|
||||||
u'abstract',
|
u'abstract',
|
||||||
u'given_name',
|
|
||||||
u'additional_name',
|
|
||||||
u'family_name',
|
|
||||||
u'hsh_membership',
|
|
||||||
u'date',
|
u'date',
|
||||||
u'rahmen',
|
u'rahmen',
|
||||||
u'workshop',
|
u'workshop',
|
||||||
|
@ -188,13 +165,6 @@ class PresentationForm(forms.Form):
|
||||||
event_type = forms.ChoiceField(choices=[(u'new', u'Hauptvortrag'), (u'existing', u'andere Veranstaltung')], initial=u'new', widget=forms.RadioSelect())
|
event_type = forms.ChoiceField(choices=[(u'new', u'Hauptvortrag'), (u'existing', u'andere Veranstaltung')], initial=u'new', widget=forms.RadioSelect())
|
||||||
abstract = forms.CharField()
|
abstract = forms.CharField()
|
||||||
|
|
||||||
# Teilnehmer
|
|
||||||
given_name = forms.CharField()
|
|
||||||
additional_name = forms.CharField()
|
|
||||||
family_name = forms.CharField()
|
|
||||||
hsh_membership = forms.ChoiceField(choices=[(u'new', u'Yes'), (u'existing', u'No'), (u'idk', u'Maybe')], initial=u'new', widget=forms.RadioSelect())
|
|
||||||
|
|
||||||
|
|
||||||
# Event (other event)
|
# Event (other event)
|
||||||
date = forms.DateField()
|
date = forms.DateField()
|
||||||
rahmen = forms.CharField()
|
rahmen = forms.CharField()
|
||||||
|
|
|
@ -16,12 +16,18 @@ class Project(models.Model):
|
||||||
temp += u" (No project file)"
|
temp += u" (No project file)"
|
||||||
return temp
|
return temp
|
||||||
|
|
||||||
|
class Presentation(models.Model):
|
||||||
|
""" Presention Model for PresentationForm"""
|
||||||
|
title = models.CharField(max_length=255)
|
||||||
|
|
||||||
class PresentationPerson(models.Model):
|
class PresentationPerson(models.Model):
|
||||||
""" Person Model for PresentationForm"""
|
""" Person Model for PresentationForm"""
|
||||||
given_name = models.CharField(max_length=255)
|
given_name = models.CharField(max_length=255)
|
||||||
additional_name = models.CharField(max_length=255)
|
additional_name = models.CharField(max_length=255)
|
||||||
family_name = models.CharField(max_length=255)
|
family_name = models.CharField(max_length=255)
|
||||||
hshmembership = models.CharField(max_length=255)
|
hshmembership = models.CharField(max_length=255)
|
||||||
|
presentation = models.ForeignKey(Presentation, blank=False, null=False, db_index=True)
|
||||||
|
|
||||||
|
|
||||||
class PersonGlobalIdentity(models.Model):
|
class PersonGlobalIdentity(models.Model):
|
||||||
""" Model representing a global person identity in django. Can be used to link any foreign identity to it. """
|
""" Model representing a global person identity in django. Can be used to link any foreign identity to it. """
|
||||||
|
|
|
@ -14,8 +14,10 @@ from django.contrib.auth.views import login, logout
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
|
||||||
from frontend.forms import NewProjectForm, FileUploadForm, PersonMapForm, PresentationPersonForm, PresentationFormSet
|
from frontend.forms import NewProjectForm, FileUploadForm, PersonMapForm
|
||||||
from django.forms.formsets import formset_factory
|
from frontend.forms import PresentationPersonFormSet, PresentationForm
|
||||||
|
from frontend.models import Presentation
|
||||||
|
from extra_views import FormSetView
|
||||||
|
|
||||||
from frontend.models import Project
|
from frontend.models import Project
|
||||||
|
|
||||||
|
@ -71,6 +73,9 @@ class MyTemplateView(MyViewMixin, TemplateView):
|
||||||
class MyFormView(MyViewMixin, FormView):
|
class MyFormView(MyViewMixin, FormView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class MyFormSetView(MyViewMixin, FormSetView):
|
||||||
|
pass
|
||||||
|
|
||||||
class MyCreateView(MyViewMixin, CreateView):
|
class MyCreateView(MyViewMixin, CreateView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -93,6 +98,9 @@ class ProtectedTemplateView(LoggedInMixin, MyTemplateView):
|
||||||
class ProtectedFormView(LoggedInMixin, MyFormView):
|
class ProtectedFormView(LoggedInMixin, MyFormView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class ProtectedFormSetView(LoggedInMixin, MyFormSetView):
|
||||||
|
pass
|
||||||
|
|
||||||
class ProtectedCreateView(LoggedInMixin, MyCreateView):
|
class ProtectedCreateView(LoggedInMixin, MyCreateView):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -105,17 +113,27 @@ class IndexView(ProtectedTemplateView):
|
||||||
template_name = u'index.html'
|
template_name = u'index.html'
|
||||||
page_title = u'Index'
|
page_title = u'Index'
|
||||||
|
|
||||||
class HelloView(ProtectedFormView):
|
# TODO: Make this work!
|
||||||
|
class HelloView(ProtectedCreateView):
|
||||||
template_name = u'hello.html'
|
template_name = u'hello.html'
|
||||||
page_title = u'Hello'
|
page_title = u'Hello'
|
||||||
form_class = None
|
model = Presentation
|
||||||
|
form_class = PresentationForm
|
||||||
success_url = u'/hello'
|
success_url = u'/hello'
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
super(HelloView, self).__init__()
|
"""
|
||||||
PresentationPersonFormFactory = formset_factory(PresentationPersonForm, formset=PresentationFormSet)
|
Handles GET requests and instantiates blank versions of the form
|
||||||
self.form_class = PresentationPersonFormFactory(prefix='person')
|
and its inline formsets.
|
||||||
print self.form_class
|
"""
|
||||||
|
self.object = None
|
||||||
|
form_class = self.get_form_class()
|
||||||
|
form = self.get_form(form_class)
|
||||||
|
presentationperson_form = PresentationPersonFormSet()
|
||||||
|
return self.render_to_response(
|
||||||
|
self.get_context_data(form=form,
|
||||||
|
presentationperson_form=presentationperson_form))
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue