diff --git a/journals/admin.py b/journals/admin.py index acd232a6a1e9256a0907a5b76e42ad8fe526056f..bd62fc13a881bb80fbb59a88dbb94ab4b630149a 100644 --- a/journals/admin.py +++ b/journals/admin.py @@ -26,6 +26,9 @@ admin.site.register(Issue, IssueAdmin) class PublicationAdmin(admin.ModelAdmin): search_fields = ['title', 'author_list'] + list_display = ['title', 'author_list', 'in_issue', 'doi_string', 'publication_date'] + date_hierarchy = 'publication_date' + list_filter = ['in_issue'] admin.site.register(Publication, PublicationAdmin) diff --git a/scipost/admin.py b/scipost/admin.py index 87df8ce71cbb0db9e7a7289f731f4639c396f6a8..5cb8a3f689b318740ed7cc9c6041713c1ad26ff9 100644 --- a/scipost/admin.py +++ b/scipost/admin.py @@ -28,8 +28,64 @@ admin.site.unregister(User) admin.site.register(User, UserAdmin) +class RemarkTypeListFilter(admin.SimpleListFilter): + title = 'Remark Type' + parameter_name = 'type' + + def lookups(self, request, model_admin): + """ + Returns a list of tuples to define the filter values in the Admin UI. + """ + return ( + ('feedback', 'Feedback'), + ('nomination', 'Nomination'), + ('motion', 'Motion'), + ('submission', 'Submission'), + ('recommendation', 'Recommendation'), + ) + + def queryset(self, request, queryset): + """ + Returns the filtered queryset based on the value + provided in the query string and retrievable via + `self.value()`. + """ + if self.value() == 'feedback': + return queryset.filter(feedback__isnull=False) + if self.value() == 'nomination': + return queryset.filter(nomination__isnull=False) + if self.value() == 'motion': + return queryset.filter(motion__isnull=False) + if self.value() == 'submission': + return queryset.filter(submission__isnull=False) + if self.value() == 'recommendation': + return queryset.filter(recommendation__isnull=False) + return None + + +def remark_text(obj): + return obj.remark[:30] + + +def get_remark_type(remark): + if remark.feedback: + return 'Feedback' + if remark.nomination: + return 'Nomination' + if remark.motion: + return 'Motion' + if remark.submission: + return 'Submission' + if remark.recommendation: + return 'Recommendation' + return '' + + class RemarkAdmin(admin.ModelAdmin): search_fields = ['contributor', 'remark'] + list_display = [remark_text, 'contributor', 'date', get_remark_type] + date_hierarchy = 'date' + list_filter = [RemarkTypeListFilter] admin.site.register(Remark, RemarkAdmin)