diff --git a/services/admin.py b/services/admin.py index 49a5e98e..6c1fc50a 100644 --- a/services/admin.py +++ b/services/admin.py @@ -1,6 +1,43 @@ from django.contrib import admin +from django.contrib.admin import SimpleListFilter +from django.utils.translation import ugettext_lazy as _ from services.models import Service, ServiceType, Alias + +# See +# +# for documentation +class StartsWithListFilter(SimpleListFilter): + title = _('Starts with') + + parameter_name = 'starts_with' + + def lookups(self, request, model_admin): + def first_two(s): + s = unicode(s) + if len(s) < 2: + return s + else: + return s[:2] + + prefixes = [first_two(alias.name) + for alias in model_admin.model.objects.only('name')] + + prefixes = sorted(set(prefixes)) + + return [(prefix, prefix) for prefix in prefixes] + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(name__istartswith=self.value()) + else: + return queryset + + +class AliasAdmin(admin.ModelAdmin): + list_filter = (StartsWithListFilter,) + + admin.site.register(Service) admin.site.register(ServiceType) -admin.site.register(Alias) +admin.site.register(Alias, AliasAdmin) diff --git a/services/models.py b/services/models.py index 77c0dda1..1839b330 100755 --- a/services/models.py +++ b/services/models.py @@ -79,6 +79,7 @@ class Meta: ("manage_aliases", "Can manage aliases"), ) ordering = ["name"] + verbose_name_plural = "aliases" def expire(self, time=None): if time == None: