Example #1
0
def addAllInCity(request):

    voting_id = request.GET.get('voting_id')
    city = request.GET.get('city')
    voters = User.objects.filter(city__iexact=city)

    list_voting = set(Voting.objects.all().values_list('id', flat=True))

    if request.user.is_staff:
        if voters:
            if int(voting_id) in list_voting:
                if not check_voting_is_started(int(voting_id)):
                    for voter in voters:
                        try:
                            census = Census(voting_id=voting_id, voter_id=voter.id)
                            census.save()
                        except IntegrityError:
                            continue
                else:
                    messages.add_message(request, messages.ERROR, internacionalize_message("The voting is started"))
            else:
                messages.add_message(request, messages.ERROR, internacionalize_message("Invalid voting id"))
        else:
                messages.add_message(request, messages.WARNING, internacionalize_message("No users in city requested"))
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    #return redirect('/census/?voting_id=' + voting_id)
    return redirect('listCensus')
Example #2
0
def addAllByAge(request):

    if request.user.is_staff:
        voting_id = request.GET.get('voting_id')

        list_voting = set(Voting.objects.all().values_list('id', flat=True))

        if int(voting_id) in list_voting:
            if not check_voting_is_started(int(voting_id)):
                younger = request.GET.get('younger')
                older = request.GET.get('older')

                if older is None or len(older) == 0: #Comprobando que la edad no este vacía.
                    older = '200'

                if younger is None or len(younger) == 0:
                    younger = '-1'

                if check_str_is_int(older) and check_str_is_int(younger): #Comprobando que en caso de tener un valor sea un entero.

                    now1 = datetime.now()
                    now2 = now1
                    superior_limit = now1.replace(year=now1.year-int(younger))
                    lower_limit = now2.replace(year=now2.year-int(older))

                    voters = User.objects.filter(birthdate__gte=lower_limit)
                    voters = voters.filter(birthdate__lte=superior_limit)

                    if voters:
                        for voter in voters:

                            try:
                                census = Census(voting_id=int(voting_id), voter_id=voter.id)
                                census.save()

                            except IntegrityError:
                                continue

                else:
                    messages.add_message(request, messages.ERROR, internacionalize_message("Age is not an integer"))

            else:
                messages.add_message(request, messages.ERROR, internacionalize_message("The voting is started"))

        else:
            messages.add_message(request, messages.ERROR, internacionalize_message("Invalid voting id"))

    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    return redirect('listCensus')
Example #3
0
def passVotings(request):
    if request.user.is_staff:
        votings = Voting.objects.all()
        if votings:

            return render(request, "add_census_filtros_simples.html", {'votings': votings})

        else:
            messages.add_message(request, messages.ERROR, internacionalize_message("There are no votings available"))
            return redirect('listCensus')
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

        return redirect('listCensus')
Example #4
0
def import_csv(request):

    if request.user.is_staff:
        # Paso 1: obtenemos el fichero CSV

        csv_file = request.FILES['file']

        # Paso 2: verificación del fichero CSV

        if not csv_file.name.endswith('.csv'):
            return redirect("/census/addCustomCensus")

        # Paso 3: persistemos los cambios en la base de datos

        data_set = csv_file.read().decode('UTF-8')
        io_string = io.StringIO(data_set)
        next(io_string)

        for column in csv.reader(io_string, delimiter=',', quotechar='|'):
            _, created = Census.objects.update_or_create(
                id=column[0],
                voting_id=column[1],
                voter_id=column[2],
            )
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    return redirect('listCensus')
Example #5
0
def import_csv_view(request):

    if request.user.is_staff:
        return render(request, "import_view.html")

    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))
        return redirect('listCensus')
Example #6
0
def delete_census(request):
    if request.user.is_staff:
        n_id = request.GET.get('id')
        census = get_object_or_404(Census,id=n_id)

        return render(request, 'delete_census.html',{'census': census})
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

        return redirect('listCensus')
Example #7
0
def delete_selected_census(request):

    if request.user.is_staff:
        census_id = request.GET.get('id')
        census = get_object_or_404(Census,id=census_id)
        census.delete()

    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    return redirect('listCensus')
