| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- import datetime
 
- from importlib import import_module
 
- import json
 
- from django.core.serializers.json import DjangoJSONEncoder
 
- from django.http import HttpResponse
 
- from django.core.urlresolvers import reverse, resolve
 
- from django.contrib import admin
 
- from django.contrib.admin import AdminSite
 
- from django.utils.encoding import smart_text
 
- from jet import settings
 
- from django.contrib import messages
 
- from django.utils.encoding import force_text
 
- from django.utils.functional import Promise
 
- class JsonResponse(HttpResponse):
 
-     """
 
-     An HTTP response class that consumes data to be serialized to JSON.
 
-     :param data: Data to be dumped into json. By default only ``dict`` objects
 
-       are allowed to be passed due to a security flaw before EcmaScript 5. See
 
-       the ``safe`` parameter for more information.
 
-     :param encoder: Should be an json encoder class. Defaults to
 
-       ``django.core.serializers.json.DjangoJSONEncoder``.
 
-     :param safe: Controls if only ``dict`` objects may be serialized. Defaults
 
-       to ``True``.
 
-     """
 
-     def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, **kwargs):
 
-         if safe and not isinstance(data, dict):
 
-             raise TypeError('In order to allow non-dict objects to be '
 
-                 'serialized set the safe parameter to False')
 
-         kwargs.setdefault('content_type', 'application/json')
 
-         data = json.dumps(data, cls=encoder)
 
-         super(JsonResponse, self).__init__(content=data, **kwargs)
 
- def get_app_list(context):
 
-     template_response = get_admin_site(context.get('current_app', '')).index(context['request'])
 
-     try:
 
-         return template_response.context_data['app_list']
 
-     except Exception:
 
-         return None
 
- def get_admin_site(current_app):
 
-     try:
 
-         resolver_match = resolve(reverse('%s:index' % current_app))
 
-         for func_closure in resolver_match.func.func_closure:
 
-             if isinstance(func_closure.cell_contents, AdminSite):
 
-                 return func_closure.cell_contents
 
-     except:
 
-         pass
 
-     return admin.site
 
- def get_admin_site_name(context):
 
-     return get_admin_site(context).name
 
- class LazyDateTimeEncoder(json.JSONEncoder):
 
-     def default(self, obj):
 
-         if isinstance(obj, datetime.datetime) or isinstance(obj, datetime.date):
 
-             return obj.isoformat()
 
-         elif isinstance(obj, Promise):
 
-             return force_text(obj)
 
-         return json.JSONEncoder.default(self, obj)
 
- def get_model_instance_label(instance):
 
-     if getattr(instance, "related_label", None):
 
-         return instance.related_label()
 
-     return smart_text(instance)
 
- class SuccessMessageMixin(object):
 
-     """
 
-     Adds a success message on successful form submission.
 
-     """
 
-     success_message = ''
 
-     def form_valid(self, form):
 
-         response = super(SuccessMessageMixin, self).form_valid(form)
 
-         success_message = self.get_success_message(form.cleaned_data)
 
-         if success_message:
 
-             messages.success(self.request, success_message)
 
-         return response
 
-     def get_success_message(self, cleaned_data):
 
-         return self.success_message % cleaned_data
 
 
  |