Add option to compare ballot to sample ballot.

It may be desriable to compare a ballot to
a sample ballot when checking votes.

* Add options "diff" and "sampleballotfile" to
  usevote.cfg an UVconfig.pm
* Add menu option to UVmenu.pm

Picked from upstream.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2014-02-16 13:33:47 +01:00
parent dc651b4283
commit 7a0133efe6
6 changed files with 42 additions and 6 deletions

13
CHANGES
View file

@ -3,11 +3,14 @@ UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012)
TODO:
- aussortieren von Bounces aus Stimmenliste
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
Version 4.12 (19.01.2014):
- neue Config-Optionen "diff" und "sampleballotfile"
- im Fehlermenue bei der Wahlscheinverarbeitung ist es nun moeglich,
mit der Option "0" einen Dateivergleich (diff) zwischen dem gemailten
Wahlschein und einem Musterwahlschein (wie im CfV geposted) zu starten.
Dazu muss die Config-Option "sampleballotfile" gesetzt und die Datei
vorhanden sein (Standard-Dateiname: ballot.sample)
Version 4.11 (25.09.2012):
- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert.

10
README
View file

@ -324,6 +324,7 @@ ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
usevote.cfg, darin können alle anderen Pfade angepasst werden):
ballot.sample
bdsgtext.cfg
mailpatterns.cfg
messages.cfg
@ -404,6 +405,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
Meistens gibt es folgende Moeglichkeiten, die durch die
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
(0) Wahlschein mit Original vergleichen (diff)
(1) Anzeigen der Wahlmail
Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
@ -427,6 +429,9 @@ Teilweise gibt es Unteroptionen:
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
Mit (0) kannst Du einen Dateivergleich zu einem vorher hinterlegten
Musterwahlschein ausführen ("diff"), um Aenderungen/Fehler schneller
zu sehen.
Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften
des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
@ -958,6 +963,7 @@ Hier eine Auflistung der immer anzupassenden Optionen
votename Name der Abstimmung
group1 Erster Abstimmungsgegenstand
group2 Zweiter (und so weiter durchnummerieren)
sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff)
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
mailboxtype Typ der Mailbox (mbox, maildir)
personal Personalisierte Wahlscheine verwenden? [BOOL]
@ -1026,6 +1032,10 @@ clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
oder Betriebssystem keinen solchen Befehl bereitstellen,
sollte ein Kommando verwendet werden, welches eine Trennlinie
oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
diff Shellbefehl zum Dateivergleich (diff); es koennen auch
Parameter angegeben werden, z.B. "diff -u". Das verwendete
Programm muss das Lesen einer Datei von STDIN erlauben
("-" statt Dateinamen fuer Einlesen von Standardeingabekanal)
pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
Bildschirm (normalerweise "less"). Unter Windows muss "more"
benutzt werden, unter Unix hingegen gibt es moeglicherweise

View file

@ -27,6 +27,7 @@ sub read_config {
# Default configuration options (overwritten in usevote.cfg)
%config = (votefile => "votes",
votename => "unkonfiguriertes Usevote",
sampleballotfile => "ballot.sample",
resultfile => "ergebnis.alle",
rulefile => "usevote.rul",
badaddrfile => "mailpatterns.cfg",
@ -57,6 +58,7 @@ sub read_config {
mailcc => "",
sleepcmd => "sleep 1",
clearcmd => "clear",
diff => "diff",
pager => "less",
pop3 => 0,
pop3server => "localhost",

View file

@ -70,6 +70,12 @@ sub menu {
my $menucaption = UVmessage::get("MENU_CAPTION");
print "\n\n$menucaption\n";
print "=" x length($menucaption), "\n\n";
# don't print this option if called from uvcfv.pl
unless ($mailonly) {
print "(0) ", UVmessage::get("MENU_DIFF_BALLOT"), "\n";
}
print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
@ -96,7 +102,14 @@ sub menu {
# only accept 1, 2, i and w if called from uvcfv.pl
next if ($mailonly && $input !~ /^[12iw]$/i);
if ($input eq '1') {
if ($input eq '0') {
# ignore SIGPIPE (Bug in more and less)
$SIG{PIPE} = 'IGNORE';
open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}");
print DIFF $$body, "\n";
close (DIFF);
} elsif ($input eq '1') {
system($config{clearcmd});
# ignore SIGPIPE (Bug in more and less)
$SIG{PIPE} = 'IGNORE';

View file

@ -42,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme
MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
MENU_CAPTION = Auswahlmenue:
MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff)
MENU_SHOW_MAIL = Anzeigen der Wahlmail
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
MENU_ADDRESS = Mailadresse

View file

@ -77,6 +77,10 @@ multigroup = 1
condition1 = $yes>=2*$no
condition2 = $yes>=50
# Datei mit Musterwahlschein, wie er im CfV geposted wurde. Wird fuer
# Vergleich mit ankommenden Wahlscheinen per "diff" genutzt.
sampleballotfile = ballot.sample
# Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
# (wird bei jedem Programmlauf neu erstellt!)
resultfile = ergebnis.alle
@ -207,6 +211,9 @@ clearcmd = clear
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
pager = less
# Shellbefehl fuer Dateivergleich
diff = diff
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
messagefile = messages.cfg