Add option to compare ballot to sample ballot.
authorThomas Hochstein <thh@inter.net>
Sun, 16 Feb 2014 12:33:47 +0000 (13:33 +0100)
committerThomas Hochstein <thh@inter.net>
Sun, 16 Feb 2014 12:54:06 +0000 (13:54 +0100)
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>
CHANGES
README
UVconfig.pm
UVmenu.pm
messages.cfg
usevote.cfg

diff --git a/CHANGES b/CHANGES
index cde0093..064e2aa 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,11 +3,14 @@ UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012)
 
 TODO:
 - aussortieren von Bounces aus Stimmenliste
 
 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.
 
 Version 4.11 (25.09.2012):
 - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert.
diff --git a/README b/README
index c586961..aa26972 100644 (file)
--- a/README
+++ b/README
@@ -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):
 
 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
 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:
 
 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:
 (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.
 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
 
 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)
 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]
 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"
                  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
 pager            Shellbefehl zum seitenweisen Darstellen von Mails auf dem
                  Bildschirm (normalerweise "less"). Unter Windows muss "more"
                  benutzt werden, unter Unix hingegen gibt es moeglicherweise
index a12aa56..fddc363 100644 (file)
@@ -27,6 +27,7 @@ sub read_config {
   # Default configuration options (overwritten in usevote.cfg)
   %config = (votefile             => "votes",
              votename             => "unkonfiguriertes Usevote",
   # 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",
              resultfile           => "ergebnis.alle",
              rulefile             => "usevote.rul",
              badaddrfile          => "mailpatterns.cfg",
@@ -57,6 +58,7 @@ sub read_config {
              mailcc               => "",
              sleepcmd             => "sleep 1",
              clearcmd             => "clear",
              mailcc               => "",
              sleepcmd             => "sleep 1",
              clearcmd             => "clear",
+             diff                 => "diff",
              pager                => "less",
              pop3                 => 0,
              pop3server           => "localhost",
              pager                => "less",
              pop3                 => 0,
              pop3server           => "localhost",
index 5d96c8e..15cc5d4 100644 (file)
--- a/UVmenu.pm
+++ b/UVmenu.pm
@@ -70,6 +70,12 @@ sub menu {
     my $menucaption = UVmessage::get("MENU_CAPTION");
     print "\n\n$menucaption\n";
     print "=" x length($menucaption), "\n\n";
     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";
     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);
 
     # 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';
       system($config{clearcmd});
       # ignore SIGPIPE (Bug in more and less)
       $SIG{PIPE} = 'IGNORE';
index 6c9b339..e1f1b13 100644 (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_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
 MENU_SHOW_MAIL = Anzeigen der Wahlmail
 MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 MENU_ADDRESS = Mailadresse
index c472b45..333f574 100644 (file)
@@ -77,6 +77,10 @@ multigroup = 1
 condition1 = $yes>=2*$no
 condition2 = $yes>=50
 
 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
 # 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
 
 # Windows-Verzeichnis kopieren (URL siehe README-Datei)
 pager = less
 
+# Shellbefehl fuer Dateivergleich
+diff = diff
+
 # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
 messagefile = messages.cfg
 
 # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
 messagefile = messages.cfg
 
This page took 0.015153 seconds and 4 git commands to generate.