Skip to content

Commit

Permalink
Merge 6f32a55 into eec1360
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesturk committed Apr 10, 2019
2 parents eec1360 + 6f32a55 commit 5ef2fd2
Show file tree
Hide file tree
Showing 53 changed files with 7,723 additions and 0 deletions.
61 changes: 61 additions & 0 deletions csv/ak_legislators.csv

Large diffs are not rendered by default.

141 changes: 141 additions & 0 deletions csv/al_legislators.csv

Large diffs are not rendered by default.

136 changes: 136 additions & 0 deletions csv/ar_legislators.csv

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions csv/az_legislators.csv

Large diffs are not rendered by default.

121 changes: 121 additions & 0 deletions csv/ca_legislators.csv

Large diffs are not rendered by default.

101 changes: 101 additions & 0 deletions csv/co_legislators.csv

Large diffs are not rendered by default.

183 changes: 183 additions & 0 deletions csv/ct_legislators.csv

Large diffs are not rendered by default.

112 changes: 112 additions & 0 deletions csv/dc_legislators.csv

Large diffs are not rendered by default.

63 changes: 63 additions & 0 deletions csv/de_legislators.csv

Large diffs are not rendered by default.

158 changes: 158 additions & 0 deletions csv/fl_legislators.csv

Large diffs are not rendered by default.

237 changes: 237 additions & 0 deletions csv/ga_legislators.csv

Large diffs are not rendered by default.

77 changes: 77 additions & 0 deletions csv/hi_legislators.csv

Large diffs are not rendered by default.

151 changes: 151 additions & 0 deletions csv/ia_legislators.csv

Large diffs are not rendered by default.

106 changes: 106 additions & 0 deletions csv/id_legislators.csv

Large diffs are not rendered by default.

178 changes: 178 additions & 0 deletions csv/il_legislators.csv

Large diffs are not rendered by default.

151 changes: 151 additions & 0 deletions csv/in_legislators.csv

Large diffs are not rendered by default.

166 changes: 166 additions & 0 deletions csv/ks_legislators.csv

Large diffs are not rendered by default.

138 changes: 138 additions & 0 deletions csv/ky_legislators.csv

Large diffs are not rendered by default.

142 changes: 142 additions & 0 deletions csv/la_legislators.csv

Large diffs are not rendered by default.

201 changes: 201 additions & 0 deletions csv/ma_legislators.csv

Large diffs are not rendered by default.

189 changes: 189 additions & 0 deletions csv/md_legislators.csv

Large diffs are not rendered by default.

187 changes: 187 additions & 0 deletions csv/me_legislators.csv

Large diffs are not rendered by default.

149 changes: 149 additions & 0 deletions csv/mi_legislators.csv

Large diffs are not rendered by default.

201 changes: 201 additions & 0 deletions csv/mn_legislators.csv

Large diffs are not rendered by default.

197 changes: 197 additions & 0 deletions csv/mo_legislators.csv

Large diffs are not rendered by default.

175 changes: 175 additions & 0 deletions csv/ms_legislators.csv

Large diffs are not rendered by default.

151 changes: 151 additions & 0 deletions csv/mt_legislators.csv

Large diffs are not rendered by default.

170 changes: 170 additions & 0 deletions csv/nc_legislators.csv

Large diffs are not rendered by default.

142 changes: 142 additions & 0 deletions csv/nd_legislators.csv

Large diffs are not rendered by default.

50 changes: 50 additions & 0 deletions csv/ne_legislators.csv

Large diffs are not rendered by default.

425 changes: 425 additions & 0 deletions csv/nh_legislators.csv

Large diffs are not rendered by default.

121 changes: 121 additions & 0 deletions csv/nj_legislators.csv

Large diffs are not rendered by default.

113 changes: 113 additions & 0 deletions csv/nm_legislators.csv

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions csv/nv_legislators.csv

Large diffs are not rendered by default.

214 changes: 214 additions & 0 deletions csv/ny_legislators.csv

Large diffs are not rendered by default.

135 changes: 135 additions & 0 deletions csv/oh_legislators.csv

Large diffs are not rendered by default.

150 changes: 150 additions & 0 deletions csv/ok_legislators.csv

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions csv/or_legislators.csv

Large diffs are not rendered by default.

254 changes: 254 additions & 0 deletions csv/pa_legislators.csv

Large diffs are not rendered by default.

82 changes: 82 additions & 0 deletions csv/pr_legislators.csv

Large diffs are not rendered by default.

114 changes: 114 additions & 0 deletions csv/ri_legislators.csv

Large diffs are not rendered by default.

171 changes: 171 additions & 0 deletions csv/sc_legislators.csv

