Coverage for datacite/admin.py: 100%
67 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
1from django.contrib import admin
2from django.contrib.contenttypes.admin import GenericTabularInline
3from django.contrib.contenttypes.models import ContentType
5from datacite.models import (
6 Description,
7 Format,
8 Funding,
9 Geolocation,
10 Identifier,
11 IdentifierScheme,
12 Metadata,
13 Participant,
14 Publisher,
15 ResourceType,
16 Rights,
17 Title,
18)
21@admin.register(Identifier)
22class IdentifierAdmin(admin.ModelAdmin):
23 search_fields = ["identifier", "scheme__scheme"]
26@admin.register(IdentifierScheme)
27class IdentifierSchemeAdmin(admin.ModelAdmin):
28 search_fields = ["scheme", "uri"]
31class IdentifierInline(GenericTabularInline):
32 model = Identifier
33 max_num = 1
36class IdentifiersInline(GenericTabularInline):
37 model = Identifier
38 extra = 1
41@admin.register(Funding)
42class FundingAdmin(admin.ModelAdmin):
43 search_fields = [
44 "funder__name",
45 "award_title",
46 "award_number",
47 "award_uri",
48 ]
51@admin.register(Participant)
52class ParticipantAdmin(admin.ModelAdmin):
53 search_fields = ["name"]
54 autocomplete_fields = ("affiliations",)
55 inlines = (IdentifiersInline,)
56 exclude = ("identifiers",)
59@admin.register(Title)
60class TitleAdmin(admin.ModelAdmin):
61 search_fields = ["title", "title_type"]
64@admin.register(Description)
65class DescriptionAdmin(admin.ModelAdmin):
66 search_fields = ["description", "description_type"]
69@admin.register(Rights)
70class RightsAdmin(admin.ModelAdmin):
71 search_fields = ["rights", "rights_uri"]
72 inlines = (IdentifierInline,)
73 exclude = ("identifier",)
76@admin.register(Publisher)
77class PublisherAdmin(admin.ModelAdmin):
78 search_fields = ["name", "lang"]
79 inlines = (IdentifierInline,)
80 exclude = ("identifier",)
83@admin.register(Format)
84class FormatAdmin(admin.ModelAdmin):
85 search_fields = ["format"]
88@admin.register(Geolocation)
89class GeolocationAdmin(admin.ModelAdmin):
90 search_fields = ["place"]
93class CreatorInlineAdmin(admin.TabularInline):
94 model = Metadata.creators.through
95 extra = 1
98class ContributorInlineAdmin(admin.TabularInline):
99 model = Metadata.contributors.through
100 extra = 1
103class DescriptionInlineAdmin(admin.TabularInline):
104 model = Description
105 extra = 1
108class GeolocationInlineAdmin(admin.TabularInline):
109 model = Geolocation
110 extra = 1
113@admin.register(Metadata)
114class MetadataAdmin(admin.ModelAdmin):
115 search_fields = [
116 "network__doi",
117 "network__name",
118 "network__fdsn_code",
119 "network__start_year",
120 "title__title",
121 ]
122 autocomplete_fields = ("rights", "formats", "fundings")
123 inlines = (
124 CreatorInlineAdmin,
125 ContributorInlineAdmin,
126 DescriptionInlineAdmin,
127 GeolocationInlineAdmin,
128 )
129 exclude = ("contributors", "creators")
132admin.site.register(ResourceType)
133admin.site.register(ContentType)