SciPost Code Repository

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
constants.py 6.48 KiB
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"

import itertools


ED_COMM_PARTIES = (
    ("E", "Editor-in-charge"),
    ("A", "Author"),
    ("R", "Referee"),
    ("S", "SciPost Editorial Administration"),
)
ED_COMM_CHOICES = tuple(
    (f"{X}to{Y}", f"{x} to {y}")
    for (X, x), (Y, y) in itertools.product(ED_COMM_PARTIES, repeat=2)
    if X != Y
)

REFEREE_QUALIFICATION = (
    (None, "-"),
    (4, "expert in this subject"),
    (3, "very knowledgeable in this subject"),
    (2, "knowledgeable in this subject"),
    (1, "generally qualified"),
    (0, "not qualified"),
)

QUALITY_SPEC = (
    (None, "-"),
    (6, "perfect"),
    (5, "excellent"),
    (4, "good"),
    (3, "reasonable"),
    (2, "acceptable"),
    (1, "below threshold"),
    (0, "mediocre"),
)

# Only values between 0 and 100 are kept, anything outside those limits is discarded.
RANKING_CHOICES = (
    (None, "-"),
    (100, "top"),
    (80, "high"),
    (60, "good"),
    (40, "ok"),
    (20, "low"),
    (0, "poor"),
)

REPORT_PUBLISH_1, REPORT_PUBLISH_2, REPORT_PUBLISH_3 = 1, 2, 3
REPORT_MINOR_REV, REPORT_MAJOR_REV = -1, -2
REPORT_REJECT = -3
REPORT_ALT_JOURNAL = -4
REPORT_REC = (
    (None, "-"),
    (
        REPORT_PUBLISH_1,
        "Publish (surpasses expectations and criteria for this Journal; among top 10%)",
    ),
    (
        REPORT_PUBLISH_2,
        "Publish (easily meets expectations and criteria for this Journal; among top 50%)",
    ),
    (REPORT_PUBLISH_3, "Publish (meets expectations and criteria for this Journal)"),
    (REPORT_MINOR_REV, "Ask for minor revision"),
    (REPORT_MAJOR_REV, "Ask for major revision"),
    (REPORT_ALT_JOURNAL, "Accept in alternative Journal (see Report)"),
    (REPORT_REJECT, "Reject"),
)

#
# Reports
#
REPORT_ACTION_ACCEPT = "accept"
REPORT_ACTION_REFUSE = "refuse"
REPORT_ACTION_CHOICES = (
    (REPORT_ACTION_ACCEPT, "accept"),
    (REPORT_ACTION_REFUSE, "refuse"),
)

STATUS_DRAFT = "draft"
STATUS_VETTED = "vetted"
STATUS_UNVETTED = "unvetted"
STATUS_UNCLEAR = "unclear"
STATUS_INCORRECT = "incorrect"
STATUS_NOT_USEFUL = "notuseful"
STATUS_NOT_ACADEMIC = "notacademic"
STATUS_DUPLICATE = "duplicate"

REPORT_REFUSAL_CHOICES = (
    (None, "-"),
    (STATUS_UNCLEAR, "insufficiently clear"),
    (STATUS_INCORRECT, "not fully factually correct"),
    (STATUS_NOT_USEFUL, "not useful for the authors"),
    (STATUS_NOT_ACADEMIC, "not sufficiently academic in style"),
    (STATUS_DUPLICATE, "duplicate"),
)

REPORT_STATUSES = (
    (STATUS_DRAFT, "Draft"),
    (STATUS_VETTED, "Vetted"),
    (STATUS_UNVETTED, "Unvetted"),
    (STATUS_INCORRECT, "Rejected (incorrect)"),
    (STATUS_UNCLEAR, "Rejected (unclear)"),
    (STATUS_NOT_USEFUL, "Rejected (not useful)"),
    (STATUS_NOT_ACADEMIC, "Rejected (not academic in style)"),
    (STATUS_DUPLICATE, "Rejected (duplicate)"),
)

REPORT_NORMAL = "report_normal"
REPORT_POST_EDREC = "report_post_edrec"
REPORT_TYPES = (
    (REPORT_NORMAL, "Normal Report"),
    (REPORT_POST_EDREC, "Post-Editorial Recommendation Report"),
)

CYCLE_UNDETERMINED = ""
CYCLE_DEFAULT, CYCLE_SHORT, CYCLE_DIRECT_REC = "default", "short", "direct_rec"
SUBMISSION_CYCLE_CHOICES = (
    (CYCLE_DEFAULT, "Default cycle"),
    (CYCLE_SHORT, "Short cycle"),
    (CYCLE_DIRECT_REC, "Direct editorial recommendation"),
)
SUBMISSION_CYCLES = (
    (CYCLE_UNDETERMINED, "Cycle undetermined"),
) + SUBMISSION_CYCLE_CHOICES

