<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ignalelop</id>
		<title>Wiki de EGC - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-egc/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ignalelop"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php/Especial:Contribuciones/Ignalelop"/>
		<updated>2026-04-13T17:04:45Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7203</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7203"/>
				<updated>2018-01-09T12:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* APIs y datos que se usarán y devolverán */  Cambiado el retorno de la petición de voto para evitar enviar el voto cifrado&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election['nombre'] }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election['descripcion'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election['preguntas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {{ question['nombre'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\span&amp;gt;{{ question['descripcion'] }}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Cerrada&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% for answer in question['respuestas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;{{\answer.seleccionada}}&amp;quot;&amp;gt;{{answer['texto_pregunta']}}&amp;lt;/option&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                {{ question['texto_pregunta'] }}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;input id=&amp;quot;answer&amp;quot; value=&amp;quot;{{ question.respuestas[0].texto_respuesta}}&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Enviar voto&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endblock %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election.nombre }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election.descripcion }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {{ election.nombre }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
    {% endblock %}&lt;br /&gt;
&lt;br /&gt;
Para que pueda mostrarse, se ha tenido que añadir &amp;lt;\ en la mayoría de las etiquetas HTML, así como añadir \answers en el select dentro de la página de votación.&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
    &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7202</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7202"/>
				<updated>2018-01-09T11:58:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Decisiones de diseño */  Cambiado el sistema para adaptarlo al cambio de guardado de votos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election['nombre'] }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election['descripcion'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election['preguntas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {{ question['nombre'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\span&amp;gt;{{ question['descripcion'] }}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Cerrada&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% for answer in question['respuestas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;{{\answer.seleccionada}}&amp;quot;&amp;gt;{{answer['texto_pregunta']}}&amp;lt;/option&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                {{ question['texto_pregunta'] }}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;input id=&amp;quot;answer&amp;quot; value=&amp;quot;{{ question.respuestas[0].texto_respuesta}}&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Enviar voto&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endblock %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election.nombre }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election.descripcion }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {{ election.nombre }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
    {% endblock %}&lt;br /&gt;
&lt;br /&gt;
Para que pueda mostrarse, se ha tenido que añadir &amp;lt;\ en la mayoría de las etiquetas HTML, así como añadir \answers en el select dentro de la página de votación.&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
    &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7126</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7126"/>
				<updated>2017-12-30T10:09:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Corrección de la sección de las plantillas para asegurarse que no son interpretadas como código HTML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election['nombre'] }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election['descripcion'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election['preguntas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {{ question['nombre'] }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;\span&amp;gt;{{ question['descripcion'] }}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Cerrada&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% for answer in question['respuestas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;{{\answer.seleccionada}}&amp;quot;&amp;gt;{{answer['texto_pregunta']}}&amp;lt;/option&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                {{ question['texto_pregunta'] }}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;input id=&amp;quot;answer&amp;quot; value=&amp;quot;{{ question.respuestas[0].texto_respuesta}}&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Enviar voto&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endblock %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\h2&amp;gt;{{ election.nombre }}&amp;lt;\/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{{ election.descripcion }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {{ election.nombre }}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
    {% endblock %}&lt;br /&gt;
&lt;br /&gt;
Para que pueda mostrarse, se ha tenido que añadir &amp;lt;\ en la mayoría de las etiquetas HTML, así como añadir \answers en el select dentro de la página de votación.&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 [ &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
         &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7125</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=7125"/>
				<updated>2017-12-30T10:03:09Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Plantillas HTML */  Corrección de las plantillas para que sean mejor interpretadas por Flask&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h2&amp;gt;{{ election['nombre'] }}&amp;lt;/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;p&amp;gt;{{ election['descripcion'] }}&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election['preguntas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Pregunta {{ question['nombre'] }}&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;span&amp;gt;{{ question['descripcion'] }}&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Cerrada&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% for answer in question['respuestas'] %}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;option value=&amp;quot;{{ answer.seleccionada }}&amp;quot;&amp;gt;{{ answer['texto_pregunta'] }}&amp;lt;/option&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question['tipo_pregunta'] == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                {{ question['texto_pregunta'] }}&amp;lt;br/&amp;gt;&lt;br /&gt;
                &amp;lt;input id=&amp;quot;answer&amp;quot; =&amp;quot;{{ question.respuestas[0].texto_respuesta}}&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% endif %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% endfor %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;button&amp;gt;Enviar voto&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    {% endblock %}&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;{{ election.nombre }}&amp;lt;/h2&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;{{ election.descripcion }}&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Gracias por responder a {{ election.nombre }}&amp;lt;/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
    {% endblock %}&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 [ &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
         &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=7034</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=7034"/>
				<updated>2017-12-15T17:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Ramas */ Añadida la descripción del sistema de trabajos con ramas introduciendo Pull Requests y explicando el proceso de confirmación de pull request&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Miembros del grupo ==&lt;br /&gt;
'''&lt;br /&gt;
- Ignacio José Alés López, coordinador del grupo.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Juan Carlos López Muñoz, gestor de incidencias.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Jorge Gordo Aguilar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Antonio Rodríguez Artacho, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Javier Román Bayar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Al implementarse el sistema de integración continua, se usarán Pull Requests para pasar de una rama a otra, como se ve en el apartado anterior. El Pull Request no podrá ser aceptado hasta que la integración continua indique que la nueva versión es compilable y aprueba los tests indicados. Una vez se obtenga una versión correcta, el jefe del proyecto (Ignacio José Alés López) eligirá o él mismo realizará una evaluación del código y hará comentarios pertinentes. Si se decide que el pull request es válido, se procederá a confirmar el merge de las ramas.&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Grupo: (grupo al que pertenece el creador de la incidencia o grupos a los que le influyen la incidencia)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;br /&gt;
&lt;br /&gt;
Además, se asignará a un miembro del grupo para gestionar la incidencia, por parte del gestor de incidencias. Se asignará labels que mostrarán el estado de la incidencia y tendrá los siguiente valores:&lt;br /&gt;
 - Estado: Puede ser Por iniciar, En progreso y Por revisar.&lt;br /&gt;
 - Prioridad: Será asignada por el gestor de la incidencia, según sea necesario. Podrá ser Baja prioridad o Muy importante.&lt;br /&gt;
 - Otros: Estos serán los labels creados por defecto en Github y serán asignados por el gestor de incidencias como sea necesario.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=7033</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=7033"/>
				<updated>2017-12-15T17:48:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Incidencias */  Añadido el elemento de grupo al formato de issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Miembros del grupo ==&lt;br /&gt;
'''&lt;br /&gt;
- Ignacio José Alés López, coordinador del grupo.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Juan Carlos López Muñoz, gestor de incidencias.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Jorge Gordo Aguilar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Antonio Rodríguez Artacho, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Javier Román Bayar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Grupo: (grupo al que pertenece el creador de la incidencia o grupos a los que le influyen la incidencia)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;br /&gt;
&lt;br /&gt;
Además, se asignará a un miembro del grupo para gestionar la incidencia, por parte del gestor de incidencias. Se asignará labels que mostrarán el estado de la incidencia y tendrá los siguiente valores:&lt;br /&gt;
 - Estado: Puede ser Por iniciar, En progreso y Por revisar.&lt;br /&gt;
 - Prioridad: Será asignada por el gestor de la incidencia, según sea necesario. Podrá ser Baja prioridad o Muy importante.&lt;br /&gt;
 - Otros: Estos serán los labels creados por defecto en Github y serán asignados por el gestor de incidencias como sea necesario.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6893</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6893"/>
				<updated>2017-12-09T18:16:03Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Objetivo del subsistema */ Eliminada una dependencia que no estaba siendo usada&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 [ &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
         &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6875</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6875"/>
				<updated>2017-12-08T09:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Decisiones de diseño */ Cambiado el formato del voto cifrado para que sea consistente con los últimos cambios de la API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 [ &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;,&lt;br /&gt;
         &amp;quot;answer&amp;quot;: &amp;quot;&amp;lt;respuesta_a_la_pregunta&amp;gt;&amp;quot; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6874</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6874"/>
				<updated>2017-12-08T09:47:47Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* APIs y datos que se usarán y devolverán */ Mejorado el formato de envío de votos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
 id_user: (int) identificador del usuario que ha votado, es única y es posible verificar el voto [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
 encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[(int,string)]) Lista que contendrá el par question_id, que es el identificador de la pregunta como int, y answer, que es la respuesta del usuario. La representación de cada par sería la siguiente:&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13. Se debe enviar:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
        &amp;quot;answers&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Algo&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;question_id&amp;quot;: 1,&lt;br /&gt;
                &amp;quot;answer&amp;quot;: &amp;quot;Sí&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
         ]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
La respuesta a esta petición será:        &lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id_user&amp;quot;: 23,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: 34,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;ot7yfg913...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 { &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;, &amp;quot;response&amp;quot;: &amp;lt;respuesta_a_la_pregunta&amp;gt; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6841</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6841"/>
				<updated>2017-12-07T16:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* APIs y datos que se usarán y devolverán */ Mejorado el estilo de los parámetros de entrada del método de voto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: &lt;br /&gt;
            id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 { &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;, &amp;quot;response&amp;quot;: &amp;lt;respuesta_a_la_pregunta&amp;gt; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6789</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6789"/>
				<updated>2017-12-06T15:58:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Decisiones de diseño */ Mejora de estilo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Decisiones de diseño ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 { &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;, &amp;quot;response&amp;quot;: &amp;lt;respuesta_a_la_pregunta&amp;gt; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6788</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6788"/>
				<updated>2017-12-06T15:57:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Miembros del grupo */ Corrección del estilo de los miembros del grupo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Miembros del grupo ==&lt;br /&gt;
'''&lt;br /&gt;
- Ignacio José Alés López, coordinador del grupo.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Juan Carlos López Muñoz, gestor de incidencias.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Jorge Gordo Aguilar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Antonio Rodríguez Artacho, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
- Javier Román Bayar, programador.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;br /&gt;
&lt;br /&gt;
Además, se asignará a un miembro del grupo para gestionar la incidencia, por parte del gestor de incidencias. Se asignará labels que mostrarán el estado de la incidencia y tendrá los siguiente valores:&lt;br /&gt;
 - Estado: Puede ser Por iniciar, En progreso y Por revisar.&lt;br /&gt;
 - Prioridad: Será asignada por el gestor de la incidencia, según sea necesario. Podrá ser Baja prioridad o Muy importante.&lt;br /&gt;
 - Otros: Estos serán los labels creados por defecto en Github y serán asignados por el gestor de incidencias como sea necesario.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6787</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6787"/>
				<updated>2017-12-06T15:56:58Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Añadidos los miembros del grupo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Miembros del grupo ==&lt;br /&gt;
'''&lt;br /&gt;
- Ignacio José Alés López, coordinador del grupo.&lt;br /&gt;
- Juan Carlos López Muñoz, gestor de incidencias.&lt;br /&gt;
- Jorge Gordo Aguilar, programador&lt;br /&gt;
- Antonio Rodríguez Artacho, programador&lt;br /&gt;
- Javier Román Bayar, programador&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;br /&gt;
&lt;br /&gt;
Además, se asignará a un miembro del grupo para gestionar la incidencia, por parte del gestor de incidencias. Se asignará labels que mostrarán el estado de la incidencia y tendrá los siguiente valores:&lt;br /&gt;
 - Estado: Puede ser Por iniciar, En progreso y Por revisar.&lt;br /&gt;
 - Prioridad: Será asignada por el gestor de la incidencia, según sea necesario. Podrá ser Baja prioridad o Muy importante.&lt;br /&gt;
 - Otros: Estos serán los labels creados por defecto en Github y serán asignados por el gestor de incidencias como sea necesario.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6786</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6786"/>
				<updated>2017-12-06T15:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Incidencias */ Mejorada la descripción de la descripción de incidencias&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;br /&gt;
&lt;br /&gt;
Además, se asignará a un miembro del grupo para gestionar la incidencia, por parte del gestor de incidencias. Se asignará labels que mostrarán el estado de la incidencia y tendrá los siguiente valores:&lt;br /&gt;
 - Estado: Puede ser Por iniciar, En progreso y Por revisar.&lt;br /&gt;
 - Prioridad: Será asignada por el gestor de la incidencia, según sea necesario. Podrá ser Baja prioridad o Muy importante.&lt;br /&gt;
 - Otros: Estos serán los labels creados por defecto en Github y serán asignados por el gestor de incidencias como sea necesario.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6778</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6778"/>
				<updated>2017-12-06T12:51:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Añaadida la sección de decisiones de diseño y indicado el proceso de cifrado del voto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Decisiones de diseño ===&lt;br /&gt;
&lt;br /&gt;
'''Cifrado de los votos'''&lt;br /&gt;
Para el cifrado de los votos, se seguirá el siguiente criptosistema. Primero, se recogerá la representación en JSON del voto, siguiendo el siguiente formato:&lt;br /&gt;
 { &lt;br /&gt;
     {&lt;br /&gt;
         &amp;quot;question_id&amp;quot;: &amp;lt;id_de_la_pregunta&amp;gt;, &amp;quot;response&amp;quot;: &amp;lt;respuesta_a_la_pregunta&amp;gt; &lt;br /&gt;
     },&lt;br /&gt;
     { &lt;br /&gt;
         ... &lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Después, se cifrará el contenido de éste JSON a base64, usando como encodificado UTF-8. Finalmente, se recogerá la clave de cifrado de la votación y se aplicará el cifrado XOR, aplicando XOR a la clave y el string en base64 antes mencionado.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6777</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6777"/>
				<updated>2017-12-06T12:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Objetivo del subsistema */ Añadida una nueva librería para el cifrado en base64 del voto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- js-base64: 2.4.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Código de respuesta del servidor HTTP ==&lt;br /&gt;
&lt;br /&gt;
Para nuestra API, hemos definido los siguientes códigos de respuestas del servidor HTTP:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Código&lt;br /&gt;
! Valor result&lt;br /&gt;
! Valor msg&lt;br /&gt;
! Posible motivo&lt;br /&gt;
|-&lt;br /&gt;
| 200&lt;br /&gt;
| true&lt;br /&gt;
| Successfull&lt;br /&gt;
|El usuario ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 404&lt;br /&gt;
| false&lt;br /&gt;
| User not found&lt;br /&gt;
| El usuario no ha realizado correctamente el voto&lt;br /&gt;
|-&lt;br /&gt;
| 403&lt;br /&gt;
| false&lt;br /&gt;
| Don't have access&lt;br /&gt;
| El usuario ha realizado correctamente el voto pero no tiene los permisos necesarios para el procesamiento de su voto&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6775</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6775"/>
				<updated>2017-12-05T16:57:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Añadido el formato de las incidencias&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Incidencias ==&lt;br /&gt;
Las incidencias realizadas a nuestro módulo deben seguir el siguiente formato:&lt;br /&gt;
  Título: (descripción breve del error, debe ser reconocible entre otros posibles errores, por lo que mencionar acción, resultado incorrecto...)&lt;br /&gt;
  Prioridad: (¿Es necesario tener la solución cuanto antes o es un pequeño detalle a arreglar?. Podrá tener los siguiente valores: Baja, Media, Alta)&lt;br /&gt;
  Descripción: (Descripción textual del error, un resumen del problema o mejora).&lt;br /&gt;
  (Si aplicable) Pasos para reproducir: (Lista de acciones que se debe realizar para que se produzca el error, cuanto más preciso mejor)&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6698</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6698"/>
				<updated>2017-12-02T16:31:20Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* APIs y datos que se usarán y devolverán */ Mejorado los tipos de errores de permisos de voto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
 - &amp;quot;user_not_found&amp;quot; El usuario introducido no existe.&lt;br /&gt;
 - &amp;quot;election_not_found&amp;quot; La votación introducida no existe.&lt;br /&gt;
 - &amp;quot;election_not_open&amp;quot; La votación no ha abierto todavía el plazo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6646</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6646"/>
				<updated>2017-11-30T11:51:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Plantillas HTML */ cerrados los búcles y condicionales del código Jinja2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
        &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
        &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endfor %}&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% endif %}&lt;br /&gt;
        {% endif %}&lt;br /&gt;
    {% endfor %}&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6644</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6644"/>
				<updated>2017-11-30T10:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* APIs y datos que se usarán y devolverán */  Eliminados métodos que colisionaban con otros módulos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
       &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
       &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
       {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% if questions.filter(&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
           &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6643</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6643"/>
				<updated>2017-11-30T10:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Plantillas HTML */ Actualizadas con el formato de Jinja2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros: &lt;br /&gt;
            encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    {% block body %}&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    {% for question in election.preguntas %}&lt;br /&gt;
       &amp;lt;\p&amp;gt;Pregunta {% question.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
       &amp;lt;\span&amp;gt;{% question.descripcion %}&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
       {% if question.tipo_pregunta == &amp;quot;Cerrada&amp;quot; &amp;lt;br/&amp;gt;&lt;br /&gt;
           {% if questions.filter(&lt;br /&gt;
           {% for answer in question.respuestas %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
                   &amp;lt;option value=&amp;quot;{% answer.seleccionada %}&amp;quot;&amp;gt;{% answer.texto_pregunta %}&amp;lt;br/&amp;gt;&lt;br /&gt;
               &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           {% if question.tipo_pregunta == &amp;quot;Abierta&amp;quot; %}&amp;lt;br/&amp;gt;&lt;br /&gt;
           &amp;lt;label...&amp;gt;{% question.texto_pregunta %}&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
           &amp;lt;input value=&amp;quot;{% question.answers[0].texto_respuesta&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;{% election.nombre %}&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;{% election.descripcion %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a {% election.nombre %}&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6626</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6626"/>
				<updated>2017-11-28T19:30:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Cambiado el formato de los &amp;lt;br&amp;gt; de forma que puedan mostrarse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros: &lt;br /&gt;
            encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
    &amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6625</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6625"/>
				<updated>2017-11-28T19:28:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorado el estilo y añadida una nueva funcionalidad a la API&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&amp;lt;br/&amp;gt;&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&amp;lt;br/&amp;gt;&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&amp;lt;/br&amp;gt;&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&amp;lt;/br&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros: &lt;br /&gt;
            encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de permisos de voto'''&lt;br /&gt;
Tipo: GET&amp;lt;br/&amp;gt;&lt;br /&gt;
URL: http://egc-cabina.es/api/check/vote.json?user=x&amp;amp;election=y&amp;lt;br/&amp;gt;&lt;br /&gt;
Parámetros:&lt;br /&gt;
            user: Nombre de usuario al que comprobar si puede votar&lt;br /&gt;
            election: Identificador de la votación a comprobar&lt;br /&gt;
Formato JSON Ejemplo, usuario &amp;quot;user&amp;quot; puede votar en &amp;quot;election&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;reason&amp;quot;: &amp;quot;can_vote&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Otras consideraciones: &amp;quot;reason&amp;quot; determina la razón de por qué no puede votar y pueden ser alguno de los siguientes:&amp;lt;br/&amp;gt;&lt;br /&gt;
 - &amp;quot;can_vote&amp;quot; El usuario puede votar.&lt;br /&gt;
 - &amp;quot;already_voted&amp;quot; El usuario ha realizado su voto y la votación es de un sólo voto, por lo tanto no podrá votar.&lt;br /&gt;
 - &amp;quot;cant_vote&amp;quot; El usuario no pertenece a un grupo de votación.&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
    &amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6581</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6581"/>
				<updated>2017-11-27T18:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Modelo de uso del repositorio */ actualizado el link a los repositorios&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (https://github.com/EGC-G2-Trabajo-1718/egc-cabinas) y en el otro se pondrá el código del programa (https://github.com/EGC-G2-Trabajo-1718/cabina-de-votacion).&lt;br /&gt;
&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6580</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6580"/>
				<updated>2017-11-27T18:34:19Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Commits */ mejora de estilo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&amp;lt;br/&amp;gt;&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6579</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6579"/>
				<updated>2017-11-27T18:33:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Ramas */ mejora de estilo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&amp;lt;br/&amp;gt;&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6578</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6578"/>
				<updated>2017-11-27T18:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Ramas */ Mejorado el estilo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción. &amp;lt;br/&amp;gt;&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa. &amp;lt;br/&amp;gt;&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&amp;lt;br/&amp;gt;&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&amp;lt;br/&amp;gt;&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6577</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6577"/>
				<updated>2017-11-27T18:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: /* Commits */ Mejorado el estilo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &amp;lt;br/&amp;gt;&lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo. &amp;lt;br/&amp;gt;&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit. &amp;lt;br/&amp;gt;&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante. &amp;lt;br/&amp;gt;&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa.&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6576</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6576"/>
				<updated>2017-11-27T18:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Eliminada la especificación de la API (se encuentra en el espacio de trabajo) y añadida la descripción del modelo de uso&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Modelo de uso del repositorio ==&lt;br /&gt;
'''&lt;br /&gt;
En esta sección se describirá cómo se gestionará el código fuente y otros productos resultados del trabajo realizado por el grupo.&lt;br /&gt;
&lt;br /&gt;
Se dispone de dos repositorios, en uno de ellos se guardará la documentación del proyecto (&lt;br /&gt;
== Commits ==&lt;br /&gt;
Los commits se realizarán cada día que se realice alguna tarea correspondiente con el proyecto y deben tener el siguiente formato:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;razón&amp;gt;:&amp;lt;título&amp;gt;&lt;br /&gt;
  (&amp;lt;colaboradores&amp;gt;)&lt;br /&gt;
  &amp;lt;cuerpo&amp;gt;&lt;br /&gt;
  (IMPORTANTE&lt;br /&gt;
  &amp;lt;detalles importantes&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Se describirán cada componente del formato ahora:&lt;br /&gt;
- razón: Consitirá en la causa de la subida del commit, que puede ser uno de los siguientes: fix (arreglo), add (funcionalidad añadida), doc (documentación de código o otros). &lt;br /&gt;
- título: Resumen, de menos de 20 palabras del commit.&lt;br /&gt;
- colaboradores: Miembros del grupo que han ayudado en la realización del trabajo.&lt;br /&gt;
- cuerpo: Explicación más en profundidad del contenido del commit.&lt;br /&gt;
- IMPORTANTE: Sección donde se describe un detalle importante&lt;br /&gt;
- detalles importantes: Detalles a destacar para otros miembros del grupo.&lt;br /&gt;
&lt;br /&gt;
== Ramas ==&lt;br /&gt;
La gestión de ramas será la siguiente:&lt;br /&gt;
- master: Contendrá una versión funcionando y con las funcionalidades confirmadas por el equipo de integración. Se considera usable para producción&lt;br /&gt;
- dev: Contendrá una versión en funcionamiento, pero puede contener problemas de código o conflictos con otras funcionalidades, necesitará un testeo en entorno de pre producción.&lt;br /&gt;
- &amp;lt;funcionalidad&amp;gt;: Esta rama contendrá una versión master del código y desarrollará una funcionalidad para la próxima versión del programa.&lt;br /&gt;
- &amp;lt;miembro&amp;gt;: Esta rama será personal para cada uno de los desarrolladores y no será modificada por otros miembros del grupo. Podrá contener código en cualquier estado (por ejemplo sin compilar correctamente).&lt;br /&gt;
&lt;br /&gt;
El funcionamiento para pasar de una rama a otra será el siguiente.&lt;br /&gt;
- miembro a funcionalidad: Los miembros que tengan asignada la funcionalidad podrán modificar y realizar merge de la rama personal a la funcionalidad.&lt;br /&gt;
- funcionalidad a dev: Para poder actualizar dev, se deberá realizar un pull request y se realizarán pruebas de que el funcionamiento de la funcionalidad es correcta).&lt;br /&gt;
- dev a master: Se realizará un nuevo pull request, donde se indicarán los cambios de una versión de master a otra. De nuevo pasará por un periodo de pruebas para asegurar que funciona de forma correcta.&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6549</id>
		<title>Cabina de votaciones - 17 18 - G2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6549"/>
				<updated>2017-11-27T12:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Migrada la especificación de la API y tecnologías al espacio de trabajo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objetivo del subsistema ==&lt;br /&gt;
Permitir la votación para las distintas votaciones disponibles en el sistema.&lt;br /&gt;
&lt;br /&gt;
== Consideraciones ==&lt;br /&gt;
* Debe comprobar que el usuario autenticado tiene permiso para participar en la votación indicada&lt;br /&gt;
* Se debe encargar de la encriptación del voto para que se envíe de manera segura&lt;br /&gt;
* Repositorio del año pasado: https://github.com/AgoraUS-G1-1617/Cabina-de-votaciones&lt;br /&gt;
* Wiki de la asignatura referente al submodulo (año pasado): https://1984.lsi.us.es/wiki-egc/index.php/Cabina_de_votación_1617_G1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
    &amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6548</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6548"/>
				<updated>2017-11-27T12:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorado de nuevo el estilo, para permitir que la sección de especificación de la API quede con estilo de código, al igual que las plantillas HTML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&amp;lt;br/&amp;gt;&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&amp;lt;br/&amp;gt;&lt;br /&gt;
Bibliotecas: &amp;lt;br/&amp;gt;&lt;br /&gt;
- restify: 6.3.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- rest: 2.0.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
- lodash: 4.17.4 &amp;lt;br/&amp;gt;&lt;br /&gt;
- async: 2.6.0 &amp;lt;br/&amp;gt;&lt;br /&gt;
Sistema de gestión de bibliotecas: npm&amp;lt;br/&amp;gt;&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;votos&amp;quot;: {&lt;br /&gt;
            &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
                &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
                &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
                &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;result&amp;quot;: true,&lt;br /&gt;
        &amp;quot;vote&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
            &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;    &lt;br /&gt;
    &amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
            &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6518</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6518"/>
				<updated>2017-11-25T20:11:29Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Añadido un espaciado para mejorar la disposición del texto de las plantillas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&lt;br /&gt;
Bibliotecas: &lt;br /&gt;
- restify: 6.3.4 &lt;br /&gt;
- rest: 2.0.0 &lt;br /&gt;
- lodash: 4.17.4 &lt;br /&gt;
- async: 2.6.0 &lt;br /&gt;
Sistema de gestión de bibliotecas: npm&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;votos&amp;quot;: {&lt;br /&gt;
        &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: true,&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
        &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6517</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6517"/>
				<updated>2017-11-25T20:10:19Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorado el estilo de la página e incluida una leyenda del esquema usado&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&lt;br /&gt;
Bibliotecas: &lt;br /&gt;
- restify: 6.3.4 &lt;br /&gt;
- rest: 2.0.0 &lt;br /&gt;
- lodash: 4.17.4 &lt;br /&gt;
- async: 2.6.0 &lt;br /&gt;
Sistema de gestión de bibliotecas: npm&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;votos&amp;quot;: {&lt;br /&gt;
        &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: true,&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
        &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
Leyenda:&lt;br /&gt;
 - &amp;lt;-- variable --&amp;gt; Esta sección será reemplazada por un texto que sea más cercano a lo especificado en el interior de la sección&lt;br /&gt;
 - &amp;lt;% Comentario %&amp;gt; Comentario&lt;br /&gt;
 - &amp;lt;hX&amp;gt; Un texto de alto tamaño&lt;br /&gt;
 - &amp;lt;\hr/&amp;gt; Una barra horizontal u alguna otra forma de separación.&lt;br /&gt;
 - &amp;lt;\p/&amp;gt; Un parrafo, preferible de una única linea&lt;br /&gt;
 - &amp;lt;\span/&amp;gt; Un parrafo de varias lineas&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;\/p&amp;gt;&lt;br /&gt;
&amp;lt;\span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;\/span&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&lt;br /&gt;
    &amp;lt;select&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&lt;br /&gt;
    &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de existir una pregunta donde se requiera una selección y también un input de pregunta, mezclar las dos disposiciones anteriores %&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&lt;br /&gt;
&amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&lt;br /&gt;
&amp;lt;\hr/&amp;gt;&lt;br /&gt;
&amp;lt;\p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;\/p&amp;gt;&lt;br /&gt;
&amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6516</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6516"/>
				<updated>2017-11-25T20:05:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorado de nuevo el estilo de las plantillas HTML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&lt;br /&gt;
Bibliotecas: &lt;br /&gt;
- restify: 6.3.4 &lt;br /&gt;
- rest: 2.0.0 &lt;br /&gt;
- lodash: 4.17.4 &lt;br /&gt;
- async: 2.6.0 &lt;br /&gt;
Sistema de gestión de bibliotecas: npm&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;votos&amp;quot;: {&lt;br /&gt;
        &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: true,&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
        &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pregunta &amp;lt;-- X --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;-- Texto de la preguna X --&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&lt;br /&gt;
    &amp;lt;select&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;lt;-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;-- Texto de la respuesta --&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&lt;br /&gt;
    &amp;lt;label...&amp;gt;&amp;lt;-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;input value=&amp;quot;&amp;lt;-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Gracias por responder a &amp;lt;-- Nombre de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6515</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6515"/>
				<updated>2017-11-25T20:03:42Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorado el estilo de la página&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&lt;br /&gt;
Bibliotecas: &lt;br /&gt;
- restify: 6.3.4 &lt;br /&gt;
- rest: 2.0.0 &lt;br /&gt;
- lodash: 4.17.4 &lt;br /&gt;
- async: 2.6.0 &lt;br /&gt;
Sistema de gestión de bibliotecas: npm&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;votos&amp;quot;: {&lt;br /&gt;
        &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: true,&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
        &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;!-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pregunta &amp;lt;!-- X --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;!-- Texto de la preguna X --&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&lt;br /&gt;
    &amp;lt;select&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;lt;!-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;!-- Texto de la respuesta --&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&lt;br /&gt;
    &amp;lt;label...&amp;gt;&amp;lt;!-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;input value=&amp;quot;&amp;lt;!-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;!-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Gracias por responder a &amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6514</id>
		<title>Cabina de votaciones - 17 18</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6514"/>
				<updated>2017-11-25T20:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;Ignalelop: Mejorada (por parte de Javier) la descripción de la API y añadidas las plantillas HTML.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== Resumen del trabajo ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Objetivo del subsistema ==&lt;br /&gt;
'''&lt;br /&gt;
Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de métodos la posibilidad de que los usuarios puedan votar anónimamente teniendo en cuenta las restricciones posibles que puedan existir.&lt;br /&gt;
&lt;br /&gt;
'''Tecnologías que se usarán''':&lt;br /&gt;
Subsistema: Cabina de votación&lt;br /&gt;
Lenguaje/Herramienta: Node.js 9.2 (Javascript v8)&lt;br /&gt;
Bibliotecas: &lt;br /&gt;
- restify: 6.3.4 &lt;br /&gt;
- rest: 2.0.0 &lt;br /&gt;
- lodash: 4.17.4 &lt;br /&gt;
- async: 2.6.0 &lt;br /&gt;
Sistema de gestión de bibliotecas: npm&lt;br /&gt;
Base de datos: No (Aunque es necesaria alguna forma de verificar los votos a partir del usuario encriptado).&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== APIs y datos que se usarán y devolverán ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
'''Estructura de un voto''':&lt;br /&gt;
&lt;br /&gt;
id: (int) identificador del voto [pk, autoincrementable]&lt;br /&gt;
encrypted_user: (string) identificador del usuario que ha votado de forma encriptada, es única y es posible verificar el voto (voto anónimo) [unique, not null]&lt;br /&gt;
id_election: (int) identificador de la votación [fk, not null]&lt;br /&gt;
encrypted_answers: (string) es un string con el contenido de la votación cifrado.&lt;br /&gt;
&lt;br /&gt;
'''Obtención de un voto''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/vote.json?id=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: id_vote: Identificador del voto (x)&lt;br /&gt;
            id_election: Identificador de la elección del voto (y)&lt;br /&gt;
Formato JSON Ejemplo: Obtención del voto 1&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Consulta de votos''':&lt;br /&gt;
Tipo: GET&lt;br /&gt;
URL: http://egc-cabina.es/api/get/votes.json?encrypted_user=x&amp;amp;id_election=y&lt;br /&gt;
Parámetros: encrypted_user: (opcional) Identificador del usuario encriptado. (x)&lt;br /&gt;
            id_election (opcional) Identificador de la votación (y)&lt;br /&gt;
Formato JSON Ejemplo: Buscando la votación 165&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;votos&amp;quot;: {&lt;br /&gt;
        &amp;quot;vote1&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;xgs5fdy2&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;voto2&amp;quot;: {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;2&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_user&amp;quot;: &amp;quot;whedvsg3&amp;quot;,&lt;br /&gt;
            &amp;quot;id_election&amp;quot;: &amp;quot;165&amp;quot;,&lt;br /&gt;
            &amp;quot;encrypted_anwers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Creación de voto''':&lt;br /&gt;
Tipo: POST&lt;br /&gt;
URL: http://egc-cabina.es/api/create/vote.json&lt;br /&gt;
Parámetros: id_user: (int) Identificador del usuario (sin encriptar)&lt;br /&gt;
            id_election: (int) Identificador de la votación&lt;br /&gt;
            answers: (list[string]) Lista con las respuestas de la votación de forma ordenada (en la posición 1 estará la respuesta a la pregunta 1 de la votación)&lt;br /&gt;
Formato JSON Ejemplo: Creando un voto por el usuario 23, la votación 34, el grupo de usuarios 13.&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;result&amp;quot;: true,&lt;br /&gt;
    &amp;quot;vote&amp;quot;: {&lt;br /&gt;
        &amp;quot;id&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_user&amp;quot;: &amp;quot;as5d8gr4&amp;quot;,&lt;br /&gt;
        &amp;quot;id_election&amp;quot;: &amp;quot;34&amp;quot;,&lt;br /&gt;
        &amp;quot;id_group&amp;quot;: &amp;quot;13&amp;quot;,&lt;br /&gt;
        &amp;quot;encrypted_answers&amp;quot;: &amp;quot;...&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plantillas HTML ==&lt;br /&gt;
&lt;br /&gt;
Se tiene pensado que el formato de la cabina de votación sea el siguiente:&lt;br /&gt;
&lt;br /&gt;
'''Votación de la pregunta X'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;hX&amp;gt;&amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;!-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pregunta &amp;lt;!-- X --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;&amp;lt;!-- Texto de la preguna X --&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una lista de posibles opciones donde sólo se selecciona una %&amp;gt;&lt;br /&gt;
    &amp;lt;select&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;lt;!-- Valor de la respuesta --&amp;gt;&amp;quot;&amp;gt;&amp;lt;!-- Texto de la respuesta --&amp;gt;&lt;br /&gt;
    &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;% En el caso de que se trate de una respuesta donde habrá que poner texto %&amp;gt;&lt;br /&gt;
    &amp;lt;label...&amp;gt;&amp;lt;!-- Texto de la pregunta --&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;input value=&amp;quot;&amp;lt;!-- Valor de la pregunta --&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;button &amp;lt;% Botón de siguiente pregunta %&amp;gt;&amp;gt;Siguiente pregunta&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Final de la votación de la encuesta'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;hX&amp;gt;&amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/hX&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;!-- Descripción de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Gracias por responder a &amp;lt;!-- Nombre de la encuesta --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;button&amp;gt;Finalizar&amp;lt;/button&amp;gt; &amp;lt;% Con este botón, se enviaría a la cabina de votación el voto y los credenciales del usuario que lo ha creado %&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ignalelop</name></author>	</entry>

	</feed>