Esempio n. 1
0
    def __init__(self, *args, **kwargs):

        row1 = to_row([
            ('codigo', 2),
            ('titulo', 4),
            ('perfil', 3),
            ('parlamentar', 3),
        ])

        row2 = to_row([
            ('visibilidade', 2),
            ('template_classe', 3),
            ('tipo_doc_padrao', 4),
            ('template_doc_padrao', 3),
        ])
        row3 = to_row([
            ('descricao', 12),
        ])

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Identificação Básica'),
                     row1, row2, row3))

        super(ClasseForm, self).__init__(*args, **kwargs)
Esempio n. 2
0
    def __init__(self, *args, **kwargs):

        title_label = kwargs.pop('title_label')
        action_label = kwargs.pop('action_label')

        row1 = to_row(
            [
                (Div(
                 css_class="g-recaptcha float-right",  # if not settings.DEBUG else '',
                 data_sitekey=settings.GOOGLE_RECAPTCHA_SITE_KEY
                 ), 5),
                ('email', 7),

            ]
        )

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(
                title_label,
                row1
            ),
            actions=form_actions(label=action_label)
        )

        super().__init__(*args, **kwargs)
Esempio n. 3
0
    def __init__(self, *args, **kwargs):

        tipo_select = Fieldset(
            TipoProposicao._meta.verbose_name,
            Div(to_column(('descricao', 5)),
                to_column(('content_type', 7)),
                css_class='clearfix'),
            to_column(('tipo_conteudo_related_radio', 6)),
            to_column(('perfis', 6)))

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(tipo_select)

        super(TipoProposicaoForm, self).__init__(*args, **kwargs)

        content_types = ContentType.objects.get_for_models(
            *models_with_gr_for_model(TipoProposicao))

        self.fields['content_type'].choices = [
            (ct.pk, ct) for k, ct in content_types.items()
        ]
        self.fields['content_type'].choices.sort(key=lambda x: str(x[1]))

        if self.instance.pk:
            self.fields[
                'tipo_conteudo_related'].initial = self.instance.object_id
Esempio n. 4
0
    def __init__(self, *args, **kwargs):

        row1 = to_row(
            [('tipo', 4), ('numero', 4), ('ano', 4)])

        row2 = to_row(
            [('data', 4), ('numero_protocolo', 4), ('ano_protocolo', 4)])

        row3 = to_row(
            [('assunto', 12)])

        row4 = to_row(
            [('interessado', 9), ('tramitacao', 3)])

        row5 = to_row(
            [('texto_integral', 12)])

        row6 = to_row(
            [('numero_externo', 4), ('dias_prazo', 6), ('data_fim_prazo', 2)])

        row7 = to_row(
            [('observacao', 12)])

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Identificação Básica'),
                     row1, row2, row3, row4, row5),
            Fieldset(_('Outras Informações'),
                     row6, row7))
        super(DocumentoAdministrativoForm, self).__init__(
            *args, **kwargs)
Esempio n. 5
0
    def __init__(self, *args, **kwargs):

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            to_row([
                ('titulo', 7), ('visibilidade', 3), ('listar', 2)
            ]),
            to_row([
                ('tipo', 4), ('template_doc', 4), ('capa', 4),
            ]),
            to_row([
                ('descricao', 8),
                ('parlamentares', 4)
            ]),
            to_row([
                ('materias', 12),
            ]),
        )

        super(DocumentoForm, self).__init__(*args, **kwargs)

        self.fields['parlamentares'].choices = [
            ('0', '--------------')] + list(
            self.fields['parlamentares'].choices)

        self.fields['materias'].choices = [
            ('0', '--------------')] + [(m.id, str(m) + ' - ' + m.ementa) for m in self.fields['materias'].queryset[:200]]

        self.fields['capa'].initial = self.instance == self.instance.classe.capa
Esempio n. 6
0
    def __init__(self, *args, **kwargs):

        layout_form = Fieldset(
            VinculoDocDiarioOficial._meta.verbose_name,
            Row(
                to_column(('content_type', 3)),
                to_column(('tipo', 3)),
                to_column(('numero', 2)),
                to_column(('ano', 2)),
                to_column(('pagina', 2)),
                to_column(('diario', 0)),
            ),
            Alert('',
                  css_class="doc_selected hidden alert-info",
                  dismiss=False),
        )

        self.helper = SaplFormHelper()
        self.helper.layout = SaplFormLayout(layout_form)

        super().__init__(*args, **kwargs)

        content_types = ContentType.objects.get_for_models(
            *models_with_gr_for_model(VinculoDocDiarioOficial))

        self.fields['content_type'].choices = [
            (ct.pk, ct) for k, ct in content_types.items()
        ]
        # Ordena por id
        self.fields['content_type'].choices.sort(key=lambda x: x[0])
