diff --git a/newsbox/admin.py b/newsbox/admin.py index 4d717d20f50cd1096f201bcf7450f8c94a2f9637..5c2f7b6ec6d7ce07445ece36b727fb26e5668345 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 739bca026212df85e8a88accf8e5bafc3f623451..b0de43319cda38e8c212d1a04ff2c34165ba688b 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 7c93689e5979a5d73987d1fb3412b3e15c565346..2b072f94f08d51daa36a1b6fa1adf4fe9bc8dbfb 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):