Browse Source

Multiplos despachos iniciais

pull/2876/head
Cesar Carvalho 7 years ago
parent
commit
fc9f559e3f
  1. 50
      sapl/materia/forms.py
  2. 6
      sapl/materia/urls.py
  3. 46
      sapl/materia/views.py
  4. 18
      sapl/templates/materia/despachoinicial_list.html
  5. 12
      sapl/templates/materia/despachoinicial_multicreate_form.html

50
sapl/materia/forms.py

@ -5,6 +5,7 @@ import os
from crispy_forms.bootstrap import Alert, InlineRadios from crispy_forms.bootstrap import Alert, InlineRadios
from crispy_forms.layout import (HTML, Button, Column, Div, Field, Fieldset, from crispy_forms.layout import (HTML, Button, Column, Div, Field, Fieldset,
Layout, Row) Layout, Row)
from crispy_forms.helper import FormHelper
from django import forms from django import forms
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
@ -1114,27 +1115,56 @@ def filtra_tramitacao_destino_and_status(status, destino):
'materia_id', flat=True) 'materia_id', flat=True)
class DespachoInicialForm(ModelForm): class DespachoInicialForm(forms.Form):
comissao = forms.ModelChoiceField( comissao = forms.ModelMultipleChoiceField(
queryset=Comissao.objects.filter(ativa=True)) queryset=Comissao.objects.filter(ativa=True),
widget=forms.CheckboxSelectMultiple())
class Meta: class Meta:
model = DespachoInicial model = DespachoInicial
fields = ['comissao'] fields = ['comissao']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
from crispy_forms.layout import Submit, Layout, Field
from crispy_forms.bootstrap import FormActions
self.fields['comissao'].label = 'Comissões'
self.helper = FormHelper(self)
self.helper.form_method = 'POST'
self.helper.layout = Layout(
Div(
Div('comissao', css_class="col-md-12"),
Div(FormActions(
Submit('salvar', 'Salvar', css_class='btn btn-primary ml-5 mt-3 float-left'),
)
),
css_class='row',
))
def clean(self): def clean(self):
super(DespachoInicialForm, self).clean() super(DespachoInicialForm, self).clean()
comissoes = self.cleaned_data.get('comissao')
if not comissoes:
msg = _('Você deve escolher pelo menos uma comissão.')
raise ValidationError(msg)
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
if DespachoInicial.objects.filter( errors = []
materia=self.instance.materia, for comissao in comissoes:
comissao=self.cleaned_data['comissao'], if DespachoInicial.objects.filter(
).exclude(pk=self.instance.pk).exists(): materia=self.initial['materia'],
msg = _('Já existe um Despacho cadastrado para %s' % comissao=comissao,
self.cleaned_data['comissao']) ).exists():
raise ValidationError(msg) msg = _('Já existe um Despacho cadastrado para %s' %
comissao)
errors.append(msg)
if errors:
raise ValidationError(errors)
return self.cleaned_data return self.cleaned_data

6
sapl/materia/urls.py

@ -26,7 +26,8 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
TramitacaoEmLoteView, UnidadeTramitacaoCrud, TramitacaoEmLoteView, UnidadeTramitacaoCrud,
proposicao_texto, recuperar_materia, proposicao_texto, recuperar_materia,
ExcluirTramitacaoEmLoteView, RetornarProposicao, ExcluirTramitacaoEmLoteView, RetornarProposicao,
MateriaPesquisaSimplesView) MateriaPesquisaSimplesView,
DespachoInicialMultiCreateView)
from sapl.norma.views import NormaPesquisaSimplesView from sapl.norma.views import NormaPesquisaSimplesView
from sapl.protocoloadm.views import (FichaPesquisaAdmView, FichaSelecionaAdmView) from sapl.protocoloadm.views import (FichaPesquisaAdmView, FichaSelecionaAdmView)
@ -136,6 +137,9 @@ urlpatterns_proposicao = [
name='proposicao_texto'), name='proposicao_texto'),
url(r'^proposicao/(?P<pk>\d+)/retornar', RetornarProposicao.as_view(), url(r'^proposicao/(?P<pk>\d+)/retornar', RetornarProposicao.as_view(),
name='retornar-proposicao'), name='retornar-proposicao'),
url(r'^materia/(?P<pk>\d+)/despachoinicialmulti/create', DespachoInicialMultiCreateView.as_view(),
name='despacho-inicial-multi'),
] ]
urlpatterns_sistema = [ urlpatterns_sistema = [

46
sapl/materia/views.py

@ -1490,14 +1490,56 @@ class AutoriaMultiCreateView(PermissionRequiredForAppCrudMixin, FormView):
return FormView.form_valid(self, form) return FormView.form_valid(self, form)
class DespachoInicialMultiCreateView(PermissionRequiredForAppCrudMixin, FormView):
app_label = sapl.materia.apps.AppConfig.label
form_class = DespachoInicialForm
template_name = 'materia/despachoinicial_multicreate_form.html'
# @classmethod
# def get_url_regex(cls):
# return r'^(?P<pk>\d+)/%s/multicreate' % cls.model._meta.model_name
@property
def layout_key(self):
return None
def get_initial(self):
initial = super().get_initial()
self.materia = MateriaLegislativa.objects.get(id=self.kwargs['pk'])
initial['materia'] = self.materia
return initial
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = '%s <small>(%s)</small>' % (
_('Adicionar Vários Despachos'), self.materia)
context['root_pk']= self.kwargs['pk']
context['subnav_template_name'] = 'materia/subnav.yaml'
return context
def get_success_url(self):
messages.add_message(
self.request, messages.SUCCESS,
_('Despachos adicionados com sucesso.'))
return reverse(
'sapl.materia:despachoinicial_list', kwargs={'pk': self.materia.pk})
def form_valid(self, form):
comissoes_selecionadas = form.cleaned_data['comissao']
for comissao in comissoes_selecionadas:
DespachoInicial.objects.create(materia=self.materia, comissao=comissao)
return FormView.form_valid(self, form)
class DespachoInicialCrud(MasterDetailCrud): class DespachoInicialCrud(MasterDetailCrud):
model = DespachoInicial model = DespachoInicial
parent_field = 'materia' parent_field = 'materia'
help_topic = 'despacho_autoria' help_topic = 'despacho_autoria'
public = [RP_LIST, RP_DETAIL] public = [RP_LIST, RP_DETAIL]
class CreateView(MasterDetailCrud.CreateView): # class CreateView(MasterDetailCrud.CreateView):
form_class = DespachoInicialForm # form_class = DespachoInicialForm
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = DespachoInicialForm form_class = DespachoInicialForm

18
sapl/templates/materia/despachoinicial_list.html

@ -0,0 +1,18 @@
{% extends "crud/list.html" %}
{% load i18n common_tags crispy_forms_tags%}
{% block extra_js %}
<script language="Javascript">
$(document).ready(function() {
let botao_add = $(".context-actions").children().last().children().first();
href = botao_add.attr('href');
let materia_id = href.split("/")[2];
let new_url = '/materia/' + materia_id + '/despachoinicialmulti/create';
console.log(new_url);
href = botao_add.attr('href', new_url);
let tittle = $(".result-count").children().first().children().first().children().first().children().first().attr('tittle');
console.log(title);
});
</script>
{% endblock %}

12
sapl/templates/materia/despachoinicial_multicreate_form.html

@ -0,0 +1,12 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% block extra_js %}
<script language="Javascript">
$(document).ready(function() {
console.log("OI");
});
</script>
{% endblock %}
Loading…
Cancel
Save