Esempio n. 7
0
    def __init__(self, *args, **kwargs):
        row1 = to_row([('email', 12)])
        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Insira o e-mail cadastrado com a sua conta'), row1),
            actions=form_actions(label=_('Enviar')))

        super(RecuperarSenhaForm, self).__init__(*args, **kwargs)
Esempio n. 8
0
    def __init__(self, *args, **kwargs):
        self.texto_articulado_proposicao = sapl.base.models.AppConfig.attr(
            'texto_articulado_proposicao')

        if not self.texto_articulado_proposicao:
            if 'tipo_texto' in self._meta.fields:
                self._meta.fields.remove('tipo_texto')
        else:
            if 'tipo_texto' not in self._meta.fields:
                self._meta.fields.append('tipo_texto')

        fields = [
            to_column((Fieldset(
                TipoProposicao._meta.verbose_name, Field('tipo')), 3)),
            Fieldset(_('Vincular a Matéria Legislativa Existente'),
                     to_column(('tipo_materia', 4)),
                     to_column(('numero_materia', 4)),
                     to_column(('ano_materia', 4))
                     ),

            to_column(
                (Alert('teste',
                       css_class="ementa_materia hidden alert-info",
                       dismiss=False), 12)),
            to_column(('descricao', 12)),
        ]

        if self.texto_articulado_proposicao:
            fields.append(
                to_column((InlineRadios('tipo_texto'), 5)),)

        fields.append(to_column((
            'texto_original', 7 if self.texto_articulado_proposicao else 12)))

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(*fields)

        super(ProposicaoForm, self).__init__(*args, **kwargs)

        if self.instance.pk:
            self.fields['tipo_texto'].initial = ''
            if self.instance.texto_original:
                self.fields['tipo_texto'].initial = 'D'
            if self.texto_articulado_proposicao:
                if self.instance.texto_articulado.exists():
                    self.fields['tipo_texto'].initial = 'T'

            if self.instance.materia_de_vinculo:
                self.fields[
                    'tipo_materia'
                ].initial = self.instance.materia_de_vinculo.tipo
                self.fields[
                    'numero_materia'
                ].initial = self.instance.materia_de_vinculo.numero
                self.fields[
                    'ano_materia'
                ].initial = self.instance.materia_de_vinculo.ano
Esempio n. 9
0
    def __init__(self, *args, **kwargs):

        row1 = to_row([('arquivo', 4)])

        row2 = to_row([('assunto', 12)])

        self.helper = SaplFormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Identificação Básica'), row1, row2))
        super(AnexoAudienciaPublicaForm, self).__init__(*args, **kwargs)
Esempio n. 10
0
    def __init__(self, *args, **kwargs):

        rows = [Div(
            to_column((
                to_row([
                    ('titulo', 8),
                    (Div(
                        css_class="g-recaptcha",
                        data_sitekey=settings.GOOGLE_RECAPTCHA_SITE_KEY
                    ), 4),
                    ('descricao', 12),
                    (Alert(_(
                        """<strong>Aviso</strong><br>
                            As manifestações registradas de maneira anônima são 
                            consideradas "Comunicações" e 
                            <strong class="text-red">não é possível o seu acompanhamento.</strong>
                            Caso deseje acompanhar o andamento 
                            da sua manifestação e receber uma resposta do órgão 
                            ou entidade, por favor identifique-se.
                            """),
                        css_class="alert-warning",
                        dismiss=False), 12)
                ]),
                12)),

            # to_column((
            #    to_row([('areatrabalho_parlamentar', 12)]),
            #    4)),

            css_class="row"
        )]

        if 'logged_user' in kwargs['initial'] and \
                kwargs['initial']['logged_user']:
            rows.insert(
                0, Alert(
                    _('<strong>Atenção, você foi desconectado!!!</strong><br>'
                      'Ao escolher fazer uma denúncia anônima, '
                      'o Portal da Câmara Municipal de Jataí desconectou seu '
                      'usuário para que sua manifestação não tenha nenhuma '
                      'relação com você. '
                      'Assim podemos garantir que sua denûncia é anônima '
                      'e não mantemos registro sobre você.<br>'
                      'Para voltar a utilizar das funções que você possuia '
                      'ao estar logado, é só se conectar novamente.'),
                    css_class="alert-info"))

        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            *rows,
            actions=form_actions(label=_('Enviar'))
        )
