# -*- coding: utf-8 -*- from functools import update_wrapper, partial from django.contrib import admin from django.conf.urls import patterns, url from modeltranslation.admin import TabbedTranslationAdmin from functions.admin import DefaultAdmin from functions.http import JsonResponse from .models import TargetAudience class TargetAudienceAdmin(DefaultAdmin, TabbedTranslationAdmin): list_display = ['title'] def urls(self): urlpatterns = self.get_urls() def wrap(view): def wrapper(*args, **kwargs): return self.admin_site.admin_view(view)(*args, **kwargs) return update_wrapper(wrapper, view) info = self.model._meta.app_label, self.model._meta.module_name _urlpatterns = patterns('', url(r'^search_ajax/$', wrap(self.search_ajax_view), name='%s_%s_searchajax' % info), ) return _urlpatterns + urlpatterns urls = property(urls) def search_ajax_view(self, request, extra_context=None, *args, **kwargs): model = self.model opts = model._meta term = request.GET.get('term', '') if not term: qs = model.objects.all()[:100] else: qs = model.objects.filter(title__icontains=term) result = [{'id': obj.id, 'label': obj.title} for obj in qs] return JsonResponse(result, safe=False) admin.site.register(TargetAudience, TargetAudienceAdmin)