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 sapl.audiencia.views import (index) |
|||
from sapl.audiencia.views import (index, AudienciaCrud) |
|||
|
|||
from .apps import AppConfig |
|||
|
|||
app_name = AppConfig.name |
|||
|
|||
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.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): |
|||
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