Free-Vote Consta de tres componentes principales:
Las páginas Web están organizadas según la siguiente estructura:
Principal - Documentación
- Registro de usuarios
- Registro de consultas
- Administración ------------+- Altas y Bajas
+- Modificaciones
`- Consola SQL
- Selección / Visualización
de consultas -+- Solicitud tarjeta de voto
`- Emisión de voto
En función del usuario existen ventanas adicionales para identificación del usuario e introducción de claves de acceso
El funcionamiento es extremadamente simple: el usuario navega de formulario en formulario en función de las opciones deseadas. El envío de información sensible se realiza a través del correo.
Las tablas de la base de datos son extremadamente sencillas: en aras de garantizar privacidad y secreto, no se guarda ningún tipo de información extra sobre los usuarios y sus votos. Cuando un usuario vota, se genera un log indicando el evento, pero no su valor. Este es sumado dinámicamente a las tablas de consulta, de manera que el voto es evaluado "on-line", sin necesidad de un registro para su posterior cálculo
El programa incluye dentro de sus menús la posibilidad de una cierta administración remota. A continuación se detallan las diversas operaciones disponibles. Nótese que todas aquellas operaciones que implican una alta, baja, o modificación de datos, implican la notificación por correo electrónico al interesado
Permite ver los usuarios registrados en el sistema, agrupados por listas de votantes ( recuerdese que todos los usuarios pertenecen por defecto a la lista 0 )
Cuando un usuario solicita el registro, éste queda almacenado en una tabla temporal. El administrador, periódicamente, debe revisar la lista de usuarios pendientes de registro, y previa comprobación de datos, proceder al alta de éstos
Alternativamente, el administrador puede proceder a realizar el alta de un usuario de forma manual, sin intervención de éste. Para ello debe conocer previamente los datos identificativos del usuario.
Utilizaremos esta opción en el caso de desear modificar los datos referidos a un usuario. Normalmente el usuario tiene acceso a un menú propio para proceder por sí mismo a la modificación, por lo que sólo se usará este formulario en los siguientes casos:
Si la edición de datos conlleva un cambio en la dirección de correo electrónico, el usuario recibirá la notificación del cambio tanto en la dirección antigua como en la nueva
El nombre es auto-explicativo....
Al eliminar a un usuario del sistema, toda la información generada por éste, es, dependiendo del caso, bien eliminada a su vez, o bien asignada al usuario con identificador cero (nobody)
Del mismo modo, si el usuario ha solicitado la tarjeta de voto para una votación concreta, dicha tarjeta será removida del sistema.
No obstante, no hay posibilidad de "deshacer el voto" de un usuario una vez emitido: recuérdese que la estructura de la base de datos impide el almacenamiento del valor de cada voto. Esto puede dar lugar a discrepancias a la hora de efectuar recuentos, como que el número de votos emitidos sea mayor que el número de votantes registrados
Estos tres apartados permiten al administrador crear listas para votaciones restringidas.
La lista Pública, tiene el identificador 0 (cero) y está siempre presente en el sistema. Todo usuario que se registre es asignado automáticamente a dicha lista
Al seleccionar esta opción se le pedirá al administrador que seleccione una lista (distinta de la Pública) de entre las definidas en el sistema.
Aparecerá un listado de los usuarios registrados en el sistema con una indicación de si pertenecen o no a la lista seleccionada. El administrador puede entonces seleccionar los usuarios que desea que pertenezcan o no a dicha lista
Aunque es posible, no es deseable cambiar la asignación de usuarios a listas cuando de éstas depende alguna votación: Pueden ocurrir inconsistencias como que no se permita el voto , por haber sido removido de la lista, a un usuario que ya tenga su tarjeta de voto. El sistema no puede quedar inestable, pero el usuario quedará bastante cabreado....
Esta opción es gemela a la de la revisión de usuarios: Cuando un usuario solicita generar una consulta, ésta es guardada en una tabla temporal, pendiente de aprobación por parte del administrador.
En esta opción se permiten cambiar diversos aspectos no críticos de una votación, como pueden ser los datos sobre fechas y publicidad y visibilidad. No se permiten cambiar los demás datos, especialmente los referidos a la pregunta y posibles respuestas
NOTA: Actualmente, esta opción del menú de administración no está habilitada
Pues eso....
Al eliminar una votación, se eliminan a su vez los datos de participación, resultados, y foro de mensajes asociado. Se manda un mensaje por correo al creador de la consulta, notificándole el hecho
Esta es la opción más poderosa. Convierte al navegador en un terminal tipo texto que permite enviar directamente comandos SQL al gestor de bases de datos. Es una opción muy poderosa, y a su vez muy peligrosa.
Sólo debería haber una persona con privilegios de acceso a esta operación: el administrador de la base de datos.
Puesto que normalmente el administrador tiene acceso local al servidor, es posible que en futuras versiones del programa, esta opción desaparezca
Free-Vote agrupa los usuarios en diverasa categorías, en función de los privilegios de acceso que tienen. Una de las tareas del administrador es gestionar estos privilegios.
El nivel de privilegio de un usuario se almacena en el campo groupid de la tabla usuarios. Se definen los siguientes niveles en orden creciente de privilegios:
El nivel 4 permite crear y borrar usuarios, listas, y consultas. El nivel 5 permite la modificación de éstas una vez creadas. El resto de los niveles corresponden a usuarios sin categoría de administrador ( salvo el 3, que permite dar de alta consultas sin necesidad de aprobación previa ). El nivel 0 corresponde a la categoría de observador, esto es, persona registrada con voz en los foros de discusión, pero sin derecho a voto
El administrador del sistema tiene las siguientes tareas:
Alguna de estas tareas pueden ser llevadas a cabo por usuarios con privilegios especiales desde la interfaz de Web. Para la supervisión del funcionamiento y del registro de eventos se debe tener acceso a una cuenta en el servidor
Las tareas de backup, y limpieza y consistencia de la base de datos, se realizan automáticamente mediante cron(1).
Las tareas que se realizan son las siguientes:
Si bien el script que se ejecuta bajo cron realiza automáticamente las tareas de backup, en ocasiones es necesario realizar dicha tarea a mano. Para ello deberemos entrar en la base de datos como usuario administrador de la base de datos, y procederemos como se describe a continuación.
pgdump -h $DBHOST -p $DBPORT -u $DBNAME > $FILESubstituyendo las variables por su valor correspondiente. El sistema nos preguntará el nombre de usuario y la contraseña correspondientes al administrador ( usuario postgres "operador" )
psql -h $DBHOST -p $DBPORT -U $DBUSER -e $DBNAME < $FILELa base de datos queda así restaurada