Coverage for datacite/admin.py: 100%

67 statements  

« 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 

4 

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) 

19 

20 

21@admin.register(Identifier) 

22class IdentifierAdmin(admin.ModelAdmin): 

23 search_fields = ["identifier", "scheme__scheme"] 

24 

25 

26@admin.register(IdentifierScheme) 

27class IdentifierSchemeAdmin(admin.ModelAdmin): 

28 search_fields = ["scheme", "uri"] 

29 

30 

31class IdentifierInline(GenericTabularInline): 

32 model = Identifier 

33 max_num = 1 

34 

35 

36class IdentifiersInline(GenericTabularInline): 

37 model = Identifier 

38 extra = 1 

39 

40 

41@admin.register(Funding) 

42class FundingAdmin(admin.ModelAdmin): 

43 search_fields = [ 

44 "funder__name", 

45 "award_title", 

46 "award_number", 

47 "award_uri", 

48 ] 

49 

50 

51@admin.register(Participant) 

52class ParticipantAdmin(admin.ModelAdmin): 

53 search_fields = ["name"] 

54 autocomplete_fields = ("affiliations",) 

55 inlines = (IdentifiersInline,) 

56 exclude = ("identifiers",) 

57 

58 

59@admin.register(Title) 

60class TitleAdmin(admin.ModelAdmin): 

61 search_fields = ["title", "title_type"] 

62 

63 

64@admin.register(Description) 

65class DescriptionAdmin(admin.ModelAdmin): 

66 search_fields = ["description", "description_type"] 

67 

68 

69@admin.register(Rights) 

70class RightsAdmin(admin.ModelAdmin): 

71 search_fields = ["rights", "rights_uri"] 

72 inlines = (IdentifierInline,) 

73 exclude = ("identifier",) 

74 

75 

76@admin.register(Publisher) 

77class PublisherAdmin(admin.ModelAdmin): 

78 search_fields = ["name", "lang"] 

79 inlines = (IdentifierInline,) 

80 exclude = ("identifier",) 

81 

82 

83@admin.register(Format) 

84class FormatAdmin(admin.ModelAdmin): 

85 search_fields = ["format"] 

86 

87 

88@admin.register(Geolocation) 

89class GeolocationAdmin(admin.ModelAdmin): 

90 search_fields = ["place"] 

91 

92 

93class CreatorInlineAdmin(admin.TabularInline): 

94 model = Metadata.creators.through 

95 extra = 1 

96 

97 

98class ContributorInlineAdmin(admin.TabularInline): 

99 model = Metadata.contributors.through 

100 extra = 1 

101 

102 

103class DescriptionInlineAdmin(admin.TabularInline): 

104 model = Description 

105 extra = 1 

106 

107 

108class GeolocationInlineAdmin(admin.TabularInline): 

109 model = Geolocation 

110 extra = 1 

111 

112 

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") 

130 

131 

132admin.site.register(ResourceType) 

133admin.site.register(ContentType)