From 9c1a199ec8383979cad9a6e5c9257988316446b2 Mon Sep 17 00:00:00 2001 From: Julia Luna Date: Sat, 18 Jun 2022 18:25:33 +0200 Subject: [PATCH] initial bloop --- .gitignore | 4 ++++ manage.py | 22 ++++++++++++++++++++++ requirements.txt | 2 ++ scopedsites/__init__.py | 0 scopedsites/admin.py | 3 +++ scopedsites/apps.py | 6 ++++++ scopedsites/middleware.py | 16 ++++++++++++++++ scopedsites/migrations/__init__.py | 0 scopedsites/models.py | 20 ++++++++++++++++++++ scopedsites/tests.py | 3 +++ scopedsites/views.py | 3 +++ 11 files changed, 79 insertions(+) create mode 100644 .gitignore create mode 100755 manage.py create mode 100644 requirements.txt create mode 100644 scopedsites/__init__.py create mode 100644 scopedsites/admin.py create mode 100644 scopedsites/apps.py create mode 100644 scopedsites/middleware.py create mode 100644 scopedsites/migrations/__init__.py create mode 100644 scopedsites/models.py create mode 100644 scopedsites/tests.py create mode 100644 scopedsites/views.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0aa670f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +env/ +.idea/ +db.sqlite3 +django_scopedsites \ No newline at end of file diff --git a/manage.py b/manage.py new file mode 100755 index 0000000..e191c95 --- /dev/null +++ b/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_scopedsites.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..90195de --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +django_scopes +django \ No newline at end of file diff --git a/scopedsites/__init__.py b/scopedsites/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scopedsites/admin.py b/scopedsites/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/scopedsites/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/scopedsites/apps.py b/scopedsites/apps.py new file mode 100644 index 0000000..0bb2301 --- /dev/null +++ b/scopedsites/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ScopedsitesConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'scopedsites' diff --git a/scopedsites/middleware.py b/scopedsites/middleware.py new file mode 100644 index 0000000..b5d676a --- /dev/null +++ b/scopedsites/middleware.py @@ -0,0 +1,16 @@ +from django_scopes import scope + +from scopedsites.models import Domain + + +class DomainScopeMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + d = Domain.get_from_request(request) + + with scope(domain=d): + response = self.get_response(request) + + return response diff --git a/scopedsites/migrations/__init__.py b/scopedsites/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scopedsites/models.py b/scopedsites/models.py new file mode 100644 index 0000000..3dbfc20 --- /dev/null +++ b/scopedsites/models.py @@ -0,0 +1,20 @@ +from django.db import models +from django.shortcuts import get_object_or_404 +from django.utils.translation import gettext_lazy as _ + + +class Domain(models.Model): + fqdn = models.CharField( + _('FQDN'), + max_length=255, + unique=True, + ) + + name = models.CharField( + _('display name'), + max_length=255, + ) + + @classmethod + def get_from_request(cls, request): + return get_object_or_404(cls, fqdn__iexact=request.META.get('HTTP_HOST', '')) diff --git a/scopedsites/tests.py b/scopedsites/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/scopedsites/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/scopedsites/views.py b/scopedsites/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/scopedsites/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here.