redbrick/useradm

View on GitHub
scripts/vote.py

Summary

Maintainability
A
3 hrs
Test Coverage
#!/usr/bin/python

import os
import re
import sys

from ..useradm.rberror import RBError
from ..useradm.rbuser import RBUser
from ..useradm.rbuserdb import RBUserDB

voteregister = 'voted.txt'


def main():
    """Program entry function."""

    voted = {}

    if os.path.exists(voteregister):
        fd = open(voteregister, 'r')
        for line in fd.readlines():
            voted[line.rstrip()] = 1
        fd.close()

    fd = open(voteregister, 'a')

    udb = RBUserDB()
    udb.connect()

    while 1:
        usr = RBUser()
        tmp = None
        while not tmp:
            tmp = input("Please enter Username/Student ID/Student Card: ")
        res = re.search(r'\D*\d{2}(\d{8})\d{3}\D*', tmp)
        if res:
            usr.id = int(res.group(1))
            print('CARD', usr.id)
        else:
            res = re.search(r'^(\d{8})$', tmp)
            if res:
                usr.id = int(tmp)
                print('ID', usr.id)
        try:
            if usr.id:
                udb.get_user_byid(usr)
                udb.show(usr)
            else:
                usr.uid = tmp
                udb.get_user_byname(usr)
                udb.show(usr)
        except RBError:

            print('NO SUCH USER YOU FUCKING DICKHEAD')
        else:
            if usr.uid in voted:
                print('\nGO FUCK YOUSELF YOU TWO-VOTING PRICK\n')
                continue

            if usr.usertype not in ('member', 'committe', 'staff'):
                print('''
                    \n
                    TELL THE COCKMUCH TO GET A REAL MEMBER ACCOUNT
                    \n
                ''')
            elif usr.yearsPaid <= 0:
                print('\nTELL THE SCABBY BASTARD TO PISS OFF\n')
            else:
                fd.write('%s\n' % usr.uid)
                fd.flush()
                voted[usr.uid] = 1
                print('\nBIG VOTE GO NOW!\n')

    fd.close()
    sys.exit(0)


if __name__ == "__main__":
    main()