Spaces:
Runtime error
Runtime error
Upload app.py
Browse files
app.py
CHANGED
@@ -1,7 +1,60 @@
|
|
1 |
-
import
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
|
6 |
-
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import pandas as pd
|
3 |
+
from flask import Flask, request
|
4 |
|
5 |
+
# Ruta del archivo de candidatos
|
6 |
+
ruta_candidatos = os.path.join(os.path.dirname(__file__), "Candidatos.txt")
|
7 |
|
8 |
+
# Leer los candidatos desde el archivo
|
9 |
+
candidatos = {}
|
10 |
+
with open(ruta_candidatos, "r") as f:
|
11 |
+
for line in f:
|
12 |
+
if line.strip():
|
13 |
+
candidato, partido = line.split(":")
|
14 |
+
candidatos[candidato.strip()] = partido.strip()
|
15 |
+
|
16 |
+
# Crear base de datos de votos
|
17 |
+
votos = pd.DataFrame(columns=["IP", "Candidato", "Votos", "Nombre"])
|
18 |
+
|
19 |
+
# Crear la aplicación Flask
|
20 |
+
app = Flask(__name__)
|
21 |
+
|
22 |
+
# Ruta para la interfaz de votación
|
23 |
+
@app.route("/")
|
24 |
+
def votacion():
|
25 |
+
ip = request.remote_addr
|
26 |
+
if ip in votos["IP"].values:
|
27 |
+
return "Ya has votado."
|
28 |
+
else:
|
29 |
+
return f'''
|
30 |
+
<h1>Elecciones Presidenciales 2023</h1>
|
31 |
+
<h2>Candidatos:</h2>
|
32 |
+
<ul>
|
33 |
+
{''.join(f"<li>{candidato} - {partido}</li>" for candidato, partido in candidatos.items())}
|
34 |
+
</ul>
|
35 |
+
<form action="/votar" method="post">
|
36 |
+
<label for="candidato">Elige tu candidato:</label>
|
37 |
+
<select name="candidato" id="candidato">
|
38 |
+
{''.join(f"<option value='{candidato}'>{candidato}</option>" for candidato in candidatos.keys())}
|
39 |
+
</select>
|
40 |
+
<br>
|
41 |
+
<label for="nombre">Tu nombre:</label>
|
42 |
+
<input type="text" name="nombre" id="nombre">
|
43 |
+
<br>
|
44 |
+
<input type="submit" value="Votar">
|
45 |
+
</form>
|
46 |
+
'''
|
47 |
+
|
48 |
+
# Ruta para procesar los votos
|
49 |
+
@app.route("/votar", methods=["POST"])
|
50 |
+
def procesar_voto():
|
51 |
+
ip = request.remote_addr
|
52 |
+
candidato = request.form.get("candidato")
|
53 |
+
nombre = request.form.get("nombre")
|
54 |
+
datos_voto = {"IP": ip, "Candidato": candidato, "Votos": 1, "Nombre": nombre}
|
55 |
+
votos = votos.append(datos_voto, ignore_index=True)
|
56 |
+
return "Gracias por tu voto."
|
57 |
+
|
58 |
+
# Ejecutar la aplicación Flask
|
59 |
+
if __name__ == "__main__":
|
60 |
+
app.run()
|