Skip to main content

Simple classes related to the django sites framework for clinicedc projects.

Project description

pypi travis codecov downloads

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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edc_sites-0.1.21-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file edc_sites-0.1.21-py3-none-any.whl.

File metadata

  • Download URL: edc_sites-0.1.21-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0.post20200309 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for edc_sites-0.1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 76d14ba625424448a2d47809b0b352e6f7121485da7658afe4cf51e9e83349b9
MD5 6ee3e3c3e728995fcd2e00d4c11f8395
BLAKE2b-256 c6a0fbb2f652939b3bbec3e4d63c4a93e5e65af1d0b7f0d86f9786321769b655

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page