Esempio n. 1
0
class JournalInfoOptionalPaymentURLs(JournalInformation):
    """Overrides fields in the JournalInfo form that are not required for ManEds """

    processing_charges_url = URLField('Enter the URL where this information can be found',
        [validators.Optional()],
    )

    submission_charges_url = URLField('Enter the URL where this information can be found',
        [validators.Optional()],
    )
Esempio n. 2
0
class Suggestion(Form):
    """ Additional bibliographic metadata required when suggesting a journal to the DOAJ """

    articles_last_year = IntegerField('How many research and review articles did the journal publish in the last calendar year?',
        [validators.DataRequired(), validators.NumberRange(min=0)],
        description='A journal must publish at least 5 articles per year to stay in the DOAJ.',
    )
    articles_last_year_url = URLField('Enter the URL where this information can be found',
        [validators.DataRequired(), URLOptionalScheme()]
    )
    metadata_provision = RadioField('Does the journal provide, or intend to provide, article level metadata to DOAJ?',
        [validators.DataRequired()],
        description='If yes, metadata must be provided within 3 months of acceptance into DOAJ.',
        choices=Choices.metadata_provision()
    )
Esempio n. 3
0
class JournalInformation(Form):
    """All the bibliographic metadata associated with a journal in the DOAJ"""

    title = StringField('Journal Title', [validators.DataRequired()])
    url = URLField('URL', [validators.DataRequired(), URLOptionalScheme()])
    alternative_title = StringField('Alternative Title',
                                    [validators.Optional()])
    pissn = StringField(
        'Journal ISSN (print version)',
        [
            OptionalIf('eissn'),
            validators.Regexp(regex=ISSN_REGEX, message=ISSN_ERROR)
        ],
        description=
        'Only provide the print ISSN if your journal has one, otherwise leave this field blank. Write the ISSN with the hyphen "-" e.g. 1234-4321.',
    )
    eissn = StringField(
        'Journal ISSN (online version)',
        [
            OptionalIf('pissn'),
            validators.Regexp(regex=ISSN_REGEX, message=ISSN_ERROR)
        ],
        description=
        'Cannot be the same as the P-ISSN. Write the EISSN with the hyphen "-" e.g. 1234-4321.',
    )
    publisher = StringField('Publisher', [validators.DataRequired()])
    society_institution = StringField(
        'Society or Institution',
        [validators.Optional()],
        description=
        'The name of the Society or Institution that the journal belongs to',
    )
    platform = StringField(
        'Platform, Host or Aggregator', [validators.Optional()],
        description=
        'The name of the platform, host or aggregator of the journal content, e.g. OJS, HighWire Press, EBSCO etc.'
    )
    contact_name = StringField(
        'Name of contact for this journal',
        [validators.DataRequired()],
        description='Somebody who DOAJ can contact about this journal',
    )
    contact_email = StringField('Contact\'s email address', [
        validators.DataRequired(),
        validators.Email(message='Invalid email address.')
    ])
    confirm_contact_email = StringField('Confirm contact\'s email address', [
        validators.DataRequired(),
        validators.Email(message='Invalid email address.'),
        validators.EqualTo('contact_email', EMAIL_CONFIRM_ERROR)
    ])
    country = SelectField(
        'In which country is the publisher of the journal based?',
        [validators.DataRequired()],
        description=
        'Select the country where the publishing company is legally registered',
        choices=Choices.country(),
    )
    processing_charges = RadioField(
        'Does the journal have article processing charges (APCs)?',
        [validators.DataRequired()],
        # description = 'If "No" proceed to question below',
        choices=Choices.processing_charges())
    processing_charges_url = URLField(
        'Enter the URL where this information can be found',
        [validators.DataRequired(),
         URLOptionalScheme()],
        # description='This field is optional if you have selected "No" above'
    )
    processing_charges_amount = IntegerField(
        'Amount',
        [
            OptionalIf('processing_charges',
                       optvals=Choices.processing_charges_amount_optional())
        ],
    )
    processing_charges_currency = SelectField(
        'Currency',
        [
            OptionalIf('processing_charges',
                       optvals=Choices.processing_charges_currency_optional())
        ],
        choices=Choices.currency(),
    )

    submission_charges = RadioField(
        'Does the journal have article submission charges?',
        [validators.DataRequired()],
        # description = 'If "No" proceed to question below',
        choices=Choices.submission_charges())
    submission_charges_url = URLField(
        'Enter the URL where this information can be found',
        [validators.DataRequired(),
         URLOptionalScheme()],
        # description='This field is optional if you have selected "No" above'
    )
    submission_charges_amount = IntegerField(
        'Amount',
        [
            OptionalIf('submission_charges',
                       optvals=Choices.submission_charges_amount_optional())
        ],
    )
    submission_charges_currency = SelectField(
        'Currency',
        [
            OptionalIf('submission_charges',
                       optvals=Choices.submission_charges_amount_optional())
        ],
        choices=Choices.currency(),
    )
    waiver_policy = RadioField(
        'Does the journal have a waiver policy (for developing country authors etc)?',
        [validators.DataRequired()],
        choices=Choices.waiver_policy())
    waiver_policy_url = URLField(
        'Enter the URL where this information can be found', [
            OptionalIf('waiver_policy',
                       optvals=Choices.waiver_policy_url_optional()),
            URLOptionalScheme()
        ])
    digital_archiving_policy = SelectMultipleField(
        'What digital archiving policy does the journal use?', [
            validators.DataRequired(),
            ExclusiveCheckbox(Choices.digital_archiving_policy_val("none")),
            ExtraFieldRequiredIf(
                'digital_archiving_policy_library',
                reqval=Choices.digital_archiving_policy_val("library")),
            ExtraFieldRequiredIf(
                'digital_archiving_policy_other',
                reqval=Choices.digital_archiving_policy_val("other")),
        ],
        description=
        "Select all that apply. Institutional archives and publishers' own online archives are not valid",
        choices=Choices.digital_archiving_policy(),
        option_widget=widgets.CheckboxInput(),
        widget=widgets.ListWidget(prefix_label=False))
    digital_archiving_policy_other = StringField('', )
    digital_archiving_policy_library = StringField('', )
    digital_archiving_policy_url = URLField(
        'Enter the URL where this information can be found',
        [
            OptionalIf(
                'digital_archiving_policy',
                optvals=Choices.digital_archiving_policy_url_optional()),
            URLOptionalScheme()
        ],
        description=
        'This field is optional if you have only selected "No policy in place" above',
    )
    crawl_permission = RadioField(
        'Does the journal allow anyone to crawl the full-text of the journal?',
        [validators.DataRequired()],
        choices=Choices.crawl_permission())
    article_identifiers = SelectMultipleField(
        'Which article identifiers does the journal use?',
        [
            validators.DataRequired(),
            ExtraFieldRequiredIf(
                'article_identifiers_other',
                reqval=Choices.article_identifiers_val("other")),
            ExclusiveCheckbox()
        ],
        choices=Choices.article_identifiers(),
        option_widget=widgets.CheckboxInput(),
        widget=widgets.ListWidget(prefix_label=False),
    )
    article_identifiers_other = StringField('', )
    download_statistics = RadioField(
        'Does the journal provide article download statistics?',
        [validators.DataRequired()],
        description='If "No" proceed to question 32',
        choices=Choices.download_statistics())
    download_statistics_url = StringField(
        'Enter the URL where this information can be found',
        [validators.Optional()],
    )
    first_fulltext_oa_year = IntegerField(
        'What was the first calendar year in which a complete volume of the journal provided online Open Access content to the Full Text of all articles? (Full Text may be provided as PDFs. Does not apply for new journals.)',
        [
            validators.DataRequired(),
            validators.NumberRange(min=1600, max=(datetime.now().year))
        ],
        description='Use 4 digits for the year, i.e. YYYY format')
    fulltext_format = SelectMultipleField(
        'Please indicate which formats of full text are available', [
            validators.DataRequired(),
            ExtraFieldRequiredIf('fulltext_format_other',
                                 reqval=Choices.fulltext_format_val("other"))
        ],
        description='Tick all that apply',
        choices=Choices.fulltext_format(),
        option_widget=widgets.CheckboxInput(),
        widget=widgets.ListWidget(prefix_label=False))
    fulltext_format_other = StringField('', )
    keywords = TagListField(
        'Add keyword(s) that best describe the journal (comma delimited)', [
            validators.DataRequired(),
            MaxLen(6, message='You can only enter up to {max_len} keywords.')
        ],
        description='Maximum 6. Keywords must be in English.')
    languages = SelectMultipleField(
        'Select the language(s) that the Full Text of the articles is published in',
        [validators.DataRequired()],
        choices=Choices.language(),
        description="You can select multiple languages")
    editorial_board_url = URLField(
        'What is the URL for the Editorial Board page?',
        [validators.DataRequired(),
         URLOptionalScheme()],
        description=
        'The journal must have either an editor or an editorial board with at least 5 clearly identifiable members and affiliation information. We may ask for affiliation information and email addresses as part of our checks.'
    )
    review_process = SelectField(
        'Please select the review process for papers',
        [validators.DataRequired()],
        choices=Choices.review_process(),
        default=Choices.review_process_default(),
    )
    review_process_url = URLField(
        'Enter the URL where this information can be found', [
            OptionalIf('review_process',
                       optvals=Choices.review_process_url_optional()),
            URLOptionalScheme()
        ],
        description='This field is optional if you have selected "None" above.'
    )
    aims_scope_url = URLField("What is the URL for the journal's Aims & Scope",
                              [validators.DataRequired(),
                               URLOptionalScheme()])
    instructions_authors_url = URLField(
        "What is the URL for the journal's instructions for authors?",
        [validators.DataRequired(),
         URLOptionalScheme()])
    plagiarism_screening = RadioField(
        'Does the journal have a policy of screening for plagiarism?',
        [validators.DataRequired()],
        description='If "No" proceed to question 43',
        choices=Choices.plagiarism_screening())
    plagiarism_screening_url = URLField(
        "Enter the URL where this information can be found", [
            OptionalIf('plagiarism_screening',
                       optvals=Choices.plagiarism_screening_url_optional()),
            URLOptionalScheme()
        ])
    publication_time = IntegerField(
        'What is the average number of weeks between submission and publication?',
        [validators.DataRequired(),
         validators.NumberRange(min=0, max=53)])
    oa_statement_url = URLField(
        "What is the URL for the journal's Open Access statement?",
        [validators.DataRequired(),
         URLOptionalScheme()])
    license_embedded = RadioField(
        'Does the journal embed or display simple machine-readable CC licensing information in its articles?',
        [validators.DataRequired()],
        choices=Choices.licence_embedded(),
        description=
        'For more information go to <a target="_blank" href="http://wiki.creativecommons.org/CC_REL">http://wiki.creativecommons.org/CC_REL</a><br><br>If "No" proceed to question 47.',
    )
    license_embedded_url = URLField(
        "Please provide a URL to an example page with embedded licensing information",
        [
            OptionalIf('license_embedded',
                       optvals=Choices.licence_embedded_url_optional()),
            URLOptionalScheme()
        ])
    license = RadioField(
        'Does the journal allow reuse and remixing of its content, in accordance with a CC license?',
        [
            validators.DataRequired(),
            ExtraFieldRequiredIf('license_other',
                                 reqval=Choices.licence_val("other"))
        ],
        choices=Choices._licence,
        description=
        'For more information go to <a href="http://creativecommons.org/licenses/" target="_blank">http://creativecommons.org/licenses/</a>'
    )
    license_other = StringField('', )
    license_checkbox = SelectMultipleField(
        'Which of the following does the content require? (Tick all that apply.)',
        choices=Choices.licence_checkbox(),
        option_widget=widgets.CheckboxInput(),
        widget=widgets.ListWidget(prefix_label=False),
    )
    license_url = URLField(
        "Enter the URL on your site where your license terms are stated",
        [validators.Optional(), URLOptionalScheme()])
    open_access = RadioField(
        "Does the journal allow readers to 'read, download, copy, distribute, print, search, or link to the full texts' of its articles?",
        [validators.DataRequired()],
        choices=Choices.open_access(),
        description=
        'From the <a href="http://www.budapestopenaccessinitiative.org/read" target="_blank">Budapest Open Access Initiative\'s definition of Open Access</a>',
    )
    deposit_policy = SelectMultipleField(
        'With which deposit policy directory does the journal have a registered deposit policy?',
        [
            validators.DataRequired(),
            ExtraFieldRequiredIf(
                'deposit_policy_other',
                reqval=Choices.deposit_policy_other_val("other")),
            ExclusiveCheckbox()
        ],
        description='Select all that apply.',
        choices=Choices.deposit_policy(),
        option_widget=widgets.CheckboxInput(),
        widget=widgets.ListWidget(prefix_label=False))
    deposit_policy_other = StringField('', )
    copyright = RadioField(
        'Does the journal allow the author(s) to hold the copyright without restrictions?',
        [
            validators.DataRequired(),
            ExtraFieldRequiredIf('copyright_other',
                                 reqval=Choices.copyright_other_val("other"))
        ],
        choices=Choices.copyright())
    copyright_other = StringField('', )
    copyright_url = URLField(
        'Enter the URL where this information can be found', [
            OptionalIf('copyright', optvals=Choices.copyright_url_optional()),
            URLOptionalScheme()
        ])
    publishing_rights = RadioField(
        'Will the journal allow the author(s) to retain publishing rights without restrictions?',
        [
            validators.Required(),
            ExtraFieldRequiredIf(
                'publishing_rights_other',
                reqval=Choices.publishing_rights_other_val("other"))
        ],
        choices=Choices.publishing_rights())
    publishing_rights_other = StringField('', )
    publishing_rights_url = URLField(
        'Enter the URL where this information can be found', [
            OptionalIf('publishing_rights',
                       optvals=Choices.publishing_rights_url_optional()),
            URLOptionalScheme()
        ])