SciPost Code Repository

Skip to content
Snippets Groups Projects
admin.py 3.98 KiB
Newer Older
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
from django.contrib import admin, messages
from django import forms
from journals.models import (
    Journal,
    Volume,
    Issue,
    Publication,
    Deposit,
    DOAJDeposit,
    GenericDOIDeposit,
    Reference,
    PublicationAuthorsTable,
    OrgPubFraction,
    PublicationUpdate,
    SubmissionTemplate,
)
from scipost.models import Contributor
from submissions.models import Submission
class SubmissionTemplateInline(admin.TabularInline):
    model = SubmissionTemplate
    extra = 0


class JournalAdmin(admin.ModelAdmin):
    search_fields = ["name"]
    list_display = ["__str__", "doi_string", "active"]
    inlines = [
        SubmissionTemplateInline,
    ]
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"]
    search_fields = [
        "in_journal__name",
        "in_volume__in_journal__name",
        "doi_label",
admin.site.register(Issue, IssueAdmin)


class ReferenceInline(admin.TabularInline):
    model = Reference
    extra = 0
class AuthorsInline(admin.TabularInline):
    model = PublicationAuthorsTable
    extra = 0
        "profile",
        "affiliations",
class OrgPubFractionInline(admin.TabularInline):
    model = OrgPubFraction
    list_display = ("organization", "publication", "fraction")
class PublicationAdmin(admin.ModelAdmin):
    exclude = ["cf_citation", "cf_author_affiliation_indices_list"]
    search_fields = ["title", "author_list", "doi_label"]
        "title",
        "author_list",
        "in_issue",
        "doi_string",
        "publication_date",
        "status",
    ]
    date_hierarchy = "publication_date"
    list_filter = ["in_issue"]
    inlines = [AuthorsInline, ReferenceInline, OrgPubFractionInline]
        "accepted_submission",
        "grants",
        "funders_generic",
        "topics",
admin.site.register(Publication, PublicationAdmin)
class PublicationProxyMetadata(Publication):
    search_fields = ["title", "author_list", "doi_label"]
        "title",
        "author_list",
        "in_issue",
        "doi_string",
        "publication_date",
        "status",
    ]
        verbose_name = "Publication metadata"
        verbose_name_plural = "Publication metadata"
class PublicationProxyMetadataAdmin(admin.ModelAdmin):
    fields = ["metadata", "metadata_xml", "metadata_DOAJ", "BiBTeX_entry"]
    search_fields = ["title", "author_list", "doi_label"]
        "title",
        "author_list",
        "in_issue",
        "doi_string",
        "publication_date",
        "status",
    ]


admin.site.register(PublicationProxyMetadata, PublicationProxyMetadataAdmin)


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)
class DOAJDepositAdmin(admin.ModelAdmin):
    autocomplete_fields = [
admin.site.register(DOAJDeposit, DOAJDepositAdmin)
class PublicationUpdateAdmin(admin.ModelAdmin):
    autocomplete_fields = [
admin.site.register(PublicationUpdate, PublicationUpdateAdmin)