From f4d09b840ff830b5743c7139f4e2d1ac2a6386b6 Mon Sep 17 00:00:00 2001 From: Briar Date: Wed, 7 Feb 2024 10:43:46 -0500 Subject: [PATCH] Change national risk location link --- changelog.md | 6 ++++++ src/hapi_schema/db_national_risk.py | 28 ++++++++++++++++++++----- tests/sample_data/data_national_risk.py | 2 +- tests/test_national_risk_view.py | 2 ++ 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/changelog.md b/changelog.md index bcdef92..02f3e69 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.6.1] + +### Changed + +- National risk location link + ## [0.6.0] ### Added diff --git a/src/hapi_schema/db_national_risk.py b/src/hapi_schema/db_national_risk.py index b6469c1..11d9dae 100644 --- a/src/hapi_schema/db_national_risk.py +++ b/src/hapi_schema/db_national_risk.py @@ -12,6 +12,8 @@ ) from sqlalchemy.orm import Mapped, mapped_column, relationship +from hapi_schema.db_admin1 import DBAdmin1 +from hapi_schema.db_admin2 import DBAdmin2 from hapi_schema.db_dataset import DBDataset from hapi_schema.db_location import DBLocation from hapi_schema.db_resource import DBResource @@ -27,8 +29,8 @@ class DBNationalRisk(Base): ForeignKey("resource.id", onupdate="CASCADE", ondelete="CASCADE"), nullable=False, ) - location_ref: Mapped[int] = mapped_column( - ForeignKey("location.id", onupdate="CASCADE"), nullable=False + admin2_ref: Mapped[int] = mapped_column( + ForeignKey("admin2.id", onupdate="CASCADE"), nullable=False ) risk_class: Mapped[int] = mapped_column(Integer, nullable=False) global_rank: Mapped[int] = mapped_column(Integer, nullable=False) @@ -51,7 +53,7 @@ class DBNationalRisk(Base): source_data: Mapped[str] = mapped_column(Text, nullable=True) resource = relationship("DBResource") - location = relationship("DBLocation") + admin2 = relationship("DBAdmin2") view_params_national_risk = ViewParams( @@ -69,11 +71,27 @@ class DBNationalRisk(Base): DBResource.update_date.label("resource_update_date"), DBLocation.code.label("location_code"), DBLocation.name.label("location_name"), + DBAdmin1.code.label("admin1_code"), + DBAdmin1.name.label("admin1_name"), + DBAdmin1.is_unspecified.label("admin1_is_unspecified"), + DBAdmin2.code.label("admin2_code"), + DBAdmin2.name.label("admin2_name"), + DBAdmin2.is_unspecified.label("admin2_is_unspecified"), ).select_from( - # Join risk to loc + # Join risk to admin 2 to admin 1 to loc DBNationalRisk.__table__.join( + DBAdmin2.__table__, + DBNationalRisk.admin2_ref == DBAdmin2.id, + isouter=True, + ) + .join( + DBAdmin1.__table__, + DBAdmin2.admin1_ref == DBAdmin1.id, + isouter=True, + ) + .join( DBLocation.__table__, - DBNationalRisk.location_ref == DBLocation.id, + DBAdmin1.location_ref == DBLocation.id, isouter=True, ) # Join risk to resource to dataset diff --git a/tests/sample_data/data_national_risk.py b/tests/sample_data/data_national_risk.py index ae8394c..f7cf165 100644 --- a/tests/sample_data/data_national_risk.py +++ b/tests/sample_data/data_national_risk.py @@ -4,7 +4,7 @@ dict( id=1, resource_ref=1, - location_ref=1, + admin2_ref=1, risk_class=5, global_rank=4, overall_risk=8.1, diff --git a/tests/test_national_risk_view.py b/tests/test_national_risk_view.py index b53e270..53fc6c6 100644 --- a/tests/test_national_risk_view.py +++ b/tests/test_national_risk_view.py @@ -14,6 +14,8 @@ def test_national_risk_view(run_view_test): == "c3f001fa-b45b-464c-9460-1ca79fd39b40", view_national_risk.c.resource_hdx_id == "90deb235-1bf5-4bae-b231-3393222c2d01", + view_national_risk.c.admin2_code == "FOO-XXX-XXX", + view_national_risk.c.admin1_code == "FOO-XXX", view_national_risk.c.location_code == "FOO", ), )