Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.
djangodockerhandcodedpythonself-hostedtime-trackingtimetracker
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)