import os
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, ButtonHolder, Fieldset, Layout, Submit
from django import forms
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.forms import ModelForm
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormMixin
from vanilla import GenericView
import sapl
from .models import CasaLegislativa
class HelpView(TemplateView):
# XXX treat non existing template as a 404!!!!
def get_template_names(self):
print(self.kwargs['topic'])
return ['ajuda/%s.html' % self.kwargs['topic']]
ESTADOS = ["",
"AC",
"AL",
"AM",
"AP",
"BA",
"CE",
"DF",
"ES",
"GO",
"MA",
"MG",
"MS",
"MT",
"PA",
"PB",
"PE",
"PI",
"PR",
"RJ",
"RN",
"RO",
"RR",
"RS",
"SC",
"SE",
"SP",
"TO"]
class CasaLegislativaTabelaAuxForm(ModelForm):
uf = forms.ChoiceField(required=True,
label='UF',
choices=[(a, a) for a in ESTADOS],
widget=forms.Select(
attrs={'class': 'selector'}))
informacao_geral = forms.CharField(widget=forms.Textarea,
label='Informação Geral',
required=False)
telefone = forms.CharField(label='Telefone',
required=False,
widget=forms.TextInput(
attrs={'class': 'telefone'}))
logotipo = forms.ImageField(label='Logotipo',
required=False,
widget=forms.FileInput
)
cep = forms.CharField(label='Cep',
required=True,
widget=forms.TextInput(
attrs={'class': 'cep'}))
fax = forms.CharField(label='Fax',
required=False,
widget=forms.TextInput(
attrs={'class': 'telefone'}))
class Meta:
model = CasaLegislativa
fields = ['codigo',
'nome',
'sigla',
'endereco',
'cep',
'municipio',
'uf',
'telefone',
'fax',
'logotipo',
'endereco_web',
'email',
'informacao_geral']
def __init__(self, *args, **kwargs):
row1 = sapl.layout.to_row(
[('codigo', 2),
('nome', 5),
('sigla', 5)])
row2 = sapl.layout.to_row(
[('endereco', 8),
('cep', 4)])
row3 = sapl.layout.to_row(
[('municipio', 10),
('uf', 2)])
row4 = sapl.layout.to_row(
[('telefone', 6),
('fax', 6)])
row5 = sapl.layout.to_row(
[('logotipo', 12)])
row6 = sapl.layout.to_row(
[('endereco_web', 12)])
row7 = sapl.layout.to_row(
[('email', 12)])
row8 = sapl.layout.to_row(
[('informacao_geral', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Dados Básicos',
row1,
row2,
row3,
row4,
row5,
HTML("""{% if form.logotipo.value %}
{% endif %}""", ),
row6,
row7,
row8,
ButtonHolder(
Submit('submit', 'Salvar',
css_class='button primary')
)
)
)
super(CasaLegislativaTabelaAuxForm, self).__init__(*args, **kwargs)
class CasaLegislativaTableAuxView(FormMixin, GenericView):
template_name = "base/casa_leg_table_aux.html"
def get(self, request, *args, **kwargs):
try:
casa = CasaLegislativa.objects.first()
except ObjectDoesNotExist:
form = CasaLegislativaTabelaAuxForm()
else:
form = CasaLegislativaTabelaAuxForm(instance=casa)
return self.render_to_response({'form': form})
def post(self, request, *args, **kwargs):
form = CasaLegislativaTabelaAuxForm(request.POST, request.FILES)
if form.is_valid():
try:
casa = CasaLegislativa.objects.first()
except ObjectDoesNotExist:
casa_save = form.save(commit=False)
else:
if "remover" in request.POST:
try:
os.unlink(casa.logotipo.path)
except OSError:
pass # Should log this error!!!!!
casa.logotipo = None
casa_save = CasaLegislativaTabelaAuxForm(
request.POST,
request.FILES,
instance=casa).save(commit=False)
casa_save.save()
return self.form_valid(form)
else:
return self.render_to_response({'form': form})
def get_success_url(self):
return reverse('casa_legislativa')