Skip to content
Snippets Groups Projects
Commit 6ec25055 authored by Shirlei Chaves's avatar Shirlei Chaves
Browse files

Prevent election edit from using existing shortname

parent eb5bb241
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('helios', '0002_castvote_cast_ip'),
]
operations = [
migrations.AlterField(
model_name='election',
name='short_name',
field=models.CharField(unique=True, max_length=100),
preserve_default=True,
),
]
...@@ -45,7 +45,7 @@ class Election(HeliosModel): ...@@ -45,7 +45,7 @@ class Election(HeliosModel):
# later versions, at some point will upgrade to "2011/01/Election" # later versions, at some point will upgrade to "2011/01/Election"
datatype = models.CharField(max_length=250, null=False, default="legacy/Election") datatype = models.CharField(max_length=250, null=False, default="legacy/Election")
short_name = models.CharField(max_length=100) short_name = models.CharField(max_length=100, unique=True)
name = models.CharField(max_length=250) name = models.CharField(max_length=250)
ELECTION_TYPES = ( ELECTION_TYPES = (
......
...@@ -10,7 +10,7 @@ from django.core.mail import send_mail ...@@ -10,7 +10,7 @@ from django.core.mail import send_mail
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.http import * from django.http import *
from django.db import transaction from django.db import transaction, IntegrityError
from mimetypes import guess_type from mimetypes import guess_type
...@@ -205,15 +205,11 @@ def election_new(request): ...@@ -205,15 +205,11 @@ def election_new(request):
user = get_user(request) user = get_user(request)
election_params['admin'] = user election_params['admin'] = user
try:
election, created_p = Election.get_or_create(**election_params) election = Election.objects.create(**election_params)
if created_p:
# add Helios as a trustee by default
election.generate_trustee(ELGAMAL_PARAMS) election.generate_trustee(ELGAMAL_PARAMS)
return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_view, args=[election.uuid])) return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_view, args=[election.uuid]))
else: except IntegrityError:
error = "An election with short name %s already exists" % election_params['short_name'] error = "An election with short name %s already exists" % election_params['short_name']
else: else:
error = "No special characters allowed in the short name." error = "No special characters allowed in the short name."
...@@ -243,10 +239,11 @@ def one_election_edit(request, election): ...@@ -243,10 +239,11 @@ def one_election_edit(request, election):
clean_data = election_form.cleaned_data clean_data = election_form.cleaned_data
for attr_name in RELEVANT_FIELDS: for attr_name in RELEVANT_FIELDS:
setattr(election, attr_name, clean_data[attr_name]) setattr(election, attr_name, clean_data[attr_name])
try:
election.save() election.save()
return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_view, args=[election.uuid])) return HttpResponseRedirect(settings.SECURE_URL_HOST + reverse(one_election_view, args=[election.uuid]))
except IntegrityError:
error = "An election with short name %s already exists" % clean_data['short_name']
return render_template(request, "election_edit", {'election_form' : election_form, 'election' : election, 'error': error}) return render_template(request, "election_edit", {'election_form' : election_form, 'election' : election, 'error': error})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment