for notice in notices: try: rows = lamagetter.fetch(notice['sql'].format(searchdate)) except fetcher.FetcherError as e: print ' - Error accessing DB: {0}'.format(e.message) sys.exit(1) localdb.save_data(notice['table'], rows, notice['uidfield']) print ' - {0} rows saved to table {1}'.format(len(rows), notice['table']) if len(rows) > 0: #Extract all the users from the AOI featureclass. allusers = set() usrflds = [cfg['addrfield'], notice['preffield']] rawaddrs = spatial.extract_results(cfg['aoisource'], usrflds, usrflds) for addr in rawaddrs: if addr[notice['preffield']] == '1': allusers.add(addr[cfg['addrfield']]) print ' - {0} users to be notified for {1}'.format(len(allusers), notice['table']) #This gets a little brute-forcey. Probably should be rolled up in localstore. getuidssql = 'SELECT DISTINCT {0} FROM {1}'.format(notice['uidfield'], notice['table']) uidres = localdb.exec_sql(getuidssql) noticeuids = '|'.join([str(x[notice['uidfield']]) for x in uidres]) rows = [] fields = [cfg['namefield'], cfg['addrfield'], cfg['uidfield']] for addr in allusers: rows.append(collections.OrderedDict(zip(fields, [cfg['citywidearea'], addr, noticeuids]))) localdb.save_points(cfg['mailtable'], rows, notice['table'], cfg['sourcefield']) localdb.close_db() print 'Non-spatial Notice Complete!'
print ' - {0} rows saved to table {1}'.format(len(rows), notice['table']) if len(rows) > 0: #Extract all the users from the AOI featureclass. allusers = set() usrflds = [cfg['addrfield'], notice['preffield']] rawaddrs = spatial.extract_results(cfg['aoisource'], usrflds, usrflds) for addr in rawaddrs: if addr[notice['preffield']] == '1': allusers.add(addr[cfg['addrfield']]) print ' - {0} users to be notified for {1}'.format( len(allusers), notice['table']) #This gets a little brute-forcey. Probably should be rolled up in localstore. getuidssql = 'SELECT DISTINCT {0} FROM {1}'.format( notice['uidfield'], notice['table']) uidres = localdb.exec_sql(getuidssql) noticeuids = '|'.join([str(x[notice['uidfield']]) for x in uidres]) rows = [] fields = [cfg['namefield'], cfg['addrfield'], cfg['uidfield']] for addr in allusers: rows.append( collections.OrderedDict( zip(fields, [cfg['citywidearea'], addr, noticeuids]))) localdb.save_points(cfg['mailtable'], rows, notice['table'], cfg['sourcefield']) localdb.close_db() print 'Non-spatial Notice Complete!'