1 | # -*- coding: utf-8 -*- |
---|
2 | """ |
---|
3 | Sistema de Consulta Pública |
---|
4 | |
---|
5 | Copyleft (@) 2017 CENDITEL nodo Mérida - https://planificacion.cenditel.gob.ve/trac/wiki/ModeladoTopicos_2017 |
---|
6 | """ |
---|
7 | ## @package procesamiento.forms |
---|
8 | # |
---|
9 | # Formulario correspondiente a la aplicación procesamiento |
---|
10 | # @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
11 | # @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en TecnologÃas Libres |
---|
12 | # (CENDITEL) nodo Mérida - Venezuela</a> |
---|
13 | # @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
14 | # @version 1.0 |
---|
15 | import os |
---|
16 | from django import forms |
---|
17 | from consulta_publica.settings import PROCESAMIENTO_PATH |
---|
18 | from base.functions import cargar_procesamiento, validate_dir |
---|
19 | from participacion.forms import ParticipacionSelectForm |
---|
20 | from .models import Procesamiento |
---|
21 | |
---|
22 | class ProcesamientoSelectForm(ParticipacionSelectForm): |
---|
23 | """! |
---|
24 | Clase del formulario que muestra las consultas |
---|
25 | |
---|
26 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
27 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
28 | @date 22-02-2017 |
---|
29 | @version 1.0.0 |
---|
30 | """ |
---|
31 | pass |
---|
32 | |
---|
33 | class ProcesamientoForm(forms.ModelForm): |
---|
34 | """! |
---|
35 | Clase para crear el formulario del procesamiento |
---|
36 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
37 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
38 | @date 28-03-2017 |
---|
39 | """ |
---|
40 | def __init__(self, *args, **kwargs): |
---|
41 | self.pk = kwargs.pop('pk') |
---|
42 | super(ProcesamientoForm, self).__init__(*args, **kwargs) |
---|
43 | |
---|
44 | ## Campo con el nombre del directorio a procesar |
---|
45 | procesamiento_dir = forms.CharField(label=('Nombre del Perfil'), widget=forms.TextInput(attrs={'class':'form-control'})) |
---|
46 | |
---|
47 | ## Palabras a excluir |
---|
48 | words = forms.MultipleChoiceField(label = ('Palabras'),choices = [('V', 'verbos'),('A', 'adjetivos'), ('N', 'sustantivos'), |
---|
49 | ('R', 'adverbios'),('D', 'determinantes'),('P', 'pronombres'),('C', 'conjunciones'),('I', 'interjecciones'),('S', 'preposiciones')], |
---|
50 | widget=forms.SelectMultiple(attrs={'class':'form-control'}),required=False) |
---|
51 | |
---|
52 | ## Listado de palabras excluidas por el usuario |
---|
53 | excluded_words = forms.CharField(label=('Palabras Excluidas'),widget=forms.Textarea(attrs={'class':'form-control'}),required = False) |
---|
54 | |
---|
55 | def clean_procesamiento_dir(self): |
---|
56 | procesamiento_dir = self.cleaned_data['procesamiento_dir'] |
---|
57 | if not validate_dir(self.pk): |
---|
58 | raise forms.ValidationError("La Ruta Solicitada no existe, debe generar primero los textos en la consulta") |
---|
59 | return procesamiento_dir |
---|
60 | |
---|
61 | class Meta: |
---|
62 | model = Procesamiento |
---|
63 | exclude = ['user','consulta','used'] |
---|
64 | |
---|
65 | |
---|
66 | class ProcesamientoActionForm(forms.Form): |
---|
67 | """! |
---|
68 | Clase del formulario que los perfiles de procesamiento |
---|
69 | |
---|
70 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
71 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
72 | @date 28-03-2017 |
---|
73 | @version 1.0.0 |
---|
74 | """ |
---|
75 | |
---|
76 | def __init__(self, *args, **kwargs): |
---|
77 | """! |
---|
78 | Metodo que sobreescribe cuando se inicializa el formulario |
---|
79 | |
---|
80 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
81 | @copyright GNU/GPLv2 |
---|
82 | @date 28-03-2017 |
---|
83 | @param self <b>{object}</b> Objeto que instancia la clase |
---|
84 | @param args <b>{list}</b> Lista de los argumentos |
---|
85 | @param kwargs <b>{dict}</b> Diccionario con argumentos |
---|
86 | @return Retorna el formulario validado |
---|
87 | """ |
---|
88 | self.pk = kwargs.pop('pk') |
---|
89 | super(ProcesamientoActionForm, self).__init__(*args, **kwargs) |
---|
90 | |
---|
91 | self.fields['procesamiento'].choices = cargar_procesamiento(self.pk) |
---|
92 | |
---|
93 | ## Procesamientos |
---|
94 | procesamiento = forms.ChoiceField(widget=forms.Select(attrs={'class':'form-control'}), |
---|
95 | label="Selecione un perfil de procesamiento") |
---|