diff --git a/edc_sites/get_countries.py b/edc_sites/get_countries.py new file mode 100644 index 0000000..b996a39 --- /dev/null +++ b/edc_sites/get_countries.py @@ -0,0 +1,7 @@ +from django.contrib.sites.models import Site + + +def get_countries() -> list[str]: + """Returns the countries""" + countries = set(s.siteprofile.country for s in Site.objects.all()) + return sorted(list(countries)) diff --git a/edc_sites/get_sites_by_country.py b/edc_sites/get_sites_by_country.py index 8152931..4da372d 100644 --- a/edc_sites/get_sites_by_country.py +++ b/edc_sites/get_sites_by_country.py @@ -1,13 +1,22 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + from django_extensions.management.color import color_style from .get_all_sites import get_all_sites from .get_country import get_current_country from .get_sites_module import get_sites_module +if TYPE_CHECKING: + from .single_site import SingleSite + style = color_style() -def get_sites_by_country(country=None, all_sites=None, sites_module_name=None): +def get_sites_by_country( + country: str = None, all_sites: dict[str, list[SingleSite]] | None = None +) -> list[SingleSite]: """Returns a sites tuple for the country.""" if not all_sites or get_all_sites(): all_sites = get_sites_module().all_sites diff --git a/edc_sites/sites.py b/edc_sites/sites.py index 8d98392..06e74d7 100644 --- a/edc_sites/sites.py +++ b/edc_sites/sites.py @@ -8,11 +8,11 @@ from edc_sites.single_site import SingleSite -default_country = getattr(settings, "EDC_SITES_DEFAULT_COUNTRY", "botswana") -default_country_code = getattr(settings, "EDC_SITES_DEFAULT_COUNTRY_CODE", "bw") -default_domain = getattr(settings, "EDC_SITES_DEFAULT_DOMAIN", "localhost") +default_country: str = getattr(settings, "EDC_SITES_DEFAULT_COUNTRY", "botswana") +default_country_code: str = getattr(settings, "EDC_SITES_DEFAULT_COUNTRY_CODE", "bw") +default_domain: str = getattr(settings, "EDC_SITES_DEFAULT_DOMAIN", "localhost") -all_sites = { +all_sites: dict[str, list[SingleSite]] = { default_country or "site": [ SingleSite(