<?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=Jualopmun2</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=Jualopmun2"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-egc/index.php/Especial:Contribuciones/Jualopmun2"/>
		<updated>2026-06-10T09:21:37Z</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=7434</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=7434"/>
				<updated>2018-01-14T16:01:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jualopmun2: &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;br /&gt;
&lt;br /&gt;
== Documentación==&lt;br /&gt;
&lt;br /&gt;
Os dejamos la documentación final del proyecto para que os sirva de ayuda para los próximos años en la asignatura.&lt;br /&gt;
&lt;br /&gt;
Enlace de los documentos: https://mega.nz/#F!C5cSQIBT!8mbrI89vF0l96D0Yby1SJA&lt;/div&gt;</summary>
		<author><name>Jualopmun2</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6728</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=6728"/>
				<updated>2017-12-03T15:37:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jualopmun2: /* Código de respuesta del servidor HTTP */&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;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>Jualopmun2</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6727</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=6727"/>
				<updated>2017-12-03T15:36:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jualopmun2: /* Código de respuesta del servidor HTTP */&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;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>Jualopmun2</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18_-_G2&amp;diff=6726</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=6726"/>
				<updated>2017-12-03T15:32:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jualopmun2: &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;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;
-200 OK: El usuario ha realizado correctamente el voto.&lt;br /&gt;
&lt;br /&gt;
-403 FORBIDEN: 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;
-404 NOT FOUND: El usuario no ha realizado correctamente el voto.&lt;/div&gt;</summary>
		<author><name>Jualopmun2</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-egc/index.php?title=Cabina_de_votaciones_-_17_18&amp;diff=6487</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=6487"/>
				<updated>2017-11-24T10:18:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jualopmun2: Página creada con «''' == Resumen del trabajo == ''' Nuestro trabajo consistirá en realizar el apartado de cabina de votación que consiste en permitir mediante el uso de un conjunto de mét...»&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;
== Tecnologías que se usarán ==&lt;br /&gt;
'''&lt;br /&gt;
Se usará node.js (Javascript) junto con npm para poder importar librerías con mayor facilidad.&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;
Necesitaremos obtener los datos básicos de la encuesta (nombre de la encuesta, autor de la misma, descripción si hubiera...), el conjunto de preguntas con sus respectivas respuestas de dicha encuesta, y los datos del usuario que está votando (o en caso de ser anónimo, poder verificar las reglas de negocio relacionadas con dicho usuario si pudiera o no votar).&lt;br /&gt;
Devolveremos por cada usuario (de manera encriptada y anónima) las respuestas elegidas por el usuario para cada pregunta de la encuesta.&lt;/div&gt;</summary>
		<author><name>Jualopmun2</name></author>	</entry>

	</feed>