34 lines
991 B
Python
34 lines
991 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
import json
|
|
|
|
from django import http
|
|
|
|
from greenmine.base import domains
|
|
from greenmine.base.exceptions import format_exception
|
|
|
|
|
|
class DomainsMiddleware(object):
|
|
def process_request(self, request):
|
|
domain = request.META.get("HTTP_X_HOST", None)
|
|
if domain is not None:
|
|
try:
|
|
domain = domains.get_domain_for_domain_name(domain)
|
|
except domains.DomainNotFound as e:
|
|
detail = format_exception(e)
|
|
return http.HttpResponseBadRequest(json.dumps(detail))
|
|
else:
|
|
domain = domains.get_default_domain()
|
|
|
|
request.domain = domain
|
|
domains.activate(domain)
|
|
|
|
def process_response(self, request, response):
|
|
domains.deactivate()
|
|
|
|
if hasattr(request, "domain"):
|
|
response["X-Site-Host"] = request.domain.domain
|
|
response["X-Site-Register"] = "on" if request.domain.public_register else "off"
|
|
|
|
return response
|