From f8af90720e4e53cab190a391be1ba20fc8e75c47 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Wed, 10 Apr 2013 21:47:45 +0100 Subject: [PATCH] Flesh out the Counties/Countries admin. --- app/stores/admin.py | 33 +++++++++++++++++++++++++++++++-- app/stores/models/base.py | 2 ++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/stores/admin.py b/app/stores/admin.py index f0b7654..f7b4de8 100644 --- a/app/stores/admin.py +++ b/app/stores/admin.py @@ -3,6 +3,7 @@ from django.template import RequestContext from django.shortcuts import render_to_response from django import forms from django.db import transaction +from django.db.models import Count from django.contrib import admin from django.contrib.contenttypes.generic import GenericStackedInline from .models import Chain, Store, Address, Brand, ClaimRequest, Link, LinkType, County, Country @@ -109,11 +110,39 @@ class ClaimAdmin(admin.ModelAdmin): approve_request.short_description = 'Approve selected requests.' +class CountyAdmin(admin.ModelAdmin): + list_display = ['name', 'address_count'] + + def address_count(self, obj): + return obj.address_count + address_count.admin_order_field = 'address_count' + + def queryset(self, request): + qs = super(CountyAdmin, self).queryset(request) + return qs.annotate(address_count=Count('addresses')) + + +class CountryAdmin(admin.ModelAdmin): + list_display = ['name', 'address_count', 'county_count'] + + def address_count(self, obj): + return obj.address_count + address_count.admin_order_field = 'address_count' + + def county_count(self, obj): + return obj.county_count + county_count.admin_order_field = 'county_count' + + def queryset(self, request): + qs = super(CountryAdmin, self).queryset(request) + return qs.annotate(address_count=Count('addresses'), county_count=Count('counties')) + + admin.site.register(Chain, ChainAdmin) admin.site.register(Store, StoreAdmin) admin.site.register(Address, admin.ModelAdmin) admin.site.register(Brand, admin.ModelAdmin) admin.site.register(ClaimRequest, ClaimAdmin) admin.site.register(LinkType, admin.ModelAdmin) -admin.site.register(County, admin.ModelAdmin) -admin.site.register(Country, admin.ModelAdmin) \ No newline at end of file +admin.site.register(County, CountyAdmin) +admin.site.register(Country, CountryAdmin) \ No newline at end of file diff --git a/app/stores/models/base.py b/app/stores/models/base.py index 07ff14c..f210a1b 100644 --- a/app/stores/models/base.py +++ b/app/stores/models/base.py @@ -120,6 +120,7 @@ class County(models.Model): class Meta: ordering = ['name'] app_label = 'stores' + verbose_name_plural = 'Counties' class Country(models.Model): @@ -139,6 +140,7 @@ class Country(models.Model): class Meta: ordering = ['name'] app_label = 'stores' + verbose_name_plural = 'Countries' class Address(models.Model):