__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" from django.contrib import admin from django import forms from guardian.admin import GuardedModelAdmin from preprints.models import Preprint from submissions.models import ( Submission, EditorialAssignment, RefereeInvitation, Report, EditorialCommunication, EICRecommendation, SubmissionEvent, iThenticateReport) from scipost.models import Contributor def submission_short_title(obj): return obj.submission.title[:30] admin.site.register(iThenticateReport) class SubmissionAdminForm(forms.ModelForm): authors = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) authors_claims = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) authors_false_claims = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) class Meta: model = Submission fields = '__all__' class SubmissionAdmin(GuardedModelAdmin): date_hierarchy = 'submission_date' form = SubmissionAdminForm list_display = ('title', 'author_list', 'submitted_to', 'status', 'submission_date', 'publication') list_filter = ('status', 'discipline', 'submission_type', 'submitted_to') search_fields = ['submitted_by__user__last_name', 'title', 'author_list', 'abstract'] raw_id_fields = ('editor_in_charge', 'submitted_by') readonly_fields = ('publication',) # Admin fields should be added in the fieldsets radio_fields = { "discipline": admin.VERTICAL, "submitted_to_journal": admin.VERTICAL, "refereeing_cycle": admin.HORIZONTAL, "submission_type": admin.VERTICAL } fieldsets = ( (None, { 'fields': ( 'preprint', 'publication', 'title', 'abstract', 'submission_type'), }), ('Versioning', { 'fields': ( 'is_current', 'is_resubmission', 'list_of_changes'), }), ('Submission details', { 'classes': ('collapse',), 'fields': ( 'author_comments', 'discipline', 'domain', 'subject_area', 'secondary_areas', 'proceedings'), }), ('Authors', { 'classes': ('collapse',), 'fields': ( 'submitted_by', 'author_list', 'authors', 'authors_claims', 'authors_false_claims'), }), ('Refereeing', { 'classes': ('collapse',), 'fields': ( 'editor_in_charge', 'status', ('visible_public', 'visible_pool'), 'refereeing_cycle', ('open_for_commenting', 'open_for_reporting'), 'reporting_deadline', 'acceptance_date', 'referees_flagged', 'referees_suggested', 'remarks_for_editors', 'submitted_to_journal', 'proceedings', 'pdf_refereeing_pack', 'plagiarism_report', 'fellows', 'voting_fellows'), }), ('Meta', { 'classes': ('collapse',), 'fields': ('metadata', 'submission_date'), }), ) admin.site.register(Submission, SubmissionAdmin) class EditorialAssignmentAdminForm(forms.ModelForm): submission = forms.ModelChoiceField( queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr')) class Meta: model = EditorialAssignment fields = '__all__' class EditorialAssignmentAdmin(admin.ModelAdmin): search_fields = ['submission__title', 'submission__author_list', 'to__user__last_name'] list_display = ( 'to', submission_short_title, 'status', 'date_created', 'date_invited', 'invitation_order') date_hierarchy = 'date_created' # list_filter = ('accepted', 'deprecated', 'completed', ) list_filter = ('status',) form = EditorialAssignmentAdminForm admin.site.register(EditorialAssignment, EditorialAssignmentAdmin) class RefereeInvitationAdminForm(forms.ModelForm): submission = forms.ModelChoiceField( queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr')) referee = forms.ModelChoiceField( required=False, queryset=Contributor.objects.order_by('user__last_name')) class Meta: model = RefereeInvitation fields = '__all__' class RefereeInvitationAdmin(admin.ModelAdmin): search_fields = ['submission__title', 'submission__author_list', 'referee__user__last_name', 'first_name', 'last_name', 'email_address'] list_display = ('__str__', 'accepted', ) list_filter = ('accepted', 'fulfilled', 'cancelled',) date_hierarchy = 'date_invited' form = RefereeInvitationAdminForm admin.site.register(RefereeInvitation, RefereeInvitationAdmin) class ReportAdminForm(forms.ModelForm): submission = forms.ModelChoiceField( queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr')) class Meta: model = Report fields = '__all__' class ReportAdmin(admin.ModelAdmin): search_fields = ['author__user__last_name', 'submission__title'] list_display = ('author', 'status', 'doi_label', submission_short_title, 'date_submitted', ) list_display_links = ('author',) date_hierarchy = 'date_submitted' list_filter = ('status',) readonly_fields = ('report_nr',) form = ReportAdminForm admin.site.register(Report, ReportAdmin) class EditorialCommunicationAdmin(admin.ModelAdmin): search_fields = ['submission__title', 'referee__user__last_name', 'text'] admin.site.register(EditorialCommunication, EditorialCommunicationAdmin) class EICRecommendationAdminForm(forms.ModelForm): submission = forms.ModelChoiceField( queryset=Submission.objects.order_by('-preprint__identifier_w_vn_nr')) eligible_to_vote = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.filter( user__groups__name__in=['Editorial College'], ).order_by('user__last_name')) voted_for = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.filter( user__groups__name__in=['Editorial College'], ).order_by('user__last_name')) voted_against = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.filter( user__groups__name__in=['Editorial College'], ).order_by('user__last_name')) voted_abstain = forms.ModelMultipleChoiceField( required=False, queryset=Contributor.objects.filter( user__groups__name__in=['Editorial College'], ).order_by('user__last_name')) class Meta: model = EICRecommendation fields = '__all__' class EICRecommendationAdmin(admin.ModelAdmin): search_fields = ['submission__title'] list_filter = ('status',) list_display = (submission_short_title, 'recommendation', 'status', 'active', 'version') form = EICRecommendationAdminForm admin.site.register(EICRecommendation, EICRecommendationAdmin) admin.site.register(SubmissionEvent)