# -*- coding: utf-8 -*-
"""
Sistema de Consulta Pública
Copyleft (@) 2017 CENDITEL nodo Mérida - https://planificacion.cenditel.gob.ve/trac/wiki/ModeladoTopicos_2017
"""
## @package procesamiento.forms
#
# Formulario correspondiente a la aplicación procesamiento
# @author Rodrigo Boet (rboet at cenditel.gob.ve)
# @author Centro Nacional de Desarrollo e Investigación en Tecnologías Libres
# (CENDITEL) nodo Mérida - Venezuela
# @copyright GNU Public License versión 2 (GPLv2)
# @version 1.0
import os
from django import forms
from consulta_publica.settings import PROCESAMIENTO_PATH
from base.functions import cargar_procesamiento, validate_dir
from participacion.forms import ParticipacionSelectForm
from .models import Procesamiento
class ProcesamientoSelectForm(ParticipacionSelectForm):
"""!
Clase del formulario que muestra las consultas
@author Rodrigo Boet (rboet at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 22-02-2017
@version 1.0.0
"""
pass
class ProcesamientoForm(forms.ModelForm):
"""!
Clase para crear el formulario del procesamiento
@author Rodrigo Boet (rboet at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 28-03-2017
"""
def __init__(self, *args, **kwargs):
self.pk = kwargs.pop('pk')
super(ProcesamientoForm, self).__init__(*args, **kwargs)
## Campo con el nombre del directorio a procesar
procesamiento_dir = forms.CharField(label=('Nombre del Perfil'), widget=forms.TextInput(attrs={'class':'form-control'}))
## Palabras a excluir
words = forms.MultipleChoiceField(label = ('Palabras'),choices = [('V', 'verbos'),('A', 'adjetivos'), ('N', 'sustantivos'),
('R', 'adverbios'),('D', 'determinantes'),('P', 'pronombres'),('C', 'conjunciones'),('I', 'interjecciones'),('S', 'preposiciones')],
widget=forms.SelectMultiple(attrs={'class':'form-control'}),required=False)
## Listado de palabras excluidas por el usuario
excluded_words = forms.CharField(label=('Palabras Excluidas'),widget=forms.Textarea(attrs={'class':'form-control'}),required = False)
def clean_procesamiento_dir(self):
procesamiento_dir = self.cleaned_data['procesamiento_dir']
if not validate_dir(self.pk):
raise forms.ValidationError("La Ruta Solicitada no existe, debe generar primero los textos en la consulta")
return procesamiento_dir
class Meta:
model = Procesamiento
exclude = ['user','consulta','used']
class ProcesamientoActionForm(forms.Form):
"""!
Clase del formulario que los perfiles de procesamiento
@author Rodrigo Boet (rboet at cenditel.gob.ve)
@copyright GNU Public License versión 2 (GPLv2)
@date 28-03-2017
@version 1.0.0
"""
def __init__(self, *args, **kwargs):
"""!
Metodo que sobreescribe cuando se inicializa el formulario
@author Rodrigo Boet (rboet at cenditel.gob.ve)
@copyright GNU/GPLv2
@date 28-03-2017
@param self {object} Objeto que instancia la clase
@param args {list} Lista de los argumentos
@param kwargs {dict} Diccionario con argumentos
@return Retorna el formulario validado
"""
self.pk = kwargs.pop('pk')
super(ProcesamientoActionForm, self).__init__(*args, **kwargs)
self.fields['procesamiento'].choices = cargar_procesamiento(self.pk)
## Procesamientos
procesamiento = forms.ChoiceField(widget=forms.Select(attrs={'class':'form-control'}),
label="Selecione un perfil de procesamiento")