From ef8aac7dee6f3e2fe00311bb0872a94115fa2ef4 Mon Sep 17 00:00:00 2001 From: DylannCordel <d.cordel@webu.coop> Date: Tue, 4 Apr 2017 17:53:31 +0200 Subject: [PATCH] fix for better reusability --- newsbox/admin.py | 10 +++++++--- newsbox/models.py | 6 +++++- newsbox_i18n/admin.py | 13 +++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/newsbox/admin.py b/newsbox/admin.py index 4d717d2..5c2f7b6 100644 --- a/newsbox/admin.py +++ b/newsbox/admin.py @@ -108,7 +108,6 @@ def add_fields_to_fieldset( class NewsboxBaseAdmin(admin.ModelAdmin): list_filter = ('newsbox_publication_start_date', 'newsbox_status', ) - list_display = ['get_newsbox_title', 'newsbox_date_short', 'changestatus_link'] list_display_links = ('get_newsbox_title',) fieldsets = [ (None, { @@ -118,6 +117,11 @@ class NewsboxBaseAdmin(admin.ModelAdmin): actions = ['publish', 'unpublish'] save_as = True + def get_list_display(self, request): + if not getattr(self.__class__, 'list_display', None): + self.list_display = ['get_newsbox_title', 'newsbox_date_short', 'changestatus_link'] + return super(NewsboxBaseAdmin, self).get_list_display(request) + def get_prepopulated_fields(self, request, object=None): pfields = super(NewsboxBaseAdmin, self).get_prepopulated_fields(request, object) or {} pfields.update({'newsbox_slug': ('newsbox_title',)}) @@ -312,7 +316,7 @@ class NewsboxBaseAdmin(admin.ModelAdmin): '%(nb)d %(objtype)s have been unpublished', ok) % {'nb': ok, 'objtype': self.model._meta.verbose_name_plural}) - unpublish.short_description = _('Unpublish selected %(verbose_name_plural)s') + unpublish.short_description = _('Archive selected %(verbose_name_plural)s') def ensure_slug_uniq_queryset(self, request, obj, slug): y, m, d = (obj.newsbox_publication_start_date.year, @@ -393,7 +397,7 @@ class NewsboxExpiredAdmin(NewsboxBaseAdmin): return fieldsets def get_list_display(self, request): - list_display = copy.copy(super(NewsboxExpiredAdmin, self).get_list_display(request)) + list_display = list(super(NewsboxExpiredAdmin, self).get_list_display(request)) if 'newsbox_publication_dates_short' not in list_display: try: index = list_display.index('newsbox_date_short') diff --git a/newsbox/models.py b/newsbox/models.py index 739bca0..b0de433 100644 --- a/newsbox/models.py +++ b/newsbox/models.py @@ -293,6 +293,10 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)): return False return now() >= self.newsbox_publication_start_date + @property + def is_draft(self): + return self.newsbox_status == self.STATUS_DRAFT + def publish(self, commit=True): updated = False if self.newsbox_status != self.STATUS_PUBLISHED: @@ -309,7 +313,7 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)): def unpublish(self, commit=True): updated = False - if self.newsbox_status == self.STATUS_PUBLISHED: + if self.newsbox_status != self.STATUS_ARCHIVED: self.newsbox_status = self.STATUS_ARCHIVED updated = True if updated and commit: diff --git a/newsbox_i18n/admin.py b/newsbox_i18n/admin.py index 7c93689..2b072f9 100644 --- a/newsbox_i18n/admin.py +++ b/newsbox_i18n/admin.py @@ -22,16 +22,17 @@ edit_translation_links.short_description = _('translations') class NewsboxI18NBaseAdmin(TranslatableAdmin): - search_fields = ['newsbox__translation__title', 'newsbox__translation__summary', ] + search_fields = ['translations__newsbox_title', 'translations__newsbox_summary'] date_hierarchy = 'newsbox_publication_start_date' def get_list_display(self, request): list_display = super(NewsboxI18NBaseAdmin, self).get_list_display(request) - # prevent modifying class list_display variable - list_display = copy.deepcopy(list_display) - if settings.LANGUAGES and len(settings.LANGUAGES) > 1: - list_display.insert(1, edit_translation_links) - + if not getattr(self.__class__, 'list_display', None): + if NewsboxI18NBaseAdmin not in list_display: + # prevent modifying class list_display variable + list_display = copy.deepcopy(list_display) + if settings.LANGUAGES and len(settings.LANGUAGES) > 1: + list_display.insert(1, edit_translation_links) return list_display def ensure_slug_uniq_queryset(self, request, obj, slug): -- GitLab