changeset 6:80df109584f7

Se agrega validacion de remitente versus direccion de miembro
author "German Poo-Caaman~o <gpoo@gnome.org>"
date Thu, 14 Dec 2006 23:16:24 -0300
parents 58e4b36d5e74
children 308cdc35c99d
files vote-counter.py
diffstat 1 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/vote-counter.py	Thu Dec 14 10:22:46 2006 -0300
+++ b/vote-counter.py	Thu Dec 14 23:16:24 2006 -0300
@@ -68,17 +68,19 @@
     ballots = []
     current_ballot = 0
 
-    from_line_re = re.compile ("^From: *(.*)")
-    member_name_re = re.compile (">? *Member: *(.*)")
-    member_address_re = re.compile (">? *Member Address: *([^ ]*)")
-    auth_token_re = re.compile (">? *Validation Token: *(.*)")
-    vote_re = re.compile (">? *([A-Z ]+) *\(ID# *([0-9]+)\)")
+    from_line_re = re.compile("^From: *(.*) *\(.*\)")
+    from_restore_re = re.compile(" (at|en) ")
+    member_name_re = re.compile(">? *Member: *(.*)")
+    member_address_re = re.compile(">? *Member Address: *([^ ]*)")
+    auth_token_re = re.compile(">? *Validation Token: *(.*)")
+    vote_re = re.compile(">? *([A-Z ]+) *\(ID# *([0-9]+)\)")
 
     fp = open(filename)
     for line in fp.readlines():
         match = from_line_re.match(line)
         if match:
             email = string.strip(match.group(1))
+            email = '<%s>' % from_restore_re.sub('@', email)
             if current_ballot:
                 ballots.append(current_ballot)
             current_ballot = Ballot()
@@ -192,6 +194,9 @@
             error = "bad authentication token"
         elif not valid_addresses.valid_voter(b.member):
             error = "ballot from someone not in the list of valid voters"
+        elif not valid_addresses.valid_voter(b.email):
+            error = "ballot from a not valid address in the list of "\
+                    "valid voters"
         else:
             if valid_ballots.has_key(b.token):
                 old = valid_ballots[b.token]
@@ -214,9 +219,9 @@
     for (b, i) in valids:
         print "Ballot %d:" % i
 
-        print "  From:   " + b.email
+        print "  From:   " + munge_email(b.email)
         print "  Member: " + b.member_name
-        print "  Member Address: " + b.member
+        print "  Member Address: " + munge_email(b.member)
         print "  Token:  " + b.token
         print "  Voted for %d candidates:" % len(b.votes)
 
@@ -236,7 +241,7 @@
     print "\nThe following members did not vote:"
     for addr in valid_addresses.keys ():
         if not valid_addresses[addr]:
-            print addr
+            print munge_email(addr)
 
 def print_summary(valid_ballots, valid_addresses, candidates):
     candidate_list = candidates.values()
@@ -250,6 +255,10 @@
     for candidate in candidate_list:
         print "  %s (%d votes)" % (candidate.name, candidate.count)
 
+def munge_email(addr):
+    email = addr.split('@')
+    munged = '@no_spam.'.join(email)
+    return munged
 
 if __name__ == '__main__':
     candidates = {}