RecuentoDeVotos-G1-2-17-18

De Wiki de EGC
Saltar a: navegación, buscar

Página_Principal -> 2017/2018 -> Trabajo - 17/18 -> M6-17 18 -> Zona entrega de proyectos - 17/18


Aclaraciones:

   El proyecto es el mismo de la primera convocatoria solo que se ha realizado unas mejoras para la segunda convocatoria.


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:.

  • El repositorio de GitHub del equipo será accesible en el siguiente enlace
  • Puede acceder a nuestro proyecto en Opera en el siguiente enlace

  • 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