Esempio n. 11
0
    def __init__(self, *args, **kwargs):

        self.user_session = kwargs.pop('user_session', None)

        row_pwd = to_row([('email', 4), ('first_name', 3), ('last_name', 3),
                          ('is_active', 2), ('new_password1', 4),
                          ('new_password2', 4),
                          (FieldWithButtons(
                              'token',
                              StrictButton('Renovar',
                                           id="renovar-token",
                                           css_class="btn-outline-primary")),
                           4), ('areatrabalho', 6), ('autor', 6),
                          ('groups', 12), ('user_permissions', 12)])

        self.helper = SaplFormHelper()
        self.helper.layout = SaplFormLayout(row_pwd)
        super(CmjUserAdminForm, self).__init__(*args, **kwargs)

        if self.instance.pk:

            self.fields['token'].initial = self.instance.auth_token.key

            oper_at = self.instance.operadorareatrabalho_set.first()
            if oper_at:
                self.fields['areatrabalho'].initial = oper_at.areatrabalho.id

            oper_aut = self.instance.operadorautor_set.first()
            if oper_aut:
                self.fields['autor'].initial = oper_aut.autor.id

            self.fields['autor'].choices = [('', '----------')] + [
                (a.id, '{} - {}'.format(a, a.tipo))
                for a in Autor.objects.all().order_by('nome')
            ]

            self.fields['groups'].widget = forms.CheckboxSelectMultiple()
            self.fields['groups'].choices = [
                (g.id, g) for g in self.instance.groups.all().order_by('name')
            ] + [(g.id, g) for g in Group.objects.exclude(
                user=self.instance).order_by('name')]

            self.fields[
                'user_permissions'].widget = forms.CheckboxSelectMultiple()
            self.fields['user_permissions'].choices = [
                (p.id, p)
                for p in self.instance.user_permissions.all().order_by(
                    'content_type__app_label', 'content_type__model',
                    'codename')
            ] + [(p.id, p) for p in Permission.objects.exclude(
                user=self.instance).order_by('content_type__app_label',
                                             'content_type__model', 'codename')
                 ]
Esempio n. 12
0
    def __init__(self, *args, **kwargs):

        rows = [
            Div(
                to_column((to_row([
                    ('titulo', 8),
                    (Div(css_class="g-recaptcha" if not settings.DEBUG else '',
                         data_sitekey=settings.GOOGLE_RECAPTCHA_SITE_KEY), 4),
                    ('descricao', 12),
                    (Alert(_("""<strong>Aviso</strong><br>
                            Ao enviar uma Denúncia Anônima, você receberá
                            um link para acompanhar sua denúncia.<br>
                            Só será
                            possível acompanhar e interagir com a ouvidoria
                            através deste link.<br>
                            Veja que este link será como um código 
                            privativo seu sem sua identificação, 
                            no entanto, se você compartilhar esse link, 
                            quem possuí-lo verá sua denúncia 
                            e poderá interagir também.
                            """),
                           css_class="alert-warning",
                           dismiss=False), 12)
                ]), 12)),

                # to_column((
                #    to_row([('areatrabalho_parlamentar', 12)]),
                #    4)),
                css_class="row")
        ]

        if 'logged_user' in kwargs['initial'] and \
                kwargs['initial']['logged_user']:
            rows.insert(
                0,
                Alert(_(
                    '<strong>Atenção, você foi desconectado!!!</strong><br>'
                    'Ao escolher fazer uma denúncia anônima, '
                    'o Portal da Câmara Municipal de Jataí desconectou seu '
                    'usuário para que sua manifestação não tenha nenhuma '
                    'relação com você. '
                    'Assim podemos garantir que sua denûncia é anônima '
                    'e não mantemos registro sobre você.<br>'
                    'Para voltar a utilizar das funções que você possuia '
                    'ao estar logado, é só se conectar novamente.'),
                      css_class="alert-info"))

        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            *rows, actions=form_actions(label=_('Enviar')))
Esempio n. 13
0
    def __init__(self, *args, **kwargs):

        rows = to_row([('descricao', 12), ('anexo', 12)])

        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            *rows,
            actions=form_actions(label=_('Enviar'))
        )

        self.instance.owner = kwargs['initial']['owner']
        self.instance.solicitacao = kwargs['initial']['solicitacao']
