Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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())
Exemplo n.º 5
0
def get_sessions_for_state(state):
    return pyopenstates.get_metadata(state=state, fields='session_details')['session_details']
Exemplo n.º 6
0
 def testTimestampConversionInDict(self):
     """Timestamp conversion in a dictionary"""
     oh = pyopenstates.get_metadata(state="oh")
     self.assertTrue(type(oh["latest_update"]) == datetime)
Exemplo n.º 7
0
 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]
Exemplo n.º 8
0
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