You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

47 lines
1.5 KiB

# -*- 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)