Esempio n. 14
0
    def __init__(self, *args, **kwargs):

        row1 = to_row([('parlamentar', 12)])
        row2 = to_row([('data', 6), ('hora', 6)])
        row3 = to_row([('upload_anexo', 6)])
        row4 = to_row([('tipo_ausencia', 12)])
        row5 = to_row([('ausencia', 12)])
        row6 = to_row([('materias_do_expediente', 12)])
        row7 = to_row([('materias_da_ordem_do_dia', 12)])
        row8 = to_row([('observacao', 12)])

        self.helper = SaplFormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Justificativa de Ausência'), row1, row2, row3, row4,
                     row5, row6, row7, row8))
        q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria'])
        ordens = OrdemDia.objects.filter(q)
        expedientes = ExpedienteMateria.objects.filter(q)
        legislatura = kwargs['initial']['sessao_plenaria'].legislatura
        mandato = Mandato.objects.filter(
            legislatura=legislatura).order_by('parlamentar__nome_parlamentar')
        parlamentares = [m.parlamentar for m in mandato]

        super(JustificativaAusenciaForm, self).__init__(*args, **kwargs)

        presencas = SessaoPlenariaPresenca.objects.filter(q).order_by(
            'parlamentar__nome_parlamentar')
        presencas_ordem = PresencaOrdemDia.objects.filter(q).order_by(
            'parlamentar__nome_parlamentar')

        presentes = [p.parlamentar for p in presencas]
        presentes_ordem = [p.parlamentar for p in presencas_ordem]

        presentes_ambos = set(presentes).intersection(set(presentes_ordem))
        setFinal = set(parlamentares) - presentes_ambos

        self.fields['materias_do_expediente'].choices = [(e.id, e.materia)
                                                         for e in expedientes]

        self.fields['materias_da_ordem_do_dia'].choices = [(o.id, o.materia)
                                                           for o in ordens]

        self.fields['parlamentar'].choices = [("0", "------------")
                                              ] + [(p.id, p) for p in setFinal]
Esempio n. 15
0
    def __init__(self, *args, **kwargs):

        row1 = to_row([('tipo_de_retirada', 5), ('parlamentar', 4),
                       ('data', 3)])
        row2 = to_row([('ordem', 6), ('expediente', 6)])
        row3 = to_row([('observacao', 12)])

        self.helper = SaplFormHelper()
        self.helper.layout = SaplFormLayout(
            Fieldset(_('Retirada de Pauta'), row1, row2, row3))

        q = Q(sessao_plenaria=kwargs['initial']['sessao_plenaria'])
        ordens = OrdemDia.objects.filter(q)
        expedientes = ExpedienteMateria.objects.filter(q)
        retiradas_ordem = [
            r.ordem for r in RetiradaPauta.objects.filter(q, ordem__in=ordens)
        ]
        retiradas_expediente = [
            r.expediente
            for r in RetiradaPauta.objects.filter(q,
                                                  expediente__in=expedientes)
        ]
        setOrdem = set(ordens) - set(retiradas_ordem)
        setExpediente = set(expedientes) - set(retiradas_expediente)

        super(RetiradaPautaForm, self).__init__(*args, **kwargs)

        if self.instance.pk:
            setOrdem = set(ordens)
            setExpediente = set(expedientes)

        presencas = SessaoPlenariaPresenca.objects.filter(q).order_by(
            'parlamentar__nome_parlamentar')
        presentes = [p.parlamentar for p in presencas]

        self.fields['expediente'].choices = [(None, "------------")] + [
            (e.id, e.materia) for e in setExpediente
        ]
        self.fields['ordem'].choices = [(None, "------------")] + [
            (o.id, o.materia) for o in setOrdem
        ]
        self.fields['parlamentar'].choices = [(None, "------------")] + [
            (p.id, p) for p in presentes
        ]
