SciPost Code Repository

Skip to content
Snippets Groups Projects
admin.py 2.3 KiB
Newer Older
from django.contrib import admin, messages
from django import forms
from journals.models import UnregisteredAuthor, Journal, Volume, Issue, Publication, Deposit
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(
        queryset=Contributor.objects.order_by('user__last_name'))
    authors_false_claims = forms.ModelMultipleChoiceField(
        queryset=Contributor.objects.order_by('user__last_name'))

    class Meta:
        model = Publication
        fields = '__all__'


class PublicationAdmin(admin.ModelAdmin):
    search_fields = ['title', 'author_list']
Jorran de Wit's avatar
Jorran de Wit committed
    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)