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. 4
      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)
class VideForm(DispositivoSearchFragmentForm):
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())
label=Vide._meta.get_field(
'dispositivo_ref').verbose_name,
queryset=Dispositivo.objects.all())
tipo = forms.ModelChoiceField(
label=TipoVide._meta.verbose_name,
queryset=TipoVide.objects.all(),
required=True,
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(),
required=False)
pk = forms.IntegerField(widget=forms.HiddenInput(), required=False)
class Meta:
model = Vide
@ -371,26 +377,34 @@ class VideForm(DispositivoSearchFragmentForm):
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(
'tipo',
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(
'texto',
placeholder=_('Texto Adicional ao Vide')), 12))),
Row(to_column((buttons, 12))))
kwargs['fields_search'] = fields_search = Div()
placeholder=_('Texto Adicional ao Vide')), 12)))))
self.helper = FormHelper()
self.helper.layout = Layout(
Div(
Div(HTML(_('Vides')), css_class='panel-heading'),
Div(
to_column((
fields_form, 4)),
to_column((
fields_search, 8)), css_class="panel-body"
to_column((fields_form[0], 6)),
to_column((fields_form[1], 6)),
css_class="panel-body"
),
css_class="panel panel-primary"
)
@ -398,6 +412,12 @@ class VideForm(DispositivoSearchFragmentForm):
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):

10
compilacao/views.py

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

2
static/js/compilacao.js

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

8
static/js/compilacao_notas.js

@ -23,9 +23,11 @@ function onEventsDneExec(pk, model) {
});
}
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();
if (id_dispositivo == null) { // trata-se de um vide
$('#id_dispositivo_ref').remove();
//$('#id_dispositivo_ref').remove();
id_dispositivo = $('#id_dispositivo_base').val();
model='vide';
}

4
static/js/compilacao_view.js

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