Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
e7a3744
primer cambio del repo
Alegomcab1 Nov 19, 2020
257b8fe
Feature refactorizacion de variales y tipo PARIDAD
Alegomcab1 Dec 30, 2020
2e125bf
Merge pull request #12 from Alegomcab1/master
Alegomcab1 Dec 30, 2020
f111378
Doc. Creado Readme2
josregmej Dec 31, 2020
c855a20
Feature: Creación de urls personalizables; #5
franchesco98 Jan 1, 2021
4f0300a
Feature: Añadido url de ayuda en el campo 'url'; #5
franchesco98 Jan 1, 2021
52f0f62
Feature: Añadida restricción de url única; #5
franchesco98 Jan 1, 2021
31facac
Fix: Eliminado comentario innecesario; #5
franchesco98 Jan 1, 2021
adcf087
Feature
luiparlop1 Jan 2, 2021
2894def
Feature: Añadidos archivos bootstrap; #13
davcacrom Jan 3, 2021
3127309
Feature
luiparlop1 Jan 3, 2021
4b07366
Fix: Corregido error 404 urls personalizables
franchesco98 Jan 4, 2021
9fd02ee
Feature: Eliminados prints innecesarios
franchesco98 Jan 4, 2021
f0ddf2e
Feature: Modificada página cabina; #13
davcacrom Jan 4, 2021
978bf0c
Feature: Arreglada funcionalidad de preguntas Yes/No; #1
luiparlop1 Jan 6, 2021
98c5501
Merge pull request #1 from RioTinto-Votaciones/feature/urlPersonalizable
josregmej Jan 6, 2021
5ac70d3
Merge pull request #2 from RioTinto-Votaciones/voting-yesorno
josregmej Jan 6, 2021
1f12ce2
Feature: Modificada fuente cabecera; #13
Alejandrogm1 Jan 6, 2021
8c90388
Feature: implementado modelo de Political Party
jailucloz Jan 6, 2021
a69e733
Feature: implementada CRUD Political Party
jailucloz Jan 6, 2021
6d212ba
Merge pull request #17 from RioTinto-Votaciones/politicalParty
jailucloz Jan 6, 2021
99deaf1
Merge pull request #1 from EGC-RioTinto-Cabina/Modificar-CSS
davcacrom Jan 7, 2021
b3a7a2f
Feature: implementado html login; #16
davcacrom Jan 11, 2021
f498931
Feature: Añadir vista login; #16
davcacrom Jan 12, 2021
bab3ce3
Merge pull request #2 from EGC-RioTinto-Cabina/Vista-Login
davcacrom Jan 12, 2021
b26d035
Feature: añadir vista welcome; #18
davcacrom Jan 12, 2021
f27ac58
Merge pull request #3 from EGC-RioTinto-Cabina/Vista-Welcome
davcacrom Jan 12, 2021
ef67a00
Feature: Realizado CSS de Login; #22
Alejandrogm1 Jan 12, 2021
a2282e3
Merge pull request #4 from EGC-RioTinto-Cabina/cabina-develop
lauporsol Jan 13, 2021
e74cb5b
Añadida función para controlar la fecha a views
Jan 13, 2021
a0a5eae
Añadido de configuración de traducción
lauporsol Jan 13, 2021
fab6d61
Diseño de base.html
lauporsol Jan 13, 2021
81518bb
Arreglados errores en pagina base
Jan 13, 2021
59b5477
Feature: Añadir vista registro; #25
davcacrom Jan 13, 2021
6946d75
Merge pull request #5 from EGC-RioTinto-Cabina/Vista-Registro
davcacrom Jan 14, 2021
3ff3580
Merge branch 'yesnobooth' into cabina-develop
lauporsol Jan 14, 2021
480ddf0
Merge pull request #7 from EGC-RioTinto-Cabina/cabina-develop
lauporsol Jan 14, 2021
8db1bba
Implementación YES/NO EN PROCESO
lauporsol Jan 14, 2021
c68ec3f
Implementación YES/NO EN PROCESO
Jan 14, 2021
a038f54
Featue: Corregir Vista Welcome; #26
davcacrom Jan 14, 2021
8970f63
Feature: Modificar CSS Registro; #27
Alejandrogm1 Jan 14, 2021
500e2fd
Cambios en votación para probar yesno
Jan 15, 2021
aac9163
Cambios de prueba en .views
lauporsol Jan 15, 2021
2cf4cb3
Implementación yes/no
lauporsol Jan 15, 2021
d998738
.
lauporsol Jan 15, 2021
fe21361
Feature: Corregir Vista Welcome; #26
davcacrom Jan 15, 2021
ee017a4
Merge pull request #8 from EGC-RioTinto-Cabina/Modificar-CSS-Registro
davcacrom Jan 15, 2021
9c23836
Merge branch 'cabina-develop' into Modificar-CSS-Login
davcacrom Jan 15, 2021
d28b387
Merge pull request #9 from EGC-RioTinto-Cabina/Modificar-CSS-Login
davcacrom Jan 15, 2021
64adfa3
Bug: Corregir vista welcome; #26
davcacrom Jan 15, 2021
a640950
Intento de implementación de Json manual
lauporsol Jan 15, 2021
e9706a4
Feature: Corregir vista welcome; #26
davcacrom Jan 15, 2021
bbcc133
Implementación Json de prueba
lauporsol Jan 15, 2021
a562d29
Implementación de Json para prueba
lauporsol Jan 15, 2021
4a27792
Arreglado formateo de fecha del JSON
Jan 15, 2021
b4694a3
Implementación de yesorno en booth.html, falta action
lauporsol Jan 16, 2021
9e0dd4b
Fix: Corregir vista welcome; #26
davcacrom Jan 16, 2021
3deac24
Merge pull request #10 from EGC-RioTinto-Cabina/Vista-Welcome-Completa
davcacrom Jan 16, 2021
5fcb7d0
Añadida primera version del about para comprobar su funcionabilidad
1337KR3W Jan 16, 2021
f52ff9d
Mejorado de la vista del about.html con imagenes
1337KR3W Jan 16, 2021
6d4dda2
Feature: Login cliente escritorio
alvalfric Jan 16, 2021
355eca2
Mejorado aspecto visual e introducidos algunos datos
1337KR3W Jan 16, 2021
fe9f927
Feature: UI del cliente de escritorio
alvalfric Jan 16, 2021
c89b035
Feature: Check access a votacion escritorio
alvalfric Jan 16, 2021
52f03b8
Feature: Ventana votacion escritorio
alvalfric Jan 16, 2021
f986283
Feature: Peticion de censo; #30
davcacrom Jan 16, 2021
a128e54
Modificaciones estéticas
1337KR3W Jan 16, 2021
b341a1c
Implementada multirespuesta en la interfaz de cabina
Jan 16, 2021
ac4f006
Feature: Peticion de censo; #30
davcacrom Jan 16, 2021
1b57b7c
Implementación multirespuesta
lauporsol Jan 16, 2021
4c37068
Feature: Peticion censo usuario; #30
davcacrom Jan 16, 2021
a35ba1a
Merge pull request #11 from EGC-RioTinto-Cabina/Peticion-censo
davcacrom Jan 16, 2021
8172126
Insertada cabecera en Booth, yesorno con el mismo formato que multiple
Jan 16, 2021
d8cf5b9
Feature: Modificar CSS Welcome; #23
Alejandrogm1 Jan 16, 2021
1c47820
Fix: Corregido CSS Welcome; #23
Alejandrogm1 Jan 16, 2021
46c2017
Retoque del css de la página de votación
lauporsol Jan 17, 2021
6f2f3a0
Foto bg
lauporsol Jan 17, 2021
9db3579
Añadida pagina confirmación de la votación
Jan 17, 2021
4396020
Merge branch 'about' into cabina-develop
Jan 17, 2021
0990236
Merge pull request #12 from EGC-RioTinto-Cabina/cabina-develop
Jan 17, 2021
8046d0d
Arreglo de b-fom-radio
lauporsol Jan 17, 2021
a2e6249
Implementación formulario yes or no
lauporsol Jan 17, 2021
4310f89
Merge pull request #13 from EGC-RioTinto-Cabina/about
Jan 17, 2021
6f0887a
Formulario
lauporsol Jan 17, 2021
d1bc961
Fix: Arreglado CSS Welcome; #23
Alejandrogm1 Jan 17, 2021
06a23d1
Merge branch 'cabina-develop' into Modificar-CSS-Welcome
davcacrom Jan 17, 2021
1df861e
Merge pull request #14 from EGC-RioTinto-Cabina/Modificar-CSS-Welcome
davcacrom Jan 17, 2021
f931ca3
Feature: Comprobar si el usuario ya ha votado
alvalfric Jan 17, 2021
f18dd13
Feature: Tests Registro; #28
Alejandrogm1 Jan 17, 2021
f7af477
Implementación de tests y restricción de acceso a páginas
lauporsol Jan 17, 2021
2be0650
Test Votings
lauporsol Jan 17, 2021
73b03a3
Añadidos tests de interfaz
Jan 17, 2021
6524908
Implementación test_expected_serialized_json
lauporsol Jan 17, 2021
7a36ace
Test para comprobar datos incompletos añadido
Jan 17, 2021
6986503
Implementación test_list
lauporsol Jan 17, 2021
b0b9277
Merge pull request #15 from EGC-RioTinto-Cabina/feature/gtkDesktop
alvalfric Jan 17, 2021
dc4b8d6
Añadido formulario de multirespuesta
Jan 17, 2021
3219fac
Comentado de MultipleQuestion por imposibilidad de uso por parte de
lauporsol Jan 17, 2021
20e968b
Merge branch 'cabina-develop' into yesnobooth
lauporsol Jan 17, 2021
91336f3
Merge pull request #16 from EGC-RioTinto-Cabina/yesnobooth
lauporsol Jan 17, 2021
67bc546
Tests: Pruebas Login y Peticion; #34
davcacrom Jan 17, 2021
b2f8f71
Merge branch 'cabina-develop' into Pruebas-peticion-censo
lauporsol Jan 17, 2021
004a89a
Merge pull request #17 from EGC-RioTinto-Cabina/Pruebas-peticion-censo
lauporsol Jan 17, 2021
1877465
Merge pull request #18 from EGC-RioTinto-Cabina/cabina-develop
lauporsol Jan 17, 2021
66fa5a7
Añadida restricción de autenticación para página de votación
lauporsol Jan 17, 2021
5ace315
Merge pull request #19 from EGC-RioTinto-Cabina/yesnobooth
lauporsol Jan 17, 2021
f6c81c0
Fix: Archivo Travis.yml; #35
davcacrom Jan 17, 2021
520a843
Merge pull request #20 from EGC-RioTinto-Cabina/Travis-Cabina
davcacrom Jan 17, 2021
e4f695b
Merge branch 'cabina-develop' into Tests-Registro
davcacrom Jan 17, 2021
7204fa3
Merge pull request #22 from EGC-RioTinto-Cabina/Tests-Registro
davcacrom Jan 17, 2021
94ad08b
Update main.py
alvalfric Jan 17, 2021
2a44bd2
Comentado de algunas pruebas
lauporsol Jan 17, 2021
6dbc8b9
Comentado de pruebas
lauporsol Jan 17, 2021
bdc7ac1
Add files via upload
davcacrom Jan 17, 2021
ecceb4d
Merge pull request #23 from EGC-RioTinto-Cabina/Local-settings-branch
davcacrom Jan 17, 2021
d9b16b7
Cambio en el travis.yml
lauporsol Jan 17, 2021
b115466
Merge pull request #24 from EGC-RioTinto-Cabina/feature/gtkDesktop
alvalfric Jan 17, 2021
e9def9b
Cambio en el travis.yml
lauporsol Jan 17, 2021
a21e321
Merge branch 'cabina-develop' of https://github.com/EGC-RioTinto-Cabi…
lauporsol Jan 17, 2021
0e06c92
Cambio en el travis.yml
lauporsol Jan 17, 2021
a0f0046
Cambio en el travis.yml
lauporsol Jan 17, 2021
202f492
Cambio en el travis.yml
lauporsol Jan 17, 2021
c1baea9
Cambio en el travis.yml
lauporsol Jan 17, 2021
bc3ed35
Cambio en el travis.yml
lauporsol Jan 17, 2021
714f170
Cambio en el travis.yml
lauporsol Jan 17, 2021
1d97517
Merge pull request #25 from EGC-RioTinto-Cabina/cabina-develop
lauporsol Jan 17, 2021
09f642a
Merge pull request #44 from EGC-RioTinto-Cabina/master
lauporsol Jan 17, 2021
d2a936b
Merge branch 'master' into booth
lauporsol Jan 17, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,32 @@ services:
- postgresql
addons:
postgresql: "9.4"
chrome: stable
firefox: latest
before_script:
- psql -U postgres -c "create user decide password 'decide'"
- psql -U postgres -c "create database test_decide owner decide"
- psql -U postgres -c "ALTER USER decide CREATEDB"
- psql -U postgres -c "create database decide owner decide"
language: python
python:
- "3.6"
install:
- pip install -r requirements.txt
- pip install codacy-coverage
- pip install selenium
- sudo apt-get install firefox
- wget "https://github.com/mozilla/geckodriver/releases/download/v0.27.0/geckodriver-v0.27.0-linux64.tar.gz"
- tar xfz geckodriver-v0.27.0-linux64.tar.gz
- sudo mv -f geckodriver /usr/bin
script:
- cd decide
- coverage run --branch --source=. ./manage.py test --keepdb --with-xunit
- coverage run --branch --source=. ./manage.py test booth/ --keepdb --with-xunit
- coverage xml
- python-codacy-coverage -r coverage.xml
notifications:
email:
recipients:
- davcacrom@alum.us.es
on_succes: never
on_failure: always
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage)

