Simple classes related to the django sites framework for clinicedc projects.
Project description
edc-sites
Site definitions to work with Django’s Sites Framework and django_multisite.
Define a sites.py. This is usually in a separate project module. For example, for project meta there is a module meta_sites that contains a sites.py.
# sites.py
from edc_sites.single_site import SingleSite
fqdn = "example.clinicedc.org"
meta_sites = (
SingleSite(
10,
"hindu_mandal",
title="Hindu Mandal Hospital",
country="tanzania",
country_code="tz",
domain=f"hindu_mandal.tz.{fqdn}",
),
SingleSite(
20,
"amana",
title="Amana Hospital",
country="tanzania",
country_code="tz",
domain=f"hindu_mandal.tz.{fqdn}",
),
)
Register a post_migrate signal in apps.py to update the django model Site and the EDC model SiteProfile on the next migration:
# apps.py
from .sites import meta_sites, fqdn
def post_migrate_update_sites(sender=None, **kwargs):
from edc_sites.add_or_update_django_sites import add_or_update_django_sites
sys.stdout.write(style.MIGRATE_HEADING("Updating sites:\n"))
add_or_update_django_sites(
apps=django_apps, sites=meta_sites, fqdn=fqdn, verbose=True
)
sys.stdout.write("Done.\n")
sys.stdout.flush()
For another deployment, we have alot of sites spread out over a few countries. In this case we pass a dictionary and separate the lists of sites by country.
For example:
fqdn = "inte.clinicedc.org"
all_sites = {
"tanzania":(
SingleSite(
101,
"hindu_mandal",
title="Hindu Mandal Hospital",
country="tanzania",
country_code="tz",
domain=f"hindu_mandal.tz.{fqdn}",
),
SingleSite(
102,
"amana",
title="Amana Hospital",
country="tanzania",
country_code="tz",
domain=f"hindu_mandal.tz.{fqdn}",
),
),
"uganda":(
SingleSite(
201,
"kojja",
country="uganda",
country_code="ug",
domain=f"kojja.ug.{fqdn}",
),
SingleSite(
202,
"mbarara",
country="uganda",
country_code="ug",
domain=f"mbarara.ug.{fqdn}",
),
),
}
In a multisite, multi-country deployment, managing the SITE_ID is complicated. We use django_multisite which nicely reads the SITE_ID from the url. django_multisite will extract kojja from https://kojja.ug.example.clinicedc.org to do a model lookup to get the SITE_ID.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for edc_sites-0.1.27-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e56ef2b95eb1acc571fdcf68dc47f0dcfb5d5e620e70a876775a8bcf1196c442 |
|
MD5 | 166803f28a6fd568cc96bd9d1e76a99f |
|
BLAKE2b-256 | 8d428ad4827de2e7f7234f88f93b0a976fea57e00ece2e99e80f2e2eb47f4f6c |