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.3.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ceb514b9b2e237ea6dbf67f520a1b34429c84b775c7f75bf58a1697753474094 |
|
MD5 | a6968c928338f793be6233708a9141b2 |
|
BLAKE2b-256 | 94b082c76b48dfac0c80806bdbda5f64d43679f3bf868da944cf2eca559ead36 |