repos
/ timestrap-django master

timestrap-django

mirror archived upstream

Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.

djangodockerhandcodedpythonself-hostedtime-trackingtimetracker

918 B · 38 lines · Python Raw History
 1import threading
 2
 3from django.contrib.sites.models import Site
 4from django.conf import settings
 5from django.http.request import split_domain_port
 6
 7
 8_thread_local = threading.local()
 9
10
11def current_request():
12    """
13    Provides access to the current request at deeper project levels.
14    """
15    return getattr(_thread_local, "request", None)
16
17
18class SiteMiddleware(object):
19    """
20    Determines the current Site based on the domain in use.
21    """
22
23    def __init__(self, get_response):
24        self.get_response = get_response
25
26    def __call__(self, request):
27        domain, port = split_domain_port(request.get_host())
28
29        try:
30            current_site = Site.objects.get(domain=domain)
31        except Site.DoesNotExist:
32            current_site = Site.objects.get(id=settings.SITE_ID)
33
34        request.site = current_site
35        _thread_local.request = request
36
37        return self.get_response(request)