Browse Source

Add dynamic fields to form in sessao

pull/6/head
Eduardo Edson Batista Cordeiro Alves 10 years ago
parent
commit
877e0a54e9
  1. 7
      parlamentares/models.py
  2. 2
      sessao/models.py
  3. 27
      sessao/views.py
  4. 13
      templates/sessao/expediente.html

7
parlamentares/models.py

@ -1,8 +1,9 @@
import datetime
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from sapl.utils import YES_NO_CHOICES, make_choices from sapl.utils import YES_NO_CHOICES, make_choices
import datetime
class Legislatura(models.Model): class Legislatura(models.Model):
@ -17,8 +18,8 @@ class Legislatura(models.Model):
def __str__(self): def __str__(self):
# XXX Usar id mesmo? Ou criar campo para nº legislatura? # XXX Usar id mesmo? Ou criar campo para nº legislatura?
current_date = datetime.datetime.now().year current_date = datetime.datetime.now().year
if(self.data_inicio.year <= current_date if(self.data_inicio.year <= current_date and
and self.data_fim.year >= current_date): self.data_fim.year >= current_date):
current = ' (%s)' % _('Atual') current = ' (%s)' % _('Atual')
else: else:
current = '' current = ''

2
sessao/models.py

@ -4,7 +4,7 @@ from django.utils.translation import ugettext_lazy as _
from materia.models import MateriaLegislativa from materia.models import MateriaLegislativa
from parlamentares.models import (CargoMesa, Legislatura, Parlamentar, from parlamentares.models import (CargoMesa, Legislatura, Parlamentar,
SessaoLegislativa) SessaoLegislativa)
from sapl.utils import make_choices, YES_NO_CHOICES from sapl.utils import YES_NO_CHOICES, make_choices
class TipoSessaoPlenaria(models.Model): class TipoSessaoPlenaria(models.Model):

27
sessao/views.py

@ -1,5 +1,4 @@
from django import forms from django import forms
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin from django.views.generic.edit import FormMixin
@ -83,8 +82,17 @@ registro_votacao_crud = build_crud(
]) ])
def expediente_form_field(index):
return 'ExpedienteForm_%d' % index
class ExpedienteForm(forms.Form): class ExpedienteForm(forms.Form):
teste = forms.CharField(widget=forms.Textarea, max_length=100)
def __init__(self, *args, **kwargs):
super(ExpedienteForm, self).__init__(*args, **kwargs)
for i, values in enumerate(TipoExpediente.objects.all()):
self.fields[expediente_form_field(i)] = forms.CharField(
widget=forms.Textarea, max_length=100, required=False)
class ExpedienteView(FormMixin, sessao_crud.CrudDetailView): class ExpedienteView(FormMixin, sessao_crud.CrudDetailView):
@ -95,14 +103,19 @@ class ExpedienteView(FormMixin, sessao_crud.CrudDetailView):
self.object = self.get_object() self.object = self.get_object()
form = self.get_form() form = self.get_form()
if form.is_valid(): if form.is_valid():
expediente = ExpedienteSessao() for i, values in enumerate(TipoExpediente.objects.all()):
expediente.sessao_plenaria = self.object expediente = ExpedienteSessao()
expediente.tipo = TipoExpediente.objects.first() expediente.sessao_plenaria = self.object
expediente.conteudo = form.fields['teste'] expediente.tipo = values
expediente.save() expediente.conteudo = form.data[expediente_form_field(i)]
expediente.save()
return self.form_valid(form) return self.form_valid(form)
else: else:
return self.form_invalid(form) return self.form_invalid(form)
def get_success_url(self): def get_success_url(self):
return self.detail_url return self.detail_url
def get_title_and_fieldnames(self):
for i, tipo in enumerate(TipoExpediente.objects.all()):
yield tipo.nome, expediente_form_field(i)

13
templates/sessao/expediente.html

@ -2,10 +2,15 @@
{% load i18n %} {% load i18n %}
{% block detail_content %} {% block detail_content %}
<form method="Post" action=""> <form method="Post">
{% csrf_token %} {% csrf_token %}
<textarea name="teste"></textarea>
<input type="submit" name="Salvar" /> {% for title, fieldname in view.get_title_and_fieldnames %}
<h5>{{ title }}:</h5>
<textarea name="{{ fieldname }}"></textarea>
{% endfor %}
<br /><input type="submit" value="Salvar" />
</form> </form>
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save