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!'
Example #2
0
        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!'