Browse Source

Merge pull request #304 from interlegis/compilacao

Refatora Vide para trabalhar com DispositivoSearch
pull/308/head
Leandro Roberto da Silva 9 years ago
parent
commit
aca3849929
  1. 48
      compilacao/forms.py
  2. 10
      compilacao/views.py
  3. 2
      static/js/compilacao.js
  4. 8
      static/js/compilacao_notas.js
  5. 10
      static/js/compilacao_view.js
  6. 54
      templates/compilacao/layout/dispositivo_checkbox_old.html

48
compilacao/forms.py

@ -329,22 +329,28 @@ class DispositivoSearchFragmentForm(ModelForm):
super(DispositivoSearchFragmentForm, self).__init__(*args, **kwargs) super(DispositivoSearchFragmentForm, self).__init__(*args, **kwargs)
class VideForm(DispositivoSearchFragmentForm): class VideForm(ModelForm):
dispositivo_base = forms.ModelChoiceField( dispositivo_base = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(), queryset=Dispositivo.objects.all(),
widget=forms.HiddenInput()) widget=forms.HiddenInput())
dispositivo_ref = forms.ModelChoiceField( dispositivo_ref = forms.ModelChoiceField(
queryset=Dispositivo.objects.all(), label=Vide._meta.get_field(
widget=forms.HiddenInput()) 'dispositivo_ref').verbose_name,
queryset=Dispositivo.objects.all())
tipo = forms.ModelChoiceField( tipo = forms.ModelChoiceField(
label=TipoVide._meta.verbose_name, label=TipoVide._meta.verbose_name,
queryset=TipoVide.objects.all(), queryset=TipoVide.objects.all(),
required=True, required=True,
error_messages=error_messages) error_messages=error_messages)
texto = forms.CharField(
required=False,
label=Vide._meta.get_field(
'texto').verbose_name,
widget=forms.Textarea())
pk = forms.IntegerField(widget=forms.HiddenInput(), pk = forms.IntegerField(widget=forms.HiddenInput(), required=False)
required=False)
class Meta: class Meta:
model = Vide model = Vide
@ -371,26 +377,34 @@ class VideForm(DispositivoSearchFragmentForm):
css_class='btn-primary pull-right') css_class='btn-primary pull-right')
) )
fields_form = Div( dispositivo_ref = Field(
'dispositivo_ref',
data_sapl_ta='DispositivoSearch',
data_field='dispositivo_ref',
data_type_selection='radio',
template="compilacao/layout/dispositivo_radio.html")
fields_form = []
fields_form.append(Div(
Row(to_column((Field( Row(to_column((Field(
'tipo', 'tipo',
placeholder=_('Selecione um Tipo de Vide')), 12))), placeholder=_('Selecione um Tipo de Vide')), 12))),
Row(to_column((dispositivo_ref, 12))),
Row(to_column((buttons, 12)))))
fields_form.append(Div(
Row(to_column((Field( Row(to_column((Field(
'texto', 'texto',
placeholder=_('Texto Adicional ao Vide')), 12))), placeholder=_('Texto Adicional ao Vide')), 12)))))
Row(to_column((buttons, 12))))
kwargs['fields_search'] = fields_search = Div()
self.helper = FormHelper() self.helper = FormHelper()
self.helper.layout = Layout( self.helper.layout = Layout(
Div( Div(
Div(HTML(_('Vides')), css_class='panel-heading'), Div(HTML(_('Vides')), css_class='panel-heading'),
Div( Div(
to_column(( to_column((fields_form[0], 6)),
fields_form, 4)), to_column((fields_form[1], 6)),
to_column(( css_class="panel-body"
fields_search, 8)), css_class="panel-body"
), ),
css_class="panel panel-primary" css_class="panel panel-primary"
) )
@ -398,6 +412,12 @@ class VideForm(DispositivoSearchFragmentForm):
super(VideForm, self).__init__(*args, **kwargs) super(VideForm, self).__init__(*args, **kwargs)
self.fields['dispositivo_ref'].choices = []
if self.instance and self.instance.dispositivo_ref_id:
self.fields['dispositivo_ref'].choices = [
(self.instance.dispositivo_ref.pk,
self.instance.dispositivo_ref)]
class PublicacaoForm(ModelForm): class PublicacaoForm(ModelForm):

10
compilacao/views.py

@ -1,6 +1,6 @@
import sys
from collections import OrderedDict from collections import OrderedDict
from datetime import datetime, timedelta from datetime import datetime, timedelta
import sys
from braces.views import FormMessagesMixin from braces.views import FormMessagesMixin
from django import forms from django import forms
@ -36,6 +36,7 @@ from compilacao.models import (Dispositivo, Nota,
from compilacao.utils import DISPOSITIVO_SELECT_RELATED from compilacao.utils import DISPOSITIVO_SELECT_RELATED
from crud.base import Crud, CrudListView, make_pagination from crud.base import Crud, CrudListView, make_pagination
TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota')
TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide')
TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao')
@ -400,8 +401,7 @@ class VideMixin(DispositivoSuccessUrlMixin):
def get_initial(self): def get_initial(self):
dispositivo_base = get_object_or_404( dispositivo_base = get_object_or_404(
Dispositivo, pk=self.kwargs.get('dispositivo_id')) Dispositivo, pk=self.kwargs.get('dispositivo_id'))
initial = {'dispositivo_base': dispositivo_base, }
initial = {'dispositivo_base': dispositivo_base}
if 'pk' in self.kwargs: if 'pk' in self.kwargs:
initial['pk'] = self.kwargs.get('pk') initial['pk'] = self.kwargs.get('pk')
@ -440,7 +440,7 @@ class VideCreateView(VideMixin, CreateView):
self.object = None self.object = None
form = self.get_form() form = self.get_form()
return self.render_to_response(self.get_context_data(form=form)) return self.render_to_response(self.get_context_data(form=form))
"""
def get_form_kwargs(self): def get_form_kwargs(self):
kwargs = super(VideCreateView, self).get_form_kwargs() kwargs = super(VideCreateView, self).get_form_kwargs()
@ -451,7 +451,7 @@ class VideCreateView(VideMixin, CreateView):
choice_model_type_foreignkey_in_extenal_views choice_model_type_foreignkey_in_extenal_views
}) })
return kwargs return kwargs"""
class VideEditView(VideMixin, UpdateView): class VideEditView(VideMixin, UpdateView):

2
static/js/compilacao.js

@ -57,7 +57,7 @@ function DispostivoSearch(opts) {
var dpts = field.find('input'); var dpts = field.find('input');
dpts.off() dpts.off()
dpts.attr('type', 'hidden'); dpts.attr('type', 'hidden');
$('<a class="text-danger" href="#">') $('<a class="text-danger">')
.insertBefore(dpts) .insertBefore(dpts)
.append($('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>')) .append($('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>'))
.on('click', function() { .on('click', function() {

8
static/js/compilacao_notas.js

@ -23,9 +23,11 @@ function onEventsDneExec(pk, model) {
}); });
} }
else if (model == 'vide') { else if (model == 'vide') {
configFormSearchTA('#dne'+pk, 'radio', 'select_for_vide');
onChangeParamTA(); DispostivoSearch({
'url_form': '/ta/search_form',
'text_button': 'Definir Dispositivo'
});
} }
} }
@ -38,7 +40,7 @@ var onSubmitEditNVForm = function(event) {
var id_dispositivo = $('#id_dispositivo').val(); var id_dispositivo = $('#id_dispositivo').val();
if (id_dispositivo == null) { // trata-se de um vide if (id_dispositivo == null) { // trata-se de um vide
$('#id_dispositivo_ref').remove(); //$('#id_dispositivo_ref').remove();
id_dispositivo = $('#id_dispositivo_base').val(); id_dispositivo = $('#id_dispositivo_base').val();
model='vide'; model='vide';
} }

10
static/js/compilacao_view.js

@ -136,9 +136,13 @@ $(document).ready(function() {
setTimeout(function() { setTimeout(function() {
var href = location.href.split('#') var href = location.href.split('#')
if (href.length == 2) { if (href.length == 2) {
$('html, body').animate({ try {
scrollTop: $('#dptt' + href[1] ).offset().top - window.innerHeight / 9 $('html, body').animate({
}, 0); scrollTop: $('#dptt' + href[1] ).offset().top - window.innerHeight / 9
}, 0);
}
catch(err) {
}
} }
}, 100); }, 100);

54
templates/compilacao/layout/dispositivo_checkbox_old.html

@ -1,54 +0,0 @@
{% load crispy_forms_filters %}
{% load i18n compilacao_filters common_tags%}
<div class="controls lista-dispositvo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
{% include 'bootstrap/layout/field_errors_block.html' %}
{% for choice, dpt in field.field.choices %}
{% ifchanged dpt.ta%}
{% if not forloop.first %}</ul>{% endif %}
<ul id="ta{{dpt.ta.pk}}">
<li class="ta_title">{{dpt.ta}}</li>
{% endifchanged %}
{% if dpt.is_relative_auto_insert %}
<li>
<div class="iteminput">
<input type="{{field.field.widget.attrs|lookup:"data-type-selection"}}" name="{{ field.html_name }}" id="dpt{{dpt.pk}}" value="{{dpt.pk}}" {% if choice in field.value or choice|stringformat:"s" in field.value or choice|stringformat:"s" == field.value|stringformat:"s" %} checked="checked"{% endif %} />
</div>
<div class="itemlabel">
<label for="r{{dpt.dispositivo_pai.pk}}">{{dpt.dispositivo_pai.rotulo|safe}} - {{dpt.texto|safe}}</label>
<a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca" title="{% trans 'Abrir Texto deste Dispositivo'%}">{% nomenclatura_heranca dpt 1 1 %}</a>
</div>
</li>
{% elif not dpt.tipo_dispositivo.dispositivo_de_articulacao and not dpt.is_relative_auto_insert %}
<li>
<div class="iteminput">
<input type="{{field.field.widget.attrs|lookup:"data-type-selection"}}" name="{{ field.html_name }}" id="dpt{{dpt.pk}}" value="{{dpt.pk}}" {% if choice in field.value or choice|stringformat:"s" in field.value or choice|stringformat:"s" == field.value|stringformat:"s" %} checked="checked"{% endif %} />
</div>
<div class="itemlabel">
<label for="r{{dpt.pk}}">{{dpt.rotulo|safe}} - {{dpt.texto|safe}}</label>
<a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca" title="{% trans 'Abrir Texto deste Dispositivo'%}">{% nomenclatura_heranca dpt 1 1 %}</a>
</div>
</li>
{% elif dpt.tipo_dispositivo.dispositivo_de_articulacao%}
<li>
<div class="iteminput">
<input type="{{field.field.widget.attrs|lookup:"data-type-selection"}}" name="{{ field.html_name }}" id="dpt{{dpt.pk}}" value="{{dpt.pk}}" {%if choice in field.value or choice|stringformat:"s" in field.value or choice|stringformat:"s" == field.value|stringformat:"s" %} checked="checked"{% endif %} />
</div>
<div class="itemlabel">
<label for="r{{dpt.pk}}">{{dpt.rotulo|safe}} - {% if dpt.tipo_dispositivo.dispositivo_de_articulacao %}{{dpt.dispositivos_filhos_set.all.first.texto|safe}}{% else %}{{dpt.texto|safe}}{% endif %}</label>
<a target="_blank" href="{% url 'compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca" title="{% trans 'Abrir Texto deste Dispositivo'%}">{% nomenclatura_heranca dpt 1 1 %}</a>
</div>
</li>
{% endif%}
{% if forloop.last %}</ul>{% endif %}
{% endfor %}
{% include 'bootstrap/layout/help_text.html' %}
</div>
Loading…
Cancel
Save