EVENT_GENERAL = "gen"
EVENT_FOR_EDADMIN = "edad"
EVENT_FOR_EIC = "eic"
EVENT_FOR_AUTHOR = "auth"
EVENT_TYPES = (
    (EVENT_GENERAL, "General comment"),
    (EVENT_FOR_EDADMIN, "Comment for EdAdmin"),
    (EVENT_FOR_EIC, "Comment for Editor-in-charge"),
    (EVENT_FOR_AUTHOR, "Comment for author"),
)


# Editorial recommendations
EIC_REC_PUBLISH = 1
EIC_REC_MINOR_REVISION = -1
EIC_REC_MAJOR_REVISION = -2
EIC_REC_REJECT = -3
EIC_REC_CHOICES = (
    (EIC_REC_PUBLISH, "Publish"),
    (EIC_REC_MINOR_REVISION, "Ask for minor revision"),
    (EIC_REC_MAJOR_REVISION, "Ask for major revision"),
    (EIC_REC_REJECT, "Reject"),
)
EIC_REC_CHOICES_SHORT = (
    (EIC_REC_PUBLISH, "Publish"),
    (EIC_REC_MINOR_REVISION, "Minor revision"),
    (EIC_REC_MAJOR_REVISION, "Major revision"),
    (EIC_REC_REJECT, "Reject"),
)


# Alternative recommendations
ALT_REC_RECONSULT_REFEREES = -4  # can be used as alternative to direct recommendation
ALT_REC_SEEK_ADDITIONAL_REFEREES = -5
ALT_REC_CHOICES = (
    (EIC_REC_PUBLISH, "Publish"),
    (ALT_REC_RECONSULT_REFEREES, "Reconsult previous referees"),
    (ALT_REC_SEEK_ADDITIONAL_REFEREES, "Seek additional referees"),
    (EIC_REC_MINOR_REVISION, "Ask for minor revision"),
    (EIC_REC_MAJOR_REVISION, "Ask for major revision"),
    (EIC_REC_REJECT, "Reject"),
)


# Tiering
TIER_I = 1
TIER_II = 2
TIER_III = 3
SUBMISSION_TIERS = (
    (
        TIER_I,
        "Tier I (surpasses expectations and criteria for this Journal; among top 10%)",
    ),
    (
        TIER_II,
        "Tier II (easily meets expectations and criteria for this Journal; among top 50%)",
    ),
    (TIER_III, "Tier III (meets expectations and criteria for this Journal)"),
)


VOTING_IN_PREP, PUT_TO_VOTING, VOTE_COMPLETED = (
    "voting_in_prep",
    "put_to_voting",
    "vote_completed",
)
DECISION_FIXED, DEPRECATED = "decision_fixed", "deprecated"
EIC_REC_STATUSES = (
    (VOTING_IN_PREP, "Voting in preparation"),
    (PUT_TO_VOTING, "Undergoing voting at the Editorial College"),
    (VOTE_COMPLETED, "Editorial College voting rounded up"),  # Seemlingly dead?
    (DECISION_FIXED, "Editorial Recommendation fixed"),
    (DEPRECATED, "Editorial Recommendation deprecated"),
)
EIC_REC_STATUSES_SHORT = (
    (VOTING_IN_PREP, "In preparation"),
    (PUT_TO_VOTING, "In voting"),
    (VOTE_COMPLETED, "Voting completed"),
    (DECISION_FIXED, "Rec. fixed"),
    (DEPRECATED, "Rec. deprecated"),
)


# Editorial decision
# (see other constants inside class; these are here because they use EIC_REC values)
EDITORIAL_DECISION_CHOICES = (
    (EIC_REC_PUBLISH, "Publish"),
    (EIC_REC_REJECT, "Reject"),
)


# Plagiarism Report statuses
STATUS_WAITING = "waiting"
STATUS_SENT, STATUS_RECEIVED = "sent", "received"
STATUS_FAILED_DOWNLOAD, STATUS_FAILED_UPLOAD = "fail_down", "fail_up"

PLAGIARISM_STATUSES = (
    (STATUS_WAITING, "Awaiting action"),
    (STATUS_SENT, "Sent succesfully, awaiting report"),
    (STATUS_RECEIVED, "Report received"),
    (STATUS_FAILED_DOWNLOAD, "Failed (downloading failed)"),
    (STATUS_FAILED_UPLOAD, "Failed (uploading failed)"),
)

# Preprint server-related constants
FIGSHARE_PREPRINT_SERVERS = ("ChemRxiv", "TechRxiv", "Advance")