from django.contrib import admin, messages from django import forms from journals.models import UnregisteredAuthor, Journal, Volume, Issue, Publication, \ Deposit, DOAJDeposit, GenericDOIDeposit from scipost.models import Contributor from submissions.models import Submission class UnregisteredAuthorAdmin(admin.ModelAdmin): search_fields = ['last_name'] ordering = ['last_name'] admin.site.register(UnregisteredAuthor, UnregisteredAuthorAdmin) class JournalAdmin(admin.ModelAdmin): search_fields = ['name'] list_display = ['__str__', 'doi_string', 'active'] admin.site.register(Journal, JournalAdmin) class VolumeAdmin(admin.ModelAdmin): list_display = ['__str__', 'doi_string'] admin.site.register(Volume, VolumeAdmin) class IssueAdmin(admin.ModelAdmin): list_display = ['__str__', 'doi_string'] admin.site.register(Issue, IssueAdmin) class PublicationAdminForm(forms.ModelForm): accepted_submission = forms.ModelChoiceField( queryset=Submission.objects.order_by('-arxiv_identifier_w_vn_nr')) authors = forms.ModelMultipleChoiceField( queryset=Contributor.objects.order_by('user__last_name')) authors_claims = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) authors_false_claims = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) class Meta: model = Publication fields = '__all__' 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'] form = PublicationAdminForm admin.site.register(Publication, PublicationAdmin) class DepositAdmin(admin.ModelAdmin): list_display = ('publication', 'timestamp', 'doi_batch_id', 'deposition_date',) readonly_fields = ('publication', 'doi_batch_id', 'metadata_xml', 'deposition_date',) actions = None def message_user(self, request, *args): return messages.warning(request, 'Sorry, Deposits are readonly.') def has_add_permission(self, *args): return False def has_delete_permission(self, *args): return False admin.site.register(Deposit, DepositAdmin) admin.site.register(DOAJDeposit) admin.site.register(GenericDOIDeposit)