Skip to content

Commit

Permalink
Merge pull request #24 from opensafely/support-user-namespaced-codelists
Browse files Browse the repository at this point in the history
fix: Support user-namespaced codelists
  • Loading branch information
inglesp authored Jan 18, 2021
2 parents 8fc5d85 + ee86af2 commit ea18540
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
15 changes: 9 additions & 6 deletions opensafely/codelists.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,17 +170,20 @@ def parse_codelist_file(codelists_dir):
line = line.strip()
if not line or line.startswith("#"):
continue
project_id, codelist_id, version = line.split("/")
url = (
f"https://codelists.opensafely.org"
f"/codelist/{project_id}/{codelist_id}/{version}/"
)
tokens = line.split("/")
if len(tokens) not in [3, 4]:
exit_with_error(
f"{line} does not match [project]/[codelist]/[version] "
"or user/[username]/[codelist]/[version]"
)
url = f"https://codelists.opensafely.org/codelist/{line}/"
filename = "-".join(tokens[:-1]) + ".csv"
codelists.append(
Codelist(
id=line,
url=url,
download_url=f"{url}download.csv",
filename=codelists_dir / f"{project_id}-{codelist_id}.csv",
filename=codelists_dir / filename,
)
)
return codelists
Expand Down
8 changes: 4 additions & 4 deletions tests/test_codelists.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def test_codelists_update(tmp_path, requests_mock):
(codelist_dir / "project123-codelist456.csv").touch()
(codelist_dir / "project123-codelist789.csv").touch()
(codelist_dir / "codelists.txt").write_text(
"project123/codelist456/version2\n \nproject123/codelist098/version1\n"
"project123/codelist456/version2\n \nuser/user123/codelist098/version1\n"
)
os.chdir(tmp_path)
requests_mock.get(
Expand All @@ -31,17 +31,17 @@ def test_codelists_update(tmp_path, requests_mock):
)
requests_mock.get(
"https://codelists.opensafely.org/"
"codelist/project123/codelist098/version1/download.csv",
"codelist/user/user123/codelist098/version1/download.csv",
text="bar",
)
codelists.update()
assert (codelist_dir / "project123-codelist456.csv").read_text() == "foo"
assert not (codelist_dir / "project123-codelist789-version1.csv").exists()
assert (codelist_dir / "project123-codelist098.csv").read_text() == "bar"
assert (codelist_dir / "user-user123-codelist098.csv").read_text() == "bar"
manifest = json.loads((codelist_dir / "codelists.json").read_text())
assert manifest["files"].keys() == {
"project123-codelist456.csv",
"project123-codelist098.csv",
"user-user123-codelist098.csv",
}


Expand Down

0 comments on commit ea18540

Please sign in to comment.