Esempio n. 16
0
    def __init__(self, *args, **kwargs):
        yaml_layout = kwargs.pop('yaml_layout')

        q_field = Div(
            FieldWithButtons(
                Field('q',
                      placeholder=_('Filtrar Lista'),
                      autocomplete='off',
                      type='search',
                      onkeypress='atualizaContatos(event)'),
                StrictButton(_('Filtrar'),
                             css_class='btn-outline-primary',
                             type='button',
                             onclick='atualizaContatos(event)')),
            Div(css_class='form-group-contato-search'))

        q = [
            _('Seleção de Contatos'),
            [(q_field, 5),
             (Div(Field('contatos'), css_class='form-group-contatos'), 7)]
        ]
        yaml_layout.append(q)

        self.helper = FormHelper()
        self.helper.field_class = 'controls'
        self.helper.layout = SaplFormLayout(*yaml_layout)

        super(GrupoDeContatosForm, self).__init__(*args, **kwargs)

        self.fields['q'].help_text = _('Digite parte do nome, nome social ou '
                                       'apelido do Contato que você procura.')

        self.fields['contatos'].widget = forms.CheckboxSelectMultiple()

        self.fields['contatos'].queryset = Contato.objects.all()

        self.fields['contatos'].choices = [
            (c.pk, c) for c in self.instance.contatos.order_by('nome')]\
            if self.instance.pk else []

        self.fields['contatos'].help_text = _(
            'Procure por Contatos na caixa de buscas e arraste '
            'para esta caixa os Contatos interessados neste Processo.')
Esempio n. 17
0
    def __init__(self, *args, **kwargs):

        row = Div(
            to_column((to_row([
                ('titulo', 10),
                ('tipo', 2),
                ('descricao', 12),
            ]), 12)),
            # to_column((
            #    to_row([('areatrabalho_parlamentar', 12)]),
            #    4)),
            css_class="row")

        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(
            row, actions=form_actions(label=_('Enviar')))

        self.instance.owner = kwargs['initial']['owner']
Esempio n. 18
0
    def __init__(self, *args, **kwargs):

        super(CmjUserChangeForm, self).__init__(*args, **kwargs)

        row_pwd = [
            to_row([('old_password', 12)]),
            to_row([('new_password1', 6), ('new_password2', 6)])
        ]

        row_pwd = []
        if self.instance.pwd_created:
            row_pwd.append(to_row([('old_password', 12)]))

        row_pwd += [to_row([('new_password1', 6), ('new_password2', 6)])]

        rows = to_row([
            (Fieldset(
                _('Cadastro Básico'),
                to_row([('first_name', 5), ('last_name', 4),
                        ('be_notified_by_email', 3), ('avatar', 7),
                        ('cropping', 5)])), 8),
            (Fieldset(
                _('Definição de senha'), *row_pwd,
                Alert(_('Após a definição e/ou alteração de senha, '
                        'sua tela será redirecionada para a tela de Login '
                        'para que você faça uma nova autenticação.'),
                      css_class="alert-info",
                      dismiss=False)), 4)
        ])

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(rows)
        self.helper.include_media = False

        if not self.instance.pwd_created:
            self.fields['old_password'].widget = forms.HiddenInput()

        avatar = self.fields['avatar'].widget
        avatar.attrs.update(get_attrs(self.instance.avatar, 'avatar'))
        if 'class' in avatar.attrs:
            avatar.attrs.pop('class')