Plataforma voto electrónico educativa
Plataforma voto electrónico educativa pro
=====================================

El objetivo de este proyecto es implementar una plataforma de voto
Expand Down
16 changes: 16 additions & 0 deletions README2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage)

Estructura de commits
========================================

El formato utilizado en los mensajes de los commits será:

* **Type**: grupo de cambios al que pertenece el commit. Puede ser de varios tipos:
* **Fix**: correción de un error
* **Feature**: nueva funcionalidad en el sistema o refactorización del código
* **Doc**: cambios en la documentación
* **Test**: creación o actualización de tests

* **Subject**: asunto concreto del commit. Se debe utilizar el participio
* **Issue**: campo opcional. Incidencia a la que hace referencia.
* **Body**: descripción del contenido del commit. Formato libre. Se debe utilizar la tercera en pretérito perfecto
12 changes: 12 additions & 0 deletions decide/base/static/css/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#bg {
background-repeat: no-repeat;
background-size: 1800px 900px;
background-position: top;
background-attachment: fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}



Binary file added decide/base/static/img/bg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added decide/base/static/img/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 28 additions & 12 deletions decide/base/templates/base.html
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
{% load static %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>{% block title %}Decide!{% endblock %}</title>
{% block extrahead %}{% endblock %}
</head>
<body>
{% block content %}
{% endblock %}
<html lang='es'>

{% block extrabody %}{% endblock %}
</body>
</html>
<head>
<meta charset='utf-8'>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="{% static 'css/style.css' %}">
<link href="//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>

<body id="bg" style="background-image: url('{%static "img/bg.jpg"%}');">
<header>

<div class="nav-header">
<a id="logo" class="navbar-brand" rel="home" href='/booth' title="Decide"><img
src="{%static "img/logo.png"%}" /></a>
</div>
{% block encabezado %}{% endblock %}
</header>
<section>
{% block contenido %}{% endblock %}
</section>
{% block pie %}{% endblock %}
</body>

</html>
14 changes: 14 additions & 0 deletions decide/base/templates/base.html.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
XXXXXXXXX XXXXX
XXXXXX
XXXXXX
XXXXX XXXXXXXXXXXXXXX XX
XXXXXXXBBBBB BBBBBXXXXXXXBBBBBBBBXXXXXXXX
BBBBB BBBBBBBBBBBBBBBBB
XXXXXXX
XXXXXX
BBBBB BBBBBBB
BBBBBBBB

BBBBB BBBBBBBBBBBBBBBBB
XXXXXXX
XXXXXXX
1 change: 1 addition & 0 deletions decide/booth/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.contrib import admin

# Register your models here.

3 changes: 3 additions & 0 deletions decide/booth/desktopClient/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions decide/booth/desktopClient/.idea/decide.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions decide/booth/desktopClient/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions decide/booth/desktopClient/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

210 changes: 210 additions & 0 deletions decide/booth/desktopClient/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
import gi
import datetime

gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf, Gdk
from gi.repository.Gdk import Color
import os, sys, psycopg2, psycopg2.extras, hashlib
import django.contrib.auth.hashers

class GUI:
def __init__(self):
django.contrib.auth.hashers.settings.configure()

self.builder = Gtk.Builder()
self.builder.add_from_file('main.ui')
self.builder.connect_signals(self)

try:
conn = psycopg2.connect(dbname="decidedb2", user="decide2", password="decide", host="127.0.0.1", port="5432")
self.cur = conn.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
print("Conectado")
except Exception as e:
print(e)

window = self.builder.get_object('window')
window.show_all()
window.fullscreen()

def on_window_destroy(self, window):
Gtk.main_quit()

def on_login_clicked(self, button, false=None):
username = self.builder.get_object('username').get_text()
password = self.builder.get_object('password').get_text()
voting_id = self.builder.get_object('votingId').get_text()

COLOR_INVALID = Color(50000, 0, 0)
self.builder.get_object('usernameLabelError').modify_fg(Gtk.StateFlags.NORMAL, COLOR_INVALID)
self.builder.get_object('passwordLabelError').modify_fg(Gtk.StateFlags.NORMAL, COLOR_INVALID)
self.builder.get_object('votingIdLabelError').modify_fg(Gtk.StateFlags.NORMAL, COLOR_INVALID)

if not username:
self.builder.get_object('usernameLabelError').set_text("Empty Username")
else:
self.builder.get_object('usernameLabelError').set_text("")

if not password:
self.builder.get_object('passwordLabelError').set_text("Empty Password")
else:
self.builder.get_object('passwordLabelError').set_text("")

if not voting_id:
self.builder.get_object('votingIdLabelError').set_text("Must insert voting identifier")
else:
self.builder.get_object('votingIdLabelError').set_text("")

if password and username and voting_id and voting_id:
self.cur.execute("SELECT id, username, password from public.auth_user where username = %s", [username])
user = self.cur.fetchone()

if not user:
print("User not found")
self.builder.get_object('usernameLabelError').set_text("Invalid user or password")
else:
cryptedPassword = user[2]
passOk = django.contrib.auth.hashers.check_password(password, cryptedPassword)
check_voting_access = self.check_voting_access(user, voting_id)
check_already_voted = self.check_already_voted(user, voting_id)
if passOk and check_voting_access and check_already_voted == False:
print("Correct user")
user_token = user[0]
print("User token " + str(user_token))
self.voting(user, voting_id)
elif passOk:
self.builder.get_object('votingIdLabelError').set_text("You don't have access to the voting")
else:
print("Invalid password")
self.builder.get_object('usernameLabelError').set_text("Invalid user or password")

def logged_user(self, user):
self.builder.add_from_file('list_votings.ui')
self.cur.execute("SELECT * from voting_voting")
votings = self.cur.fetchall()

self.grid = Gtk.Grid()
self.grid.set_column_homogeneous(True)
self.grid.set_row_homogeneous(True)
self.add(self.grid)

for voting in votings:
print(voting[1] + " - "+ voting[2])

def check_voting_access(self, user, voting_id):
start_date_ok = False
end_date_ok = False
voting_id_ok = False

self.cur.execute("SELECT NOW()")
current_date_str = str(self.cur.fetchone()[0])[:-6]
current_date = datetime.datetime.strptime(current_date_str, '%Y-%m-%d %H:%M:%S.%f')

self.cur.execute("SELECT * from voting_voting where id = %s", [voting_id])
voting = self.cur.fetchone()

if voting == None:
self.builder.get_object('votingIdLabelError').set_text("No se ha encontrado")
else:
start_date_str = str(voting[3])[:-6]
start_date = datetime.datetime.strptime(current_date_str, '%Y-%m-%d %H:%M:%S.%f')
start_date_ok = start_date <= current_date

end_date_ok = voting[4] == None

self.cur.execute("SELECT * from census_census where voting_id = %s and voter_id = %s", [voting_id, user[0]])
select = self.cur.fetchone()
voting_id_ok = select != None

return start_date_ok and end_date_ok and voting_id_ok

def check_already_voted(self, user, voting_id):

self.cur.execute("SELECT * from store_vote where voting_id = %s and voter_id = %s", [voting_id,user[0]])
result = self.cur.fetchone()

return result != None

def voting(self, user, voting_id):
# self.builder.add_from_file('voting.ui')
self.cur.execute("SELECT * from voting_voting where id = %s", [voting_id])
voting = self.cur.fetchone()

votingWin = VotingWindow(voting)
votingWin.show_all()
votingWin.fullscreen()

class VotingWindow(Gtk.Window):
def __init__(self, voting):
Gtk.Window.__init__(self, title=str(voting[0]) + " - " + str(voting[1]))

try:
conn = psycopg2.connect(dbname="decidedb2", user="decide2", password="decide", host="127.0.0.1", port="5432")
self.cur = conn.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
print("Conectado")
except Exception as e:
print(e)

self.box = Gtk.Box(spacing=6, orientation="vertical")
self.add(self.box)

self.label = Gtk.Label(label=str(voting[0]) + " - " + str(voting[1]))
self.box.pack_start(self.label, True, True, 0)
self.label = Gtk.Label(label="Ejemplo de pregunta")
self.box.pack_start(self.label, True, True, 0)
radioButton1 = Gtk.RadioButton("Opción 1")
self.box.pack_start(radioButton1, True, True, 0)
radioButton2 = Gtk.RadioButton.new_from_widget(radioButton1)
radioButton2.set_label("Opción 2")
self.box.pack_start(radioButton2, True, True, 0)
radioButton3 = Gtk.RadioButton.new_from_widget(radioButton1)
radioButton3.set_label("Opción 3")
self.box.pack_start(radioButton3, True, True, 0)
'''
self.cur.execute("SELECT question_id from voting_voting_question where voting_id = %s", [voting[0]])
questionsIdentifiers = self.cur.fetchall()

questions = []
questionsOptions = []

for questionId in questionsIdentifiers:
self.cur.execute("SELECT * from voting_question where id = %s", [questionId[0]])
question = self.cur.fetchall()
questions.append((question[0][0], question[0][1]))

for q in questions:
self.cur.execute("SELECT * from voting_questionoption where question_id = %s", [q[0]])
options = self.cur.fetchall()
for option in options:
questionsOptions.append((option[0], option[1], option[2], option[3]))

for q in questions:
question_description = Gtk.Label(label="Question: "+str(q[1]))
self.box.pack_start(question_description, True, True, 0)

for option in questionsOptions:
i = 0
if option[3] == q[0]:
if i == 0:
radioButton1 = Gtk.RadioButton("Option: "+str(option[0]))
self.box.pack_start(radioButton1, True, True, 0)
else:
radioButton2 = Gtk.RadioButton.new_from_widget(radioButton1)
radioButton2.set_label("Option: "+str(option[0]))
self.box.pack_start(radioButton2, True, True, 0)
'''
sendButton = Gtk.Button.new_with_label("Votar")
self.box.pack_start(sendButton, True, True, 0)

def on_logout_clicked(self, window):
user = []
Gtk.VotingWindow.destroy()



def main():
app = GUI()
Gtk.main()


if __name__ == "__main__":
sys.exit(main())
Loading