diff --git a/app/broadcast_areas/__init__.py b/app/broadcast_areas/__init__.py index 3e914200f..a8b4850bc 100644 --- a/app/broadcast_areas/__init__.py +++ b/app/broadcast_areas/__init__.py @@ -101,9 +101,10 @@ class BroadcastAreaLibrary(SerialisedModelCollection, SortableMixin, GetItemById model = BroadcastArea def __init__(self, row): - id, name, is_group = row + id, name, name_singular, is_group = row self.id = id self.name = name + self.name_singular = name_singular self.is_group = bool(is_group) self.items = BroadcastAreasRepository().get_all_areas_for_library(self.id) diff --git a/app/broadcast_areas/broadcast-areas.sqlite3 b/app/broadcast_areas/broadcast-areas.sqlite3 index 734e1d90c..d076aae6c 100644 Binary files a/app/broadcast_areas/broadcast-areas.sqlite3 and b/app/broadcast_areas/broadcast-areas.sqlite3 differ diff --git a/app/broadcast_areas/create-broadcast-areas-db.py b/app/broadcast_areas/create-broadcast-areas-db.py index ea50a845a..7f877379d 100755 --- a/app/broadcast_areas/create-broadcast-areas-db.py +++ b/app/broadcast_areas/create-broadcast-areas-db.py @@ -69,15 +69,20 @@ repo.delete_db() repo.create_tables() simple_datasets = [ - ("Countries", "ctry19cd", "ctry19nm"), + ("Countries", "country", "ctry19cd", "ctry19nm"), ] -for dataset_name, id_field, name_field in simple_datasets: +for dataset_name, dataset_name_singular, id_field, name_field in simple_datasets: filepath = package_path / "{}.geojson".format(dataset_name) dataset_id = id_field[:-2] dataset_geojson = geojson.loads(filepath.read_text()) - repo.insert_broadcast_area_library(dataset_id, dataset_name, False) + repo.insert_broadcast_area_library( + dataset_id, + name=dataset_name, + name_singular=dataset_name_singular, + is_group=False, + ) for feature in dataset_geojson["features"]: f_id = dataset_id + "-" + feature["properties"][id_field] @@ -111,8 +116,14 @@ ward_code_to_la_id_mapping = { } dataset_name = "Local authorities" +dataset_name_singular = "local authority" dataset_id = "wd20-lad20" -repo.insert_broadcast_area_library(dataset_id, dataset_name, True) +repo.insert_broadcast_area_library( + dataset_id, + name=dataset_name, + name_singular=dataset_name_singular, + is_group=True, +) areas_to_add = [] diff --git a/app/broadcast_areas/repo.py b/app/broadcast_areas/repo.py index 668ea3981..5f639b0d1 100644 --- a/app/broadcast_areas/repo.py +++ b/app/broadcast_areas/repo.py @@ -21,6 +21,7 @@ class BroadcastAreasRepository(object): CREATE TABLE broadcast_area_libraries ( id TEXT PRIMARY KEY, name TEXT NOT NULL, + name_singular TEXT NOT NULL, is_group BOOLEAN NOT NULL )""") @@ -62,15 +63,15 @@ class BroadcastAreasRepository(object): ON broadcast_areas (broadcast_area_library_group_id); """) - def insert_broadcast_area_library(self, id, name, is_group): + def insert_broadcast_area_library(self, id, *, name, name_singular, is_group): q = """ - INSERT INTO broadcast_area_libraries (id, name, is_group) - VALUES (?, ?, ?) + INSERT INTO broadcast_area_libraries (id, name, name_singular, is_group) + VALUES (?, ?, ?, ?) """ with self.conn() as conn: - conn.execute(q, (id, name, is_group)) + conn.execute(q, (id, name, name_singular, is_group)) def insert_broadcast_areas(self, areas): @@ -106,9 +107,9 @@ class BroadcastAreasRepository(object): return cursor.fetchall() def get_libraries(self): - q = "SELECT id, name, is_group FROM broadcast_area_libraries" + q = "SELECT id, name, name_singular, is_group FROM broadcast_area_libraries" results = self.query(q) - libraries = [(row[0], row[1], row[2]) for row in results] + libraries = [(row[0], row[1], row[2], row[3]) for row in results] return sorted(libraries) def get_library_description(self, library_id): diff --git a/app/main/views/broadcast.py b/app/main/views/broadcast.py index 6ff7f5962..025939f4c 100644 --- a/app/main/views/broadcast.py +++ b/app/main/views/broadcast.py @@ -126,6 +126,7 @@ def choose_broadcast_area(service_id, broadcast_message_id, library_slug): search_form=SearchByNameForm(), show_search_form=(len(library) > 7), library=library, + page_title=f'Choose a {library.name_singular.lower()}', broadcast_message=broadcast_message, ) @@ -142,7 +143,7 @@ def choose_broadcast_area(service_id, broadcast_message_id, library_slug): form=form, search_form=SearchByNameForm(), show_search_form=(len(form.areas.choices) > 7), - page_title=library.name, + page_title=f'Choose {library.name.lower()}', broadcast_message=broadcast_message, ) diff --git a/app/templates/views/broadcast/areas-with-sub-areas.html b/app/templates/views/broadcast/areas-with-sub-areas.html index c62e09ab4..2f1f02a7f 100644 --- a/app/templates/views/broadcast/areas-with-sub-areas.html +++ b/app/templates/views/broadcast/areas-with-sub-areas.html @@ -4,13 +4,13 @@ {% extends "withnav_template.html" %} {% block service_page_title %} - {{ library.name }} + {{ page_title }} {% endblock %} {% block maincolumn_content %} {{ page_header( - library.name, + page_title, back_link=url_for('.choose_broadcast_library', service_id=current_service.id, broadcast_message_id=broadcast_message.id), )}} diff --git a/tests/app/broadcast_areas/test_broadcast_area.py b/tests/app/broadcast_areas/test_broadcast_area.py index f636fce72..9031dacae 100644 --- a/tests/app/broadcast_areas/test_broadcast_area.py +++ b/tests/app/broadcast_areas/test_broadcast_area.py @@ -164,6 +164,6 @@ def test_repository_has_all_libraries(): assert len(libraries) == 2 assert [ - 'Countries', - 'Local authorities', - ] == [name for _, name, _is_group in libraries] + ('Countries', 'country'), + ('Local authorities', 'local authority'), + ] == [(name, name_singular) for _, name, name_singular, _is_group in libraries] diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index 34bbd9eca..f416391f7 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -320,6 +320,9 @@ def test_choose_broadcast_area_page( broadcast_message_id=fake_uuid, library_slug='ctry19', ) + assert normalize_spaces(page.select_one('h1').text) == ( + 'Choose countries' + ) assert [ ( choice.select_one('input')['value'], @@ -347,6 +350,9 @@ def test_choose_broadcast_area_page_for_area_with_sub_areas( broadcast_message_id=fake_uuid, library_slug='wd20-lad20', ) + assert normalize_spaces(page.select_one('h1').text) == ( + 'Choose a local authority' + ) partial_url_for = partial( url_for, 'main.choose_broadcast_sub_area',