def handle(self, *args, **options): metadata = pyopenstates.get_metadata() num_jobs_created = 0 num_jobs_modified = 0 job_timeout = 60 * 60 * 2 for state in metadata: obj, created = cm.LongJobState.objects.get_or_create( app_name="legislators", name="update_state|{}|{}".format(state["name"], state["abbreviation"]), defaults={ "job_period": 60 * 60 * 24, "job_timeout": job_timeout, "most_recent_update": timezone.now() - timezone.timedelta(24 * 60 * 60) }) if created: sys.stdout.write("Created job for state: {}\n".format( state["name"])) sys.stdout.flush() num_jobs_created += 1 elif obj.job_timeout != job_timeout: obj.job_timeout = job_timeout obj.save() sys.stdout.write("Modified timeout for state: {}\n".format( state["name"])) sys.stdout.flush() num_jobs_modified += 1 sys.stdout.write("Created {} jobs\n".format(num_jobs_created)) sys.stdout.write("Modified {} jobs\n".format(num_jobs_modified)) sys.stdout.write("DONE\n") sys.stdout.flush()
def testOpenStatesMetadata(self): """Calling the metadata method without specifying a state returns a list of 52 dictionaries: One for each state, plus DC and Puerto Rico""" metadata = pyopenstates.get_metadata() self.assertEqual(len(metadata), 52) for obj in metadata: self.assertEqual(type(obj), dict)
def testSubsetStateMetadataFields(self): """Requesting specific fields in state metadata returns only those fields""" requested_fields = ["id", "latest_json_date", "latest_json_url", "latest_update"] metadata = pyopenstates.get_metadata("OH", fields=requested_fields) returned_fields = metadata.keys() for field in requested_fields: self.assertIn(field, returned_fields) for field in returned_fields: self.assertIn(field, requested_fields)
def testStateMetadata(self): """All default state metadata fields are returned""" state_code = "NC" fields = ['name', 'latest_csv_url', 'latest_csv_date', 'chambers', 'capitol_timezone', 'id', 'latest_json_url', 'session_details', 'terms','latest_json_date', 'latest_update', 'abbreviation', 'legislature_name', 'feature_flags', 'legislature_url'] metadata = pyopenstates.get_metadata(state_code) keys = metadata.keys() for field in fields: self.assertIn(field, keys) self.assertEqual(metadata["abbreviation"], state_code.lower())
def get_sessions_for_state(state): return pyopenstates.get_metadata(state=state, fields='session_details')['session_details']
def testTimestampConversionInDict(self): """Timestamp conversion in a dictionary""" oh = pyopenstates.get_metadata(state="oh") self.assertTrue(type(oh["latest_update"]) == datetime)
def __init__(self): pyopenstates.set_api_key(config.OPENSTATES_API_KEY) self.raw_dictionary = pyopenstates.get_metadata(state=config.STATE) self.latest_term_name = self.raw_dictionary['terms'][-1]['name'] self.latest_session_name = self.raw_dictionary['terms'][-1][ 'sessions'][-1]
output = open(dir_name + '/' + 'README.md', 'wb') output.write(formatcsv.encode_for_file(info)) output.close() print('pyopenstates query') print('-------------------------------------') print('API Key - ' + apikey) print('Search term - ' + search) print('Output directory - ' + directory_name) pyopenstates.set_api_key(apikey) # query metadata print('Querying metadata') metadata = pyopenstates.get_metadata() # create list of states from returned data print('Process metadata') states = list(map(query.get_state_abbr, metadata)) # loop through list of states and query for keywords for state in states: bills = query.query_state(state, search) # output as CSV contents = formatcsv.prep_bill_for_csv(bills) file = dir_name + '/' + state + '-' + search + '-data.csv' formatcsv.csv_writer(file, contents) # create dict with state key and number of bills