Example #8
0
def edit_census(request):

    if request.user.is_staff:
        n_id = request.GET.get('id')
        users = User.objects.all().filter(is_staff=False)
        votings = Voting.objects.all()
        census = get_object_or_404(Census,id=n_id)

        if users:
            if votings:
                return render(request, 'edit_census.html',{'census': census, 'users':users, 'votings':votings})
            else:
                messages.add_message(request, messages.ERROR, internacionalize_message("There are no votings available"))
                return redirect('listCensus')
        else:
            messages.add_message(request, messages.ERROR, internacionalize_message("There are no users available"))
            return redirect('listCensus')
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

        return redirect('listCensus')
Example #9
0
def addAllRegistered(request):

    voters = User.objects.all()
    voting_id = request.GET.get('voting_id')
    list_voting = list(Voting.objects.all().values_list('id', flat=True))
    if request.user.is_staff:
        if int(voting_id) in list_voting:
            if not check_voting_is_started(int(voting_id)):
                for voter in voters:
                    try:
                        census = Census(voting_id=voting_id, voter_id=voter.id)
                        census.save()
                    except IntegrityError:
                        continue
                        
            else:
                messages.add_message(request, messages.ERROR, internacionalize_message("The voting is started"))
        else:
            messages.add_message(request, messages.ERROR, internacionalize_message("Invalid voting id"))
    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    return redirect('listCensus')
Example #10
0
def save_edited_census(request):
    if request.user.is_staff:
        census_id = request.GET.get('id')
        voting_id = request.GET.get('voting_id')
        voter_id = request.GET.get('voter_id')
        census = get_object_or_404(Census,id=census_id)
        voting = get_object_or_404(Voting,id=voting_id)
        voter = get_object_or_404(User,id=voter_id)

        census.voting_id = voting_id
        census.voter_id = voter_id
        census.save()

    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

    return redirect('listCensus')
Example #11
0
def add_custom_census(request):

    if request.user.is_staff:

        if request.method == 'POST':                                    # Petición POST

            form = CensusAddMultipleVotersForm(request.POST)

            # Paso 1: Comprobando que los datos se han añadido al formulario correctamente

            if form.is_valid():
                sex_elections = form.cleaned_data['sex']
                city_election = form.cleaned_data['city']
                age_initial_range_election = form.cleaned_data['age_initial_range']
                age_final_range_election = form.cleaned_data['age_final_range']
                voting = form.cleaned_data['voting'].__getattribute__('pk')

                # Paso 2: Filtrando los votantes seleccionados...

                voters = User.objects.all()

                # ...por sexos

                if len(sex_elections) != 0:                                 # Si la lista tiene 0 elementos...
                    voters = voters.filter(sex__in=sex_elections)

                # ...por ciudades

                if len(city_election) != 0:                                 # Si la longitud de la cadena es 0...
                    voters = voters.filter(city__iexact=city_election)      # Sin considerar mayúsculas y minúsculas

                # ...por rango de edades

                if age_initial_range_election is not None:                  # Si no se especificó fecha de inicio...
                    voters = voters.filter(birthdate__gte=age_initial_range_election)

                if age_final_range_election is not None:                    # Si no se especificó fecha de fin...
                    voters = voters.filter(birthdate__lte=age_final_range_election)

                # Paso 3: comprobamos que el usuario logueado tiene permisos de creación de censos

                if request.user.is_authenticated:

                    # Paso 4: asignamos todos los votantes al nuevo censo

                    voters_ids = voters.values_list('id', flat=True, named=False)



                    for voter_id in voters_ids:

                        # Comprobamos que sea único

                        if not is_exists_census(voting, voter_id):

                            census = Census(voting_id=voting, voter_id=voter_id)
                            census.save()

                return redirect('listCensus')

        else:                                                            # Petición GET
            form = CensusAddMultipleVotersForm()

        context = {
            'form': form,
        }

        return render(request, template_name='add_custom_census.html', context=context)

    else:
        messages.add_message(request, messages.ERROR, internacionalize_message("Permission denied"))

        return redirect('listCensus')