Ejemplo n.º 1
0
def assign_precinct():
    from models.precinct import Precinct

    if request.method == 'GET':
        precincts = Precinct.get_all()
        contacts = Contact.get_with_missing_precinct()
        return render_template('contacts/con_precinct.html',
                               title='Unassigned Precinct',
                               precincts=precincts,
                               contacts=contacts)

    params = json.loads(request.form['params'])
    contact = Contact(params)
    dao = Dao(stateful=True)
    if 'voter_id' in params and params['voter_id']:
        voter = Voter.get_one(dao, params['voter_id'])
        nickname = contact.name.first
        contact.name = voter.name
        contact.name.nickname = nickname
        contact.address = voter.address
        contact.reg_date = voter.reg_date
    try:
        contact.update(dao)
        return jsonify(msg="Update successful!")
    except Exception as ex:
        return jsonify(error=str(ex))
    finally:
        dao.close()
Ejemplo n.º 2
0
    def synchronize(dao):
        # from models.dao import Dao
        from models.voter import Voter

        # dao = Dao(stateful=True)
        contacts = Contact.get_all(dao)
        problems = {'reg': [], 'name': [], 'vrec': [], 'addr': [], 'pct': []}
        for contact in contacts:
            if not contact.voter_id:
                problems['reg'].append(contact)
                continue
            voter = Voter.get_one(dao, contact.voter_id)
            if not voter:
                problems['vrec'].append([
                    contact.id,
                    str(contact.name),
                    str(contact.address), contact.address.city,
                    contact.address.zipcode, contact.address.precinct_id, None
                ])
                continue
            if str(contact.name) != str(voter.name):
                problems['name'].append((str(contact.name), str(voter.name)))
                continue
            if str(contact.address) != str(voter.address):
                problems['addr'].append(contact)
                continue
            if contact.address.precinct_id != voter.address.precinct_id:
                problems['pct'].append(contact)
            # contact.copy_voter(voter)
            # contact.update(dao)
        return problems
Ejemplo n.º 3
0
def analyze():
    from models.contact import Contact
    from models.voter import Voter

    contacts = Contact.get_all(dao)

    probs = {
        'reg': [], 'name': [], 'vrec': [],
        'addr': [], 'pct': []
    }

    for contact in contacts:
        if not contact.voter_id:
            probs['reg'].append(bld_row(contact))
            continue
        voter = Voter.get_one(dao, contact.voter_id)
        if not voter:
            matches = Voter.get_by_name(dao, contact.name)
            if len(matches) == 1:
                show('No voter registration:', contact, matches[0])
                reply = input('Copy voter?').upper()
                if reply == 'Y':
                    repair(contact, matches[0])
                else:
                    probs['vrec'].append(bld_row(contact))
                    for match in matches:
                        probs['vrec'].append(bld_row(match))
            continue
        if str(contact.name) != str(voter.name):
            show('Name mismatch:', contact, voter)
            reply = input('Copy voter?').upper()
            if reply == 'Y':
                repair(contact, voter)
            else:
                probs['name'].append((bld_row(contact), bld_row(voter)))
            continue
        if str(contact.address) != str(voter.address):
            show('Address mismatch:', contact, voter)
            reply = input('Copy voter?').upper()
            if reply == 'Y':
                repair(contact, voter)
            else:
                probs['addr'].append((bld_row(contact), bld_row(voter)))
            continue
        if contact.address.precinct_id != voter.address.precinct_id:
            show('Precinct mismatch:', contact, voter)
            reply = input('Copy voter?').upper()
            if reply == 'Y':
                repair(contact, voter)
            else:
                probs['pct'].append((bld_row(contact), bld_row(voter)))
    return probs