def validateCOP()

in pysteve/lib/plugins/cop.py [0:0]


def validateCOP(vote, issue):
    "Tries to validate a vote, returns why if not valid, None otherwise"
    parties = {}
    if not 'candidates' in issue:
        return "Invalid issue data detected"
    for c in issue['candidates']:
        if not 'pletter' in c:
            return "Invalid issue data detected"
        parties[c['pletter']] = True
    letters = [chr(i) for i in range(ord('a'), ord('a') + len(parties))]
    ivote = -1
    try:
        ivote = int(vote)
    except:
        pass # This is a fast way to determine vote type, passing here is FINE!
    if not vote in letters and (ivote < 0 or ivote > len(issue['candidates'])):
            return "Invalid characters in vote. Accepted are: %s" % ", ".join(letters,range(1,len(issue['candidates'])+1))
    return None