RecuentoDeVotos-G1-2-17-18
Página_Principal -> 2017/2018 -> Trabajo - 17/18 -> M6-17 18 -> Zona entrega de proyectos - 17/18
- Documento del proyecto (Guardado en GitHub)
- Diario del grupo (Guardado en GitHub)
Aclaraciones:
La entrega la realizará un subgrupo del grupo de Recuento de Votos del G1. El subgrupo está compuesto por los miembros Ernesto de Tovar Vázquez y Francisco Javier Huertas Vera. El proyecto es el mismo de la primera convocatoria solo que se ha realizado unas mejoras para la segunda convocatoria.
Contenido
Participantes en la entrega
- Francisco Javier Huertas Vera.
- Ernesto De Tovar Vázquez.
Repositorio de GitHub
https://github.com/Proyecto-EGC-G1/RecuentoVotos-EGC-G1
Objetivo de la entrega
Mecanismo de encriptación y desencriptación de los votos mediante el cifrado RSA. Desarrollo de los tipos Borda Nauru, Borda Simple y Borda Personalizado.
Objetivo del subsistema
Su objetivo principal es realizar el recuento de los votos una vez haya acabado la votación y entregar los resultados. Como objetivos adicionales se añade el hecho de dar soporte a distintos formatos de votaciones.
Enlaces
Enlaces de interés para acceder a la información sobre nuestro módulo:.
Gestión del trabajo
La gestión del trabajo y la asignación de tareas se realizara mediante el sistema de Issues de Github. Se crearan 4 tableros para la organización de las tareas:
* TO DO:en este tablero se añadirán las issues que vayamos creando y que no estén asignadas ni realizadas aún. * En progreso: en este tablero estarán las issues asignadas que están en proceso de ejecución. * Done: en este tablero estarán las issues ya terminadas * No procede: en este tablero estarán las issues que no proceda que sean realizadas para el desarrollo del trabajo
Gestión de la comunicación
La comunicación se realizará a través de un grupo de Telegram conformado por todos los miembros del equipo.
Gestión del código
La gestión del código se realizará mediante de GitHub. Tendremos un repositorio en el cual habrá dos ramas principales, la rama de develop y la rama de master, y las ramas de cada miembro. En la rama de develop se actualizara el contenido para el desarrollo de el proyecto conforme vaya siendo realizado por los integrantes. En la rama de master se añadirán versiones estables de proyecto, con las que el equipo de integración deberá trabajar para evitar fallos de la rama de develop. En las ramas de cada miembro, que se llamarán como ellos (ernesto o javih), las utilizará cada miembro para desarrollar las mejoras y luego se mergeará con la rama develop mediante Pull Request.
Gestión de incidencias
Usaremos la herramienta que nos ofrece Github para el control de las incidencias que vayan surgiendo en nuestro proyecto.
Herramientas
Subsistema: Recuento de votos
Lenguaje/Herramienta: Python 3; Lenguaje/Herramienta: Django 1.11.7; Sistema de gestión de bibliotecas: pip Bibliotecas: mysql-connector: 2.1.6 djangorestframework : 3.7.3 Base de datos: MariaDB
API
Para la adquisición de resultados de accedera con una url con el formato
- /recvotes/{pollID}
Esta petición get nos devolvera un json con el siguiente formato
[ { "title": "title1", "description": "description1", "optional": (true or false), "multiple": (true or false), "questionoption_set": [ { "description": "description1", "result": x } { "description": "description2", "result": x } ] }, { "title": "title2", "description": "description2", "optional": (true or false), "multiple": (true or false), "questionoption_set": [ { "description": "description1", "result": x } } ] }, . . . { "title": "titlen", "description": "descriptionn", "optional": (true or false), "multiple": (true or false), "questionoption_set": [ { "description": "description1", "result": x } } ] },
La Api es susceptible de cambiar en el futuro, para añadir distintos modelos de conteo o nuevas funcionalidades, en caso de actualización, sera reflejado aquí en cuanto el modelo de conteo se encuentre estable.
Modelado de datos
Recogeremos los datos necesarios para el recuento de la base de datos principal a través de la Id de la votación, extraeremos la información y se almacenara en la base de datos Django que utilizaremos para realizar el recuento. La información extraída seran los votos, la pregunta, las opciones de cada pregunta y las OptionPerVote de cada opción de pregunta.
- Tabla poll:
- id: identificador de la encuesta - title: titulo o nombre de la encuesta - description: descripción de la encuesta
- Tabla pregunta:
- id: identificador de la pregunta - title: titulo o nombre de la pregunta - description: descripción de la encuesta - optional: descripción de la encuesta - multiple: descripción de la encuesta - poll: la encuesta a la que hace referencia
- Tabla optionPerVote:
- id: identificador de la optionPerVote - question_option: opción elegida para pregunta - vote: voto que ha elegido esa opción - order: orden de preferencia