# -*- 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")