from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button, Column, Div, Field, Layout, Row from django import forms from django.forms.models import ModelForm from django.utils.translation import ugettext_lazy as _ from compilacao.models import Dispositivo, Nota, TipoNota, TipoVide, Vide from norma.models import TipoNormaJuridica from sapl.layout import to_column, to_row class UpLoadImportFileForm(forms.Form): import_file = forms.FileField( required=True, label=_('Arquivo formato ODF para Importanção')) error_messages = { 'required': _('Este campo é obrigatório'), 'invalid': _('URL inválida.') } class NotaForm(ModelForm): NPRIV = 1 NINST = 2 NPUBL = 3 PUBLICIDADE_CHOICES = ( # Only the owner of the note has visibility. (NPRIV, _('Nota Privada')), # All authenticated users have visibility. (NINST, _('Nota Institucional')), # All users have visibility. (NPUBL, _('Nota Pública')), ) titulo = forms.CharField(label=' ', required=False) texto = forms.CharField( label='', widget=forms.Textarea, error_messages=error_messages) url_externa = forms.URLField( label='', required=False, error_messages=error_messages) publicidade = forms.ChoiceField( required=True, label=_('Publicidade'), choices=PUBLICIDADE_CHOICES, widget=forms.Select(attrs={'class': 'selector'})) tipo = forms.ModelChoiceField( required=False, label=_('Tipo da Nota'), queryset=TipoNota.objects.all(), empty_label=None) publicacao = forms.DateField( label=_('Publicação'), input_formats=['%d/%m/%Y'], required=True, widget=forms.DateInput( format='%d/%m/%Y'), error_messages=error_messages ) efetividade = forms.DateField( label=_('Efetividade'), input_formats=['%d/%m/%Y'], required=True, widget=forms.DateInput( format='%d/%m/%Y'), error_messages=error_messages) dispositivo = forms.ModelChoiceField(queryset=Dispositivo.objects.all(), widget=forms.HiddenInput()) pk = forms.IntegerField(widget=forms.HiddenInput(), required=False) class Meta: model = Nota fields = ['titulo', 'texto', 'url_externa', 'publicidade', 'publicacao', 'efetividade', 'tipo', 'dispositivo', 'pk' ] def __init__(self, *args, **kwargs): row1 = to_row([ ('tipo', 4), ]) row1.append( Column( Field( 'titulo', placeholder=_('Título da Nota (opcional)') ), css_class='columns large-8')) row3 = to_row([ ('publicidade', 3), ('publicacao', 3), ('efetividade', 3), (Button('submit', 'Salvar', css_class='button primary radius'), 3) ]) self.helper = FormHelper() self.helper.layout = Layout( Div(HTML(_('Notas')), css_class='title_form'), row1, Field('texto', placeholder=_('Adicionar Nota')), Field('url_externa', placeholder=_('URL Externa (opcional)')), row3 ) super(NotaForm, self).__init__(*args, **kwargs) class VideForm(ModelForm): dispositivo_base = forms.ModelChoiceField( queryset=Dispositivo.objects.all(), widget=forms.HiddenInput()) dispositivo_ref = forms.ModelChoiceField( queryset=Dispositivo.objects.all(), widget=forms.HiddenInput()) tipo_norma = forms.ModelChoiceField( queryset=TipoNormaJuridica.objects.all(), required=False) num_norma = forms.IntegerField(label=_('Núm. da Norma'), required=False) ano_norma = forms.IntegerField(label=_('Ano da Norma'), required=False) texto = forms.CharField( label='', widget=forms.Textarea, error_messages=error_messages, required=False) tipo = forms.ModelChoiceField( label=_('Tipo do Vide'), queryset=TipoVide.objects.all(), required=True) busca_dispositivo = forms.CharField( label=_('Buscar Dispositivo a Referenciar'), required=False) pk = forms.IntegerField(widget=forms.HiddenInput(), required=False) class Meta: model = Vide fields = ['dispositivo_base', 'dispositivo_ref', 'texto', 'tipo', 'pk'] def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.layout = Layout( Div(HTML(_('Vides')), css_class='title_form'), Row( to_column(( Div( Div(to_column((Field( 'tipo', placeholder=_('Selecione um Tipo de Vide')), 12))), Div(to_column(( Field( 'texto', placeholder=_( 'Texto Adicional ao Vide')), 12))), Div(to_column(( Button( 'submit', 'Salvar', css_class='button primary radius'), 12))) ), 4)), to_column(( Div( Div(to_column(('tipo_norma', 6))), Div(to_column(('num_norma', 3)), to_column(('ano_norma', 3))), Div(to_column( (Field( 'busca_dispositivo', placeholder=_('Digite palavras, letras, ' 'números ou algo' ' que estejam ' 'no rótulo ou no texto.')), 10)), to_column(( Button( 'buscar', 'Buscar', css_class='button btn-busca radius'), 2)) ), to_column( (Div(css_class='container-busca'), 12)) ), 8) ) ) ) super(VideForm, self).__init__(*args, **kwargs)