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()
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
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