Esempio n. 19
0
    def __init__(self, *args, **kwargs):

        autor_related = Div(
            FieldWithButtons(
                Field('q',
                      placeholder=_('Pesquisar por possíveis autores para '
                                    'o Tipo de Autor selecionado.')),
                StrictButton(
                    _('Filtrar'), css_class='btn-default btn-filtrar-autor',
                    type='button')),
            css_class='hidden',
            data_action='create',
            data_application='AutorSearch',
            data_field='autor_related')

        autor_select = Row(to_column(('tipo', 3)),
                           Div(to_column(('nome', 5)),
                               to_column(('cargo', 4)),
                               css_class="div_nome_cargo"),
                           to_column((autor_related, 9)),
                           to_column((Div(
                               Field('autor_related'),
                               css_class='radiogroup-autor-related hidden'),
                               12)))

        row2 = Row(to_column((InlineRadios('action_user'), 8)),
                   to_column((Div('username'), 4)))

        row3 = Row(to_column(('senha', 3)),
                   to_column(('senha_confirma', 3)),
                   to_column(('email', 3)),
                   to_column(('confirma_email', 3)),
                   css_class='new_user_fields hidden')

        row4 = Row(to_column((
            Div(InlineRadios('status_user'),
                css_class='radiogroup-status hidden'),
            12))) if 'status_user' in self.Meta.fields else None

        controle_acesso = [row2, row3]

        if row4:
            controle_acesso.append(row4)
        controle_acesso = Fieldset(_('Controle de Acesso do Autor'),
                                   *controle_acesso)

        self.helper = FormHelper()
        self.helper.layout = SaplFormLayout(autor_select, controle_acesso)

        super(AutorForm, self).__init__(*args, **kwargs)

        self.fields['action_user'].initial = 'N'

        if self.instance.pk:
            if self.instance.autor_related:
                self.fields['autor_related'].choices = [
                    (self.instance.autor_related.pk,
                     self.instance.autor_related)]

                self.fields['q'].initial = ''

            self.fields['autor_related'].initial = self.instance.autor_related

            if self.instance.user:
                self.fields['username'].initial = getattr(
                    self.instance.user,
                    get_user_model().USERNAME_FIELD)
                self.fields['action_user'].initial = 'A'

                self.fields['username'].label = string_concat(
                    self.fields['username'].label,
                    ' (', getattr(
                        self.instance.user,
                        get_user_model().USERNAME_FIELD), ')')

                if 'status_user' in self.Meta.fields:
                    self.fields['status_user'].initial = 'R'
                    self.fields['status_user'].label = string_concat(
                        self.fields['status_user'].label,
                        ' (', getattr(
                            self.instance.user,
                            get_user_model().USERNAME_FIELD), ')')

            self.fields['username'].widget.attrs.update({
                'data': getattr(
                    self.instance.user,
                    get_user_model().USERNAME_FIELD)
                if self.instance.user else ''})

            if 'status_user' in self.Meta.fields:
                self.fields['status_user'].widget.attrs.update({
                    'data': getattr(
                        self.instance.user,
                        get_user_model().USERNAME_FIELD)
                    if self.instance.user else ''})
Esempio n. 20
0
    def __init__(self, *args, **kwargs):
        yaml_layout = kwargs.pop('yaml_layout')

        q_field = Div(
            FieldWithButtons(
                Field('q',
                      placeholder=_('Filtrar Lista'),
                      autocomplete='off',
                      type='search',
                      onkeypress='atualizaContatos(event)'),
                StrictButton(_('Filtrar'),
                             css_class='btn-outline-primary',
                             type='button',
                             onclick='atualizaContatos(event)')),
            Div(css_class='form-group-contato-search '
                'controls-radio-checkbox'))

        q = [
            _('Seleção de Contatos'),
            [(q_field, 5),
             (Div(Field('contatos'), css_class='form-group-contatos'), 7)]
        ]
        yaml_layout.append(q)

        for fieldset in yaml_layout:
            for linha in fieldset:
                for idx, field in enumerate(linha):
                    if field[0] == 'importancia':
                        linha[idx] = (InlineRadios('importancia'), field[1])

        self.helper = FormHelper()

        self.helper.field_class = 'controls'
        self.helper.layout = SaplFormLayout(*yaml_layout)

        super(ProcessoForm, self).__init__(*args, **kwargs)

        if not self.instance.pk:
            self.fields['data'].initial = date.today()

        self.fields['q'].help_text = _('Digite parte do nome, nome social ou '
                                       'apelido do Contato que você procura.')

        self.fields['topicos'].widget = forms.SelectMultiple(
            attrs={'size': '8'})
        self.fields['topicos'].queryset = TopicoProcesso.objects.all()

        self.fields['assuntos'].widget = forms.SelectMultiple(
            attrs={'size': '8'})
        self.fields['assuntos'].queryset = AssuntoProcesso.objects.filter(
            workspace=self.initial['workspace'])

        # Utilizando template bootstrap3 customizado
        self.fields['importancia'].widget = forms.RadioSelect()
        self.fields['importancia'].choices = IMPORTANCIA_CHOICE

        self.fields['status'].widget = forms.RadioSelect()
        # self.fields['status'].inline_class = True
        self.fields['status'].choices = [
            (ass.pk, ass) for ass in StatusProcesso.objects.order_by('id')
        ]

        self.fields['classificacoes'].widget = forms.CheckboxSelectMultiple()
        # self.fields['classificacoes'].inline_class = True

        self.fields['contatos'].widget = forms.CheckboxSelectMultiple()
        self.fields['contatos'].queryset = Contato.objects.all()
        self.fields['contatos'].choices = [
            (c.pk, c) for c in self.instance.contatos.order_by('nome')]\
            if self.instance.pk else []
        self.fields['contatos'].help_text = _(
            'Procure por Contatos na caixa de buscas e arraste '
            'para esta caixa os Contatos interessados neste Processo.')