[Fedora Elections] #21: Anonymize datasets
by fedora-badges
#21: Anonymize datasets
-------------------------+--------------------------------------------------
Reporter: nigelj | Owner: nigelj
Type: enhancement | Status: new
Priority: major | Milestone: Release 0.2.0
Component: General | Version: 0.1.5
Keywords: |
-------------------------+--------------------------------------------------
Apologies if this is how the system currently works.
I'm posting this on behalf of the Fedora Board. We would like for our
election voting tool to work like this:
FAS2 user goes to vote, they authenticate. The voting system assigns the
user a unique ID number. The user then votes, and confirms their vote. The
"ballot" is stored but is tied only to this unique ID number (not to the
FAS2 user/account). The FAS2 system records that the FAS2 user has voted,
but does not store a correlation between the FAS2 account and the unique
ID number attached to the ballot.
Thus, we have a dataset showing the results, but it is anonymized
automatically, and we still know who has (and has not) voted, just not who
(or what) they voted for.
Thanks in advance.
---
2008-07-29 19:26:00 changed by mmcgrath
Just so we're clear. The idea is to ensure that the results of a ballot
cannot in any way be tied to a user. We would also not want this data in
logs on the elections app servers correct?
This might make fraud more likely but then I'm not entirely sure how its
any better or worse from that perspective with what we have now.
G, can you think of any technical hurdles in implementing this?
Spot/Board: Do you want us to anonymize the data that's already in the
database?
2008-07-29 19:35:42 changed by spot
Yes, that is the idea. We would not want a correlation between a ballot
and a user anywhere, not even logs. If we're careful with ensuring that
once a ballot is submitted, the FAS2 user is marked as having voted in an
election, I don't think we open the door to any additional fraud
possibilities.
As to anonymizing the existing data, I'm not sure it is worth the effort.
2008-07-29 21:39:01 changed by jspaleta
If we are going to be making changes to address the voting system... are
we gonna make any effort to contact someone doing active research into
electronic voting methods to get an idea as to existing workable
implementation concepts that accomplish the desired anonymizing of the
voting but also protect against fraud?
-jef
--
Ticket URL: <https://fedorahosted.org/elections/ticket/21>
Fedora Elections <https://fedorahosted.org/elections/>
Fedora Elections
9 years, 4 months
Branch 'evo_graph' - 3 commits - fedora_elections/elections.py fedora_elections/models.py fedora_elections/templates
by Pierre-YvesChibon
fedora_elections/elections.py | 8 ++++----
fedora_elections/models.py | 2 +-
fedora_elections/templates/results.html | 4 ++--
3 files changed, 7 insertions(+), 7 deletions(-)
New commits:
commit 67b67a893bba1f3b18d620907aa909fc9c6d6293
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Tue Dec 2 15:25:35 2014 +0100
Rename stats['dates'] to stats['vote_timestamps'] as per @ralphbean 's advice
diff --git a/fedora_elections/elections.py b/fedora_elections/elections.py
index 369edda..b04ee69 100644
--- a/fedora_elections/elections.py
+++ b/fedora_elections/elections.py
@@ -372,7 +372,7 @@ def election_results(election_alias):
election.start_date + timedelta(days=delta)
).strftime('%d-%m-%Y')
evolution_label.append([cnt, day])
- evolution_data.append([cnt, stats['dates'].count(day)])
+ evolution_data.append([cnt, stats['vote_timestamps'].count(day)])
cnt += 1
return flask.render_template(
diff --git a/fedora_elections/models.py b/fedora_elections/models.py
index e6cddc0..8f80914 100644
--- a/fedora_elections/models.py
+++ b/fedora_elections/models.py
@@ -432,7 +432,7 @@ class Vote(BASE):
Vote.timestamp
).all()
- stats['dates'] = [
+ stats['vote_timestamps'] = [
date[0].strftime('%d-%m-%Y')
for date in dates
]
commit f9f227f4042e7fba7872ee20545f64c55869f34b
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Tue Dec 2 15:24:28 2014 +0100
Adjust label in the graph as per @ralphbean 's suggestion
diff --git a/fedora_elections/templates/results.html b/fedora_elections/templates/results.html
index 6965fb5..1388ebd 100644
--- a/fedora_elections/templates/results.html
+++ b/fedora_elections/templates/results.html
@@ -119,7 +119,7 @@
var data = [{'color': '#1F77B4',
'data': {{ evolution_data }},
'bars': {'order': 1, 'barWidth': 0.8, 'show': 1},
- 'label': 'Evolution of the voters during the election',
+ 'label': 'Voters over time',
'ticks': {{ evolution_label }},
}];
{% endautoescape %}
commit a6494661069d1721476d0a0279b6301b9a08241f
Author: Pierre-Yves Chibon <pingou(a)pingoured.fr>
Date: Tue Dec 2 15:23:23 2014 +0100
Rename evolution_lbl to evolution_label as per @ralphbean 's advice
diff --git a/fedora_elections/elections.py b/fedora_elections/elections.py
index 6f76f9d..369edda 100644
--- a/fedora_elections/elections.py
+++ b/fedora_elections/elections.py
@@ -365,13 +365,13 @@ def election_results(election_alias):
stats = models.Vote.get_election_stats(SESSION, election.id)
cnt = 1
- evolution_lbl = []
+ evolution_label = []
evolution_data = []
for delta in range((election.end_date - election.start_date).days + 1):
day = (
election.start_date + timedelta(days=delta)
).strftime('%d-%m-%Y')
- evolution_lbl.append([cnt, day])
+ evolution_label.append([cnt, day])
evolution_data.append([cnt, stats['dates'].count(day)])
cnt += 1
@@ -380,7 +380,7 @@ def election_results(election_alias):
election=election,
usernamemap=usernamemap,
stats=stats,
- evolution_lbl=evolution_lbl,
+ evolution_label=evolution_label,
evolution_data=evolution_data,
)
diff --git a/fedora_elections/templates/results.html b/fedora_elections/templates/results.html
index 7f57b08..6965fb5 100644
--- a/fedora_elections/templates/results.html
+++ b/fedora_elections/templates/results.html
@@ -120,7 +120,7 @@
'data': {{ evolution_data }},
'bars': {'order': 1, 'barWidth': 0.8, 'show': 1},
'label': 'Evolution of the voters during the election',
- 'ticks': {{ evolution_lbl }},
+ 'ticks': {{ evolution_label }},
}];
{% endautoescape %}
9 years, 4 months