SciPost Code Repository

Skip to content
Snippets Groups Projects
admin.py 2.52 KiB
Newer Older
from django.contrib import admin, messages
from django import forms
from journals.models import UnregisteredAuthor, Journal, Volume, Issue, Publication, \
Jorran de Wit's avatar
Jorran de Wit committed
    Deposit, DOAJDeposit, GenericDOIDeposit, Reference
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 ReferenceInline(admin.TabularInline):
    model = Reference


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']
    inlines = [ReferenceInline]
    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)