mirror of https://github.com/interlegis/sapl.git
Browse Source
Criação preliminar do form de audiência Correções na model Adição das urls do Crud Adição da view inicial de audiênciapull/1743/head
5 changed files with 139 additions and 23 deletions
@ -0,0 +1,28 @@ |
|||||
|
from django import forms |
||||
|
from django.contrib.contenttypes.models import ContentType |
||||
|
from django.core.exceptions import ValidationError |
||||
|
from django.db import transaction |
||||
|
from django.db.models import Q |
||||
|
from django.utils.translation import ugettext_lazy as _ |
||||
|
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica |
||||
|
|
||||
|
class AudienciaForm(forms.ModelForm): |
||||
|
|
||||
|
class Meta: |
||||
|
model = AudienciaPublica |
||||
|
fields = '__all__' |
||||
|
|
||||
|
def clean(self): |
||||
|
super(AudienciaForm, self).clean() |
||||
|
if self.cleaned_data['hora_inicio'] and self.cleaned_data['hora_fim']: |
||||
|
if (self.cleaned_data['hora_fim'] < |
||||
|
self.cleaned_data['hora_inicio']): |
||||
|
msg = _('A hora de fim não pode ser anterior a hora de ínicio') |
||||
|
raise ValidationError(msg) |
||||
|
|
||||
|
return self.cleaned_data |
||||
|
|
||||
|
@transaction.atomic() |
||||
|
def save(self, commit=True): |
||||
|
audiencia = super(AudienciaForm, self).save(commit) |
||||
|
return audiencia |
||||
@ -0,0 +1,62 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Generated by Django 1.9.13 on 2018-03-01 17:01 |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
import sapl.audiencia.models |
||||
|
import sapl.utils |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
initial = True |
||||
|
|
||||
|
dependencies = [ |
||||
|
('materia', '0025_auto_20180221_1649'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='AudienciaPublica', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('numero', models.PositiveIntegerField(blank=True, verbose_name='Número')), |
||||
|
('nome', models.CharField(max_length=100, verbose_name='Nome da Audiência Pública')), |
||||
|
('tema', models.CharField(max_length=100, verbose_name='Tema da Audiência Pública')), |
||||
|
('data', models.DateField(verbose_name='Data')), |
||||
|
('hora_inicio', models.CharField(max_length=5, verbose_name='Horário (hh:mm)')), |
||||
|
('hora_fim', models.CharField(max_length=5, verbose_name='Horário (hh:mm)')), |
||||
|
('observacao', models.CharField(blank=True, max_length=200, verbose_name='Observação')), |
||||
|
('audiencia_cancelada', models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Audiência Cancela?')), |
||||
|
('url_audio', models.URLField(blank=True, max_length=150, verbose_name='URL Arquivo Áudio (Formatos MP3 / AAC)')), |
||||
|
('url_video', models.URLField(blank=True, max_length=150, verbose_name='URL Arquivo Vídeo (Formatos MP4 / FLV / WebM)')), |
||||
|
('upload_pauta', models.FileField(blank=True, null=True, upload_to=sapl.audiencia.models.pauta_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Pauta da Audiência Pública')), |
||||
|
('upload_ata', models.FileField(blank=True, null=True, upload_to=sapl.audiencia.models.ata_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Ata da Audiência Pública')), |
||||
|
('upload_anexo', models.FileField(blank=True, null=True, upload_to=sapl.audiencia.models.anexo_upload_path, verbose_name='Anexo da Audiência Pública')), |
||||
|
('materia', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='materia.MateriaLegislativa', verbose_name='Matéria Legislativa')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Audiência Pública', |
||||
|
'verbose_name_plural': 'Audiências Públicas', |
||||
|
'ordering': ['nome', 'numero', 'tipo'], |
||||
|
}, |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='TipoAudienciaPublica', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('nome', models.CharField(choices=[('A', 'Audiência Pública'), ('P', 'Plebiscito'), ('R', 'Referendo'), ('I', 'Iniciativa Popular')], max_length=1, verbose_name='Tipo de Audiência Pública')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Tipo de Audiência Pública', |
||||
|
'verbose_name_plural': 'Tipos de Audiência Pública', |
||||
|
'ordering': ['nome'], |
||||
|
}, |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='audienciapublica', |
||||
|
name='tipo', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='audiencia.TipoAudienciaPublica', verbose_name='Tipo'), |
||||
|
), |
||||
|
] |
||||
@ -1,10 +1,10 @@ |
|||||
from django.conf.urls import include, url |
from django.conf.urls import include, url |
||||
from sapl.audiencia.views import (index) |
from sapl.audiencia.views import (index, AudienciaCrud) |
||||
|
|
||||
from .apps import AppConfig |
from .apps import AppConfig |
||||
|
|
||||
app_name = AppConfig.name |
app_name = AppConfig.name |
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
url(r'^audiencia/', index, name='index'), |
url(r'^audiencia/', include(AudienciaCrud.get_urls())), |
||||
] |
] |
||||
@ -1,5 +1,31 @@ |
|||||
from django.shortcuts import render |
from django.shortcuts import render |
||||
from django.http import HttpResponse |
from django.http import HttpResponse |
||||
|
from django.core.urlresolvers import reverse |
||||
|
from django.db.models import F |
||||
|
from django.views.generic import ListView |
||||
|
from sapl.comissoes.forms import ParticipacaoCreateForm, ParticipacaoEditForm |
||||
|
from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud |
||||
|
from sapl.materia.models import MateriaLegislativa |
||||
|
|
||||
|
from .forms import AudienciaForm |
||||
|
from .models import (AudienciaPublica, TipoAudienciaPublica) |
||||
|
|
||||
def index(request): |
def index(request): |
||||
return HttpResponse("Audiência Pública") |
return HttpResponse("Audiência Pública") |
||||
|
|
||||
|
class AudienciaCrud(Crud): |
||||
|
model = AudienciaPublica |
||||
|
public = [RP_LIST, RP_DETAIL, ] |
||||
|
|
||||
|
class BaseMixin(Crud.BaseMixin): |
||||
|
list_field_names = ['materia', 'tipo', 'numero', 'nome', 'tema', |
||||
|
'data', 'hora_inicio', 'hora_fim', 'observacao', |
||||
|
'url_audio', 'url_video', 'upload_pauta', |
||||
|
'upload_ata'] |
||||
|
ordering = 'nome', 'numero', 'tipo', 'data' |
||||
|
|
||||
|
class CreateView(Crud.CreateView): |
||||
|
form_class = AudienciaForm |
||||
|
|
||||
|
def form_valid(self, form): |
||||
|
return super(Crud.CreateView, self).form_valid(form) |
||||
Loading…
Reference in new issue