djaodjin-multitier is a Django application that implements shared tenancy.
Major Features:
- Dynamically select the following based on subdomain or path prefix:
* Database connection
* SMTP connection
* Templates
- URL resolvers: Dynamic path prefix (as a hack in i18n module)
The [notes](http://djaodjin.com/blog/multi-tier-implementation-in-django.blog.html)
of the presentation at a SF Django Meetup are useful to understand how
middlewares, thread locals and template loaders were used to implement
multi-tier applications here.
Development
===========
After cloning the repository, create a virtualenv environment, install
the prerequisites, create and load initial data into the database, then
run the testsite webapp.
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install -r testsite/requirements.txt
# Create the fixtures databases and run the server
$ make initdb
$ python manage.py runserver
Release Notes
=============
Tested with
- **Python:** 3.7, **Django:** 3.2 ([LTS](https://www.djangoproject.com/download/))
- **Python:** 3.10, **Django:** 4.2 (latest)
- **Python:** 2.7, **Django:** 1.11 (legacy) - use testsite/requirements-legacy.txt
0.2.0
* replaces field `tag` by `extra` to match coding conventions
* returns `multitier.Site` when `settings.MULTITIER_SITE_MODEL is None`.
-- Sebastien Mirolo <smirolo@djaodjin.com> Tue, 10 Oct 2023 14:00:00 -0700
[previous release notes](changelog)
Raw data
{
"_id": null,
"home_page": "",
"name": "djaodjin-multitier",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "The DjaoDjin Team <help@djaodjin.com>",
"keywords": "django,multitier,databases,routers",
"author": "",
"author_email": "The DjaoDjin Team <help@djaodjin.com>",
"download_url": "https://files.pythonhosted.org/packages/cb/48/beee257461f5650c1d415b591ccd1bc6745fdc62d8f2bda2c61761929cc1/djaodjin-multitier-0.2.0.tar.gz",
"platform": null,
"description": "djaodjin-multitier is a Django application that implements shared tenancy.\n\nMajor Features:\n\n - Dynamically select the following based on subdomain or path prefix:\n * Database connection\n * SMTP connection\n * Templates\n - URL resolvers: Dynamic path prefix (as a hack in i18n module)\n\nThe [notes](http://djaodjin.com/blog/multi-tier-implementation-in-django.blog.html)\nof the presentation at a SF Django Meetup are useful to understand how\nmiddlewares, thread locals and template loaders were used to implement\nmulti-tier applications here.\n\nDevelopment\n===========\n\nAfter cloning the repository, create a virtualenv environment, install\nthe prerequisites, create and load initial data into the database, then\nrun the testsite webapp.\n\n $ python -m venv .venv\n $ source .venv/bin/activate\n $ pip install -r testsite/requirements.txt\n\n # Create the fixtures databases and run the server\n $ make initdb\n $ python manage.py runserver\n\nRelease Notes\n=============\n\nTested with\n\n- **Python:** 3.7, **Django:** 3.2 ([LTS](https://www.djangoproject.com/download/))\n- **Python:** 3.10, **Django:** 4.2 (latest)\n- **Python:** 2.7, **Django:** 1.11 (legacy) - use testsite/requirements-legacy.txt\n\n0.2.0\n\n * replaces field `tag` by `extra` to match coding conventions\n * returns `multitier.Site` when `settings.MULTITIER_SITE_MODEL is None`.\n\n -- Sebastien Mirolo <smirolo@djaodjin.com> Tue, 10 Oct 2023 14:00:00 -0700\n\n[previous release notes](changelog)\n",
"bugtrack_url": null,
"license": "BSD-2-Clause",
"summary": "Django application that implements shared tenancy",
"version": "0.2.0",
"project_urls": {
"changelog": "https://github.com/djaodjin/djaodjin-multitier/changelog",
"documentation": "https://djaodjin-multitier.readthedocs.io/",
"repository": "https://github.com/djaodjin/djaodjin-multitier"
},
"split_keywords": [
"django",
"multitier",
"databases",
"routers"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "582417725f754f2189420d8003b1d724f55bd54454e60d14f20a2edaf12aec28",
"md5": "2a676f7d6c7801acc0bbfef9ecc0fdd7",
"sha256": "ba481b287df1aadeb07edfd0be82f3cc5811c02a494f5a22c94f81ac8e9b8d83"
},
"downloads": -1,
"filename": "djaodjin_multitier-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2a676f7d6c7801acc0bbfef9ecc0fdd7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 35383,
"upload_time": "2023-10-10T21:48:22",
"upload_time_iso_8601": "2023-10-10T21:48:22.855355Z",
"url": "https://files.pythonhosted.org/packages/58/24/17725f754f2189420d8003b1d724f55bd54454e60d14f20a2edaf12aec28/djaodjin_multitier-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cb48beee257461f5650c1d415b591ccd1bc6745fdc62d8f2bda2c61761929cc1",
"md5": "a4922c98967786ff6b33d29dce236881",
"sha256": "2d00d3f0e38795251fbc2260934e8f6b4c1dd9bd9fd3eb45de774d6ce5a78822"
},
"downloads": -1,
"filename": "djaodjin-multitier-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "a4922c98967786ff6b33d29dce236881",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 19146,
"upload_time": "2023-10-10T21:48:24",
"upload_time_iso_8601": "2023-10-10T21:48:24.683462Z",
"url": "https://files.pythonhosted.org/packages/cb/48/beee257461f5650c1d415b591ccd1bc6745fdc62d8f2bda2c61761929cc1/djaodjin-multitier-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-10 21:48:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "djaodjin",
"github_project": "djaodjin-multitier",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "djaodjin-multitier"
}