diff --git a/decide/census/forms.py b/decide/census/forms.py new file mode 100644 index 0000000000..7058e1e9ab --- /dev/null +++ b/decide/census/forms.py @@ -0,0 +1,4 @@ +from django import forms + +class votacionForm(forms.Form): + votacion = forms.IntegerField(label='Id de la votación', widget=forms.TextInput, required=True) diff --git a/decide/census/templates/exportarcenso.html b/decide/census/templates/exportarcenso.html new file mode 100644 index 0000000000..130c1fa43e --- /dev/null +++ b/decide/census/templates/exportarcenso.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} + +{% block extrahead %}{% endblock %} + +{% block content %} + +

Funcionalidad de censos

+ + Se han encontrado los siguientes censos: + +{% for c in censos %} + Id del votante: {{c.voter_id}} +{% endfor %} + + +{% endblock %} + + + {% block extrabody %}{% endblock %} diff --git a/decide/census/templates/inicio.html b/decide/census/templates/inicio.html new file mode 100644 index 0000000000..97f3eeb981 --- /dev/null +++ b/decide/census/templates/inicio.html @@ -0,0 +1,29 @@ +{% extends 'base.html' %} + +{% block extrahead %}{% endblock %} + +{% block content %} + +

Módulo de censos

+ +

Exportación de censo

+ +
{% csrf_token %} + {{formulario}} + +
+ +{% if censos %} +{% for c in censos %} +Id del votante: {{c.voter_id}} +
+{% endfor %} + +
+ + +{% endif %} + +{% endblock %} + +{% block extrabody %}{% endblock %} diff --git a/decide/census/urls.py b/decide/census/urls.py index b5cb9feee8..2364582970 100644 --- a/decide/census/urls.py +++ b/decide/census/urls.py @@ -3,6 +3,8 @@ urlpatterns = [ - path('', views.CensusCreate.as_view(), name='census_create'), + path('', views.elegirVotacion), + path('exportCSV/', views.exportarCenso), + path('create/', views.CensusCreate.as_view(), name='census_create'), path('/', views.CensusDetail.as_view(), name='census_detail'), ] diff --git a/decide/census/views.py b/decide/census/views.py index 26dcf92f19..74f37a56a9 100644 --- a/decide/census/views.py +++ b/decide/census/views.py @@ -1,5 +1,6 @@ from django.db.utils import IntegrityError from django.core.exceptions import ObjectDoesNotExist +from django.http import HttpResponse from rest_framework import generics from rest_framework.response import Response from rest_framework.status import ( @@ -12,6 +13,9 @@ from base.perms import UserIsStaff from .models import Census +import csv +from django.shortcuts import render +from census.forms import votacionForm class CensusCreate(generics.ListCreateAPIView): @@ -34,6 +38,7 @@ def list(self, request, *args, **kwargs): return Response({'voters': voters}) + class CensusDetail(generics.RetrieveDestroyAPIView): def destroy(self, request, voting_id, *args, **kwargs): @@ -49,3 +54,31 @@ def retrieve(self, request, voting_id, *args, **kwargs): except ObjectDoesNotExist: return Response('Invalid voter', status=ST_401) return Response('Valid voter') + + + +def elegirVotacion(request): + formulario = votacionForm() + censos = None + idVotacion = None + if request.method == 'POST': + formulario = votacionForm(request.POST) + if formulario.is_valid(): #Corre la validación correspondiente + idVotacion = formulario.cleaned_data['votacion'] + censos = Census.objects.filter(voting_id = idVotacion) + return render(request, 'inicio.html', {'formulario':formulario, 'censos':censos, 'idVotacion':idVotacion}) + + + + + +def exportarCenso(request, idVotacion): + response = HttpResponse(content_type='text/csv') + response['Content-Disposition'] = 'attachment; filename="censo.csv"' + file = csv.writer(response) + censos = Census.objects.filter(voting_id = idVotacion) + file.writerow(['Id votante']) + for c in censos: + file.writerow([c.voter_id]) + + return response diff --git a/decide/decide/urls.py b/decide/decide/urls.py index d73f3cdb5d..a9d3fd276c 100644 --- a/decide/decide/urls.py +++ b/decide/decide/urls.py @@ -17,6 +17,7 @@ from django.contrib import admin from django.urls import path, include from rest_framework_swagger.views import get_swagger_view +from census import views schema_view = get_swagger_view(title='Decide API')