Large diffs are not rendered by default.

106 changes: 106 additions & 0 deletions csv/sd_legislators.csv

Large diffs are not rendered by default.

133 changes: 133 additions & 0 deletions csv/tn_legislators.csv

Large diffs are not rendered by default.

179 changes: 179 additions & 0 deletions csv/tx_legislators.csv

Large diffs are not rendered by default.

105 changes: 105 additions & 0 deletions csv/ut_legislators.csv

Large diffs are not rendered by default.

141 changes: 141 additions & 0 deletions csv/va_legislators.csv

Large diffs are not rendered by default.

181 changes: 181 additions & 0 deletions csv/vt_legislators.csv

Large diffs are not rendered by default.

148 changes: 148 additions & 0 deletions csv/wa_legislators.csv

Large diffs are not rendered by default.

133 changes: 133 additions & 0 deletions csv/wi_legislators.csv

Large diffs are not rendered by default.

135 changes: 135 additions & 0 deletions csv/wv_legislators.csv

Large diffs are not rendered by default.

91 changes: 91 additions & 0 deletions csv/wy_legislators.csv

Large diffs are not rendered by default.

112 changes: 112 additions & 0 deletions scripts/to_csv.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#!/usr/bin/env python
import os
import csv
import glob
import click
from utils import (get_data_dir, get_jurisdiction_id, get_all_abbreviations,
load_yaml, role_is_active)


def write_csv(files, jurisdiction_id, output_filename):
with open(output_filename, "w") as outf:
out = csv.DictWriter(
outf,
("id", "name",
"current_party", "current_district", "current_chamber",
"given_name", "family_name", "gender", "biography", "birth_date", "death_date",
"image", "links", "sources",
"capitol_address", "capitol_email", "capitol_voice", "capitol_fax",
"district_address", "district_email", "district_voice", "district_fax",
"twitter", "youtube", "instagram", "facebook",
)
)
out.writeheader()

for filename in files:
with open(filename) as f:
data = load_yaml(f)

# current party
for role in data["party"]:
if role_is_active(role):
current_party = role["name"]
break

# current district
for role in data["roles"]:
if role_is_active(role):
current_chamber = role["type"]
current_district = role["district"]

district_address = district_email = district_voice = district_fax = None
capitol_address = capitol_email = capitol_voice = capitol_fax = None
for cd in data.get("contact_details", {}):
note = cd["note"].lower()
if "district" in note:
district_address = cd.get("address")
district_email = cd.get("email")
district_voice = cd.get("voice")
district_fax = cd.get("fax")
elif "capitol" in note:
capitol_address = cd.get("address")
capitol_email = cd.get("email")
capitol_voice = cd.get("voice")
capitol_fax = cd.get("fax")
else:
click.secho("unknown office: " + note, fg="red")

links = ";".join(l["url"] for l in data.get("links", []))
sources = ";".join(l["url"] for l in data.get("sources", []))

obj = {
"id": data["id"],
"name": data["name"],
"current_party": current_party,
"current_district": current_district,
"current_chamber": current_chamber,
"given_name": data.get("given_name"),
"family_name": data.get("family_name"),
"gender": data.get("gender"),
"biography": data.get("biography"),
"birth_date": data.get("birth_date"),
"death_date": data.get("death_date"),
"image": data.get("image"),
"twitter": data.get("ids", {}).get("twitter"),
"youtube": data.get("ids", {}).get("youtube"),
"instagram": data.get("ids", {}).get("instagram"),
"facebook": data.get("ids", {}).get("facebook"),
"links": links,
"sources": sources,
"district_address": district_address,
"district_email": district_email,
"district_voice": district_voice,
"district_fax": district_fax,
"capitol_address": capitol_address,
"capitol_email": capitol_email,
"capitol_voice": capitol_voice,
"capitol_fax": capitol_fax,
}
out.writerow(obj)

click.secho(f'processed {len(files)} files', fg='green')


@click.command()
@click.argument('abbreviations', nargs=-1)
def to_csv(abbreviations):
"""
Sync YAML files to DB.
"""
if not abbreviations:
abbreviations = get_all_abbreviations()

for abbr in abbreviations:
click.secho('==== {} ===='.format(abbr), bold=True)
directory = get_data_dir(abbr)
jurisdiction_id = get_jurisdiction_id(abbr)
person_files = sorted(glob.glob(os.path.join(directory, 'people/*.yml')))
write_csv(person_files, jurisdiction_id, f"csv/{abbr}_legislators.csv")


if __name__ == '__main__':
to_csv()

0 comments on commit 5ef2fd2

Please sign in to comment.