Source code for admin_kit.sites

from weakref import WeakSet
from django.http import HttpResponse
from django.contrib.staticfiles.templatetags.staticfiles import static

all_sites = WeakSet()

__all__ = ['AdminKitSite', 'site']

[docs]class AdminKitSite: """ The main AdminKitSite that routes and process url requests. """ def __init__(self, name='admin_kit'): self._registry = {} self.name = name all_sites.add(self) def ping(self, request): from django.shortcuts import render return render(request, 'admin_kit/ping.html') def base_js(self, request): from django.shortcuts import render base_index = request.path.rfind('base.js') app_url = request.path[:base_index-1] enable_dup = True try: from django.conf import settings enable_dup = not settings.KIT_DISABLE_DUPLICATE except AttributeError: enable_dup = True return render(request, 'admin_kit/base.js', context={"app": app_url, "duplicate": enable_dup}, content_type="text/javascript")
[docs] def register(self, key, ajax_class): """ Registers the ``ajax_class`` for ajax behaviour key :: str This is the *key* that will be used in models for binding ajax_class :: class The ajax class that inherits :class:`admin_kit.ajax.Ajax` """ key = ajax_class.generate_key(key) self._registry[key] = ajax_class()
def ajax(self, request, key): response = self._registry[key].route(request) return response def get_urls(self): from django.conf.urls import url from django.conf import settings urlpatterns = [ url(r'^ajax/(?P<key>.*)/', self.ajax, name='ajax'), url(r'base.js/', self.base_js, name='base_js') ] if settings.DEBUG: urlpatterns += [url(r'^ping', self.ping, name='ping')] return urlpatterns @property def urls(self): return self.get_urls(), 'admin_kit', self.name
site = AdminKitSite()