Skip to content

Commit

Permalink
Fix ordering in admin
Browse files Browse the repository at this point in the history
  • Loading branch information
gannetson committed Aug 24, 2022
1 parent 6e3e7a5 commit 6e9482d
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 10 deletions.
6 changes: 4 additions & 2 deletions bluebottle/categories/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from bluebottle.initiatives.models import Initiative
from bluebottle.utils.widgets import SecureAdminURLFieldWidget
from .models import Category, CategoryContent
from ..utils.admin import TranslatableAdminOrderingMixin


class CategoryContentInline(SortableStackedInline, TranslatableStackedInline):
Expand All @@ -31,10 +32,11 @@ class CategoryInitiativesInline(TabularInline):
extra = 0


class CategoryAdmin(TranslatableAdmin, AdminImageMixin, NonSortableParentAdmin):
class CategoryAdmin(TranslatableAdminOrderingMixin, TranslatableAdmin, AdminImageMixin, NonSortableParentAdmin):
model = Category
list_display = ('slug', 'title', 'initiatives')
list_display = ('title', 'slug', 'initiatives')
inlines = (CategoryContentInline, CategoryInitiativesInline)
translatable_ordering = 'translations__title'

def initiatives(self, obj):
url = reverse('admin:initiatives_initiative_changelist')
Expand Down
3 changes: 2 additions & 1 deletion bluebottle/geo/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
Location, Country, Place,
Geolocation)
from bluebottle.initiatives.models import Initiative
from bluebottle.utils.admin import TranslatableAdminOrderingMixin


class LocationFilter(admin.SimpleListFilter):
Expand Down Expand Up @@ -38,7 +39,7 @@ def queryset(self, request, queryset):
return queryset


class CountryAdmin(TranslatableAdmin):
class CountryAdmin(TranslatableAdminOrderingMixin, TranslatableAdmin):
list_display = ('name', 'alpha2_code', 'alpha3_code', 'numeric_code')
search_fields = ('translations__name', 'alpha2_code', 'alpha3_code')
fields = ('name', 'alpha2_code', 'alpha3_code', 'numeric_code')
Expand Down
5 changes: 3 additions & 2 deletions bluebottle/geo/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,20 @@
from django.template.defaultfilters import slugify
from django.utils.translation import gettext_lazy as _
from future.utils import python_2_unicode_compatible
from parler.models import TranslatedFields, TranslatableModel
from parler.models import TranslatedFields
from sorl.thumbnail import ImageField
from timezonefinder import TimezoneFinder

from bluebottle.utils.validators import FileMimetypeValidator, validate_file_infection
from .validators import Alpha2CodeValidator, Alpha3CodeValidator, \
NumericCodeValidator
from ..utils.models import SortableTranslatableModel

tf = TimezoneFinder()


@python_2_unicode_compatible
class GeoBaseModel(TranslatableModel):
class GeoBaseModel(SortableTranslatableModel):
"""
Abstract base model for the UN M.49 geoscheme.
Refs: http://unstats.un.org/unsd/methods/m49/m49.htm
Expand Down
3 changes: 2 additions & 1 deletion bluebottle/impact/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from parler.admin import TranslatableAdmin

from bluebottle.impact.models import ImpactType, ImpactGoal
from bluebottle.utils.admin import TranslatableAdminOrderingMixin


class ImpactGoalInline(admin.TabularInline):
Expand All @@ -17,7 +18,7 @@ def unit(self, obj):
unit.short_description = _('Unit')


class ImpactTypeAdmin(TranslatableAdmin):
class ImpactTypeAdmin(TranslatableAdminOrderingMixin, TranslatableAdmin):
list_display = admin.ModelAdmin.list_display + ('name', 'active')

def get_prepopulated_fields(self, request, obj=None):
Expand Down
4 changes: 2 additions & 2 deletions bluebottle/initiatives/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from bluebottle.geo.models import Location, Country
from bluebottle.initiatives.models import Initiative, InitiativePlatformSettings, Theme
from bluebottle.notifications.admin import MessageAdminInline, NotificationAdminMixin
from bluebottle.utils.admin import BasePlatformSettingsAdmin, export_as_csv_action
from bluebottle.utils.admin import BasePlatformSettingsAdmin, export_as_csv_action, TranslatableAdminOrderingMixin
from bluebottle.fsm.admin import StateMachineAdmin, StateMachineFilter
from bluebottle.fsm.forms import StateMachineModelForm
from bluebottle.wallposts.admin import WallpostInline
Expand Down Expand Up @@ -285,7 +285,7 @@ class InitiativePlatformSettingsAdmin(BasePlatformSettingsAdmin):


@admin.register(Theme)
class ThemeAdmin(TranslatableAdmin):
class ThemeAdmin(TranslatableAdminOrderingMixin, TranslatableAdmin):
list_display = admin.ModelAdmin.list_display + ('slug', 'disabled', 'initiative_link')
readonly_fields = ('initiative_link',)
fields = ('name', 'slug', 'description', 'disabled') + readonly_fields
Expand Down
4 changes: 2 additions & 2 deletions bluebottle/time_based/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
)
from bluebottle.time_based.states import SlotParticipantStateMachine
from bluebottle.time_based.utils import nth_weekday, duplicate_slot
from bluebottle.utils.admin import export_as_csv_action
from bluebottle.utils.admin import export_as_csv_action, TranslatableAdminOrderingMixin
from bluebottle.utils.widgets import TimeDurationWidget, get_human_readable_duration


Expand Down Expand Up @@ -970,7 +970,7 @@ def get_fieldsets(self, request, obj=None):


@admin.register(Skill)
class SkillAdmin(TranslatableAdmin):
class SkillAdmin(TranslatableAdminOrderingMixin, TranslatableAdmin):
list_display = ('name', 'member_link')
readonly_fields = ('member_link',)
fields = readonly_fields + ('name', 'disabled', 'description', 'expertise')
Expand Down
10 changes: 10 additions & 0 deletions bluebottle/utils/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,13 @@ def log_action(obj, user, change_message='Changed', action_flag=CHANGE):
@admin.register(TranslationPlatformSettings)
class TranslationPlatformSettingsAdmin(TranslatableAdmin, BasePlatformSettingsAdmin):
pass


class TranslatableAdminOrderingMixin(object):

translatable_ordering = 'translations__name'

def get_queryset(self, request):
language_code = self.get_queryset_language(request)
return super(TranslatableAdminOrderingMixin, self).get_queryset(request). \
translated(language_code).order_by(self.translatable_ordering)

0 comments on commit 6e9482d

Please sign in to comment.