Skip to content

Commit

Permalink
Merge branch 'feature/3136_different_publisher_and_society' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
Steven-Eardley committed Nov 21, 2023
2 parents 058d174 + c388be7 commit 95bdccb
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 38 deletions.
7 changes: 7 additions & 0 deletions doajtest/testbook/new_application_form/publishers_form.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@ tests:
- step: Click the X next to it
results:
- It disappears
- step: Enter the same value in Publisher's Name and Publisher's Country
- step: Click Next
results:
- "You see the error message: The value of this field and the Publisher's Country field must be different."
- step: Repeat previous step checking if the validator is case insensitive (e.g. "Publisher's name" and "publisher's Name")
results:
- The error message is still displayed
- step: Repeat steps X to X for the Publisher's Name, Country, Society name, Country
- step: Delete the values from Society name and country, click Next
results:
Expand Down
79 changes: 43 additions & 36 deletions portality/forms/application_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,8 +417,8 @@ class FieldDefinitions:
"input": "taglist",
"help": {
"long_help": ["Choose upto 6 keywords that describe the subject matter of the journal. "
"Keywords must be in English.", "Use single words or short phrases (2 to 3 words) "
"that describe the journal's main topic.", "Do not add acronyms, abbreviations or descriptive sentences.",
"Keywords must be in English.", "Use single words or short phrases (2 to 3 words) "
"that describe the journal's main topic.", "Do not add acronyms, abbreviations or descriptive sentences.",
"Note that the keywords may be edited by DOAJ editorial staff." ],
},
"validate": [
Expand Down Expand Up @@ -476,7 +476,8 @@ class FieldDefinitions:
"label": "Publisher’s name",
"input": "text",
"validate": [
{"required": {"message": "Enter the name of the journal’s publisher"}}
{"required": {"message": "Enter the name of the journal’s publisher"}},
{"different_to": {"field": "institution_name", "message": "Publisher and Society/Institution names cannot be the same."}} # ~~^-> DifferetTo:FormValidator~~
],
"widgets": [
"trim_whitespace", # ~~^-> TrimWhitespace:FormWidget~~
Expand Down Expand Up @@ -563,6 +564,11 @@ class FieldDefinitions:
{"autocomplete": {"type" : "journal", "field": "bibjson.institution.name.exact"}}, # ~~^-> Autocomplete:FormWidget~~
"full_contents" # ~~^->FullContents:FormWidget~~
],
"validate": [
{"different_to": {"field": "publisher_name",
"message": "Publisher and Society/Institution names cannot be the same."}}
# ~~^-> DifferetTo:FormValidator~~
],
"contexts": {
"admin": {
"widgets": [
Expand Down Expand Up @@ -737,7 +743,7 @@ class FieldDefinitions:
"field": "license_display",
"value": "y",
"message": "Enter the URL for any recent article that displays or embeds a license"
}
}
},
"is_url" # ~~^->IsURL:FormValidator~~
],
Expand Down Expand Up @@ -845,7 +851,7 @@ class FieldDefinitions:
"field": "review_process",
"value": "other",
"message": "Enter the name of another type of peer review"
}
}
}
],
"widgets" : [
Expand Down Expand Up @@ -884,8 +890,8 @@ class FieldDefinitions:
"datatype": "integer",
"help": {
"long_help": ["Please enter the year that the journal started to publish all content as true open access, according to DOAJ's <a href='https://blog.doaj.org/2020/11/17/what-does-doaj-define-as-open-access/' target='_blank' rel='nofollow'>definition</a>.",
"For journals that have flipped to open access, enter the year that the journal flipped, not the original launch date of the journal.",
"For journals that have made digitised backfiles freely available, enter the year that the journal started publishing as a fully open access title, not the date of the earliest free content."]
"For journals that have flipped to open access, enter the year that the journal flipped, not the original launch date of the journal.",
"For journals that have made digitised backfiles freely available, enter the year that the journal started publishing as a fully open access title, not the date of the earliest free content."]
},
"validate": [
{"required": {"message": "Enter the Year (YYYY)."}},
Expand Down Expand Up @@ -937,7 +943,7 @@ class FieldDefinitions:
"field": "plagiarism_detection",
"value": "y",
"message": "Enter the URL for the journal’s <strong>plagiarism policy</strong> page"
}
}
},
"is_url" # ~~^->IsURL:FormValidator~~
],
Expand Down Expand Up @@ -1184,14 +1190,14 @@ class FieldDefinitions:
"help": {
"short_help": "Link to the journal’s waiver information.",
"doaj_criteria": "You must provide a URL",
"placeholder": "https://www.my-journal.com/about#waiver"
"placeholder": "https://www.my-journal.com/about#waiver"
},
"validate": [
{"required_if": {
"field": "has_waiver",
"value": "y",
"message": "Enter the URL for the journal’s <strong>waiver information</strong> page"
}
}
},
"is_url" # ~~^->IsURL:FormValidator~~
],
Expand Down Expand Up @@ -1239,7 +1245,7 @@ class FieldDefinitions:
"field": "has_other_charges",
"value": "y",
"message": "Enter the URL for the journal’s <strong>fees<strong> information page"
}
}
},
"is_url" # ~~^->IsURL:FormValidator~~
],
Expand Down Expand Up @@ -1298,7 +1304,7 @@ class FieldDefinitions:
"field": "preservation_service",
"value": "national_library",
"message": "Enter the name(s) of the national library or libraries where the journal is archived"
}
}
}
],
"asynchronous_warning": [
Expand All @@ -1324,7 +1330,7 @@ class FieldDefinitions:
"field": "preservation_service",
"value": "other",
"message": "Enter the name of another archiving policy"
}
}
}
],
"asynchronous_warning": [
Expand Down Expand Up @@ -1423,7 +1429,7 @@ class FieldDefinitions:
"field": "deposit_policy",
"value": "other",
"message": "Enter the name of another repository policy"
}
}
}
],
"asynchronous_warning": [
Expand Down Expand Up @@ -1510,8 +1516,8 @@ class FieldDefinitions:
],
"help": {
"long_help": ["A persistent article identifier (PID) is used to find the article no matter where it is "
"located. The most common type of PID is the digital object identifier (DOI). ",
"<a href='https://en.wikipedia.org/wiki/Persistent_identifier' target='_blank' rel='noopener'>Read more about PIDs.</a>"],
"located. The most common type of PID is the digital object identifier (DOI). ",
"<a href='https://en.wikipedia.org/wiki/Persistent_identifier' target='_blank' rel='noopener'>Read more about PIDs.</a>"],
},
"validate": [
{"required": {"message": "Select <strong>at least one</strong> option"}}
Expand All @@ -1529,7 +1535,7 @@ class FieldDefinitions:
"field": "persistent_identifiers",
"value": "other",
"message": "Enter the name of another type of identifier"
}
}
}
],
"asynchronous_warning": [
Expand All @@ -1552,7 +1558,7 @@ class FieldDefinitions:
"default" : "",
"help": {
"long_help": ["An <a href='https://orcid.org/' target='_blank' rel='noopener'>ORCID</a> (Open Researcher and Contributor) iD is an alphanumeric code to uniquely identify "
"authors."],
"authors."],
},
"contexts" : {
"public" : {
Expand Down Expand Up @@ -1643,7 +1649,7 @@ class FieldDefinitions:
"input": "textarea",
"help": {
"long_help": ["The selected reason for rejection, and any additional information you include, "
"are sent to the journal contact with the rejection email."]
"are sent to the journal contact with the rejection email."]
},
"validate": [
{"required_if": {"field": "quick_reject", "value": "other"}}
Expand Down Expand Up @@ -1693,15 +1699,15 @@ class FieldDefinitions:
"help" : {
"render_error_box": False,
"short_help" : "Set the status to 'In Progress' to signal to the applicant that you have started your review."
"Set the status to 'Completed' to alert the Editor that you have completed your review.",
"Set the status to 'Completed' to alert the Editor that you have completed your review.",
"update_requests_diff": False
}
},
"editor" : {
"help" : {
"render_error_box" : False,
"short_help" : "Revert the status to 'In Progress' to signal to the Associate Editor that further work is needed."
"Set the status to 'Ready' to alert the Managing Editor that you have completed your review.",
"Set the status to 'Ready' to alert the Managing Editor that you have completed your review.",
"update_requests_diff": False
}
}
Expand Down Expand Up @@ -1779,7 +1785,7 @@ class FieldDefinitions:
"input": "taglist",
"validate": [
{"is_issn_list": {"message": "This is not a valid ISSN"}}, # ~~^-> IsISSN:FormValidator~~
{"different_to": {"field": "continued_by"}}, # ~~^-> DifferetTo:FormValidator~~
{"different_to": {"field": "continued_by", "message": "The ISSN provided in both fields must be different. Please make sure to enter the ISSN of an older journal for the first field and the ISSN of a newer journal for the second field. They cannot be the same."}}, # ~~^-> DifferetTo:FormValidator~~
{
"not_if" : {
"fields" : [{"field" : "discontinued_date"}],
Expand All @@ -1802,7 +1808,7 @@ class FieldDefinitions:
"input": "taglist",
"validate": [
{"is_issn_list": {"message": "This is not a valid ISSN"}}, # ~~^-> IsISSN:FormValidator~~
{"different_to": {"field": "continues"}}, # ~~^-> DifferetTo:FormValidator~~
{"different_to": {"field": "continues", "message": "The ISSN provided in both fields must be different. Please make sure to enter the ISSN of an older journal for the first field and the ISSN of a newer journal for the second field. They cannot be the same."}}, # ~~^-> DifferetTo:FormValidator~~
{
"not_if": {
"fields": [{"field": "discontinued_date"}],
Expand Down Expand Up @@ -1830,18 +1836,18 @@ class FieldDefinitions:
"validate": [
{"required_if" : {
"field" : "application_status",
"value" : [
constants.APPLICATION_STATUS_READY,
constants.APPLICATION_STATUS_COMPLETED,
constants.APPLICATION_STATUS_ACCEPTED
],
"message" : "This field is required when setting the Application Status to {y}, {z} or {a}".format(
y=constants.APPLICATION_STATUS_READY,
z=constants.APPLICATION_STATUS_COMPLETED,
a=constants.APPLICATION_STATUS_ACCEPTED
)
}
}
"value" : [
constants.APPLICATION_STATUS_READY,
constants.APPLICATION_STATUS_COMPLETED,
constants.APPLICATION_STATUS_ACCEPTED
],
"message" : "This field is required when setting the Application Status to {y}, {z} or {a}".format(
y=constants.APPLICATION_STATUS_READY,
z=constants.APPLICATION_STATUS_COMPLETED,
a=constants.APPLICATION_STATUS_ACCEPTED
)
}
}
],
"widgets": [
"subject_tree"
Expand Down Expand Up @@ -2822,6 +2828,7 @@ class DifferentToBuilder:
@staticmethod
def render(settings, html_attrs):
html_attrs["data-parsley-different-to"] = settings.get("field")
html_attrs["data-parsley-different-to-message"] = "<p><small>" + settings.get("message") + "</small></p>"

@staticmethod
def wtforms(field, settings):
Expand Down Expand Up @@ -3092,7 +3099,7 @@ class MultiCheckboxBuilder(WTFormsBuilder):
@staticmethod
def match(field):
return field.get("input") == "checkbox" and \
(len(field.get("options", [])) > 0 or field.get("options_fn") is not None)
(len(field.get("options", [])) > 0 or field.get("options_fn") is not None)

@staticmethod
def wtform(formulaic_context, field, wtfargs):
Expand Down
4 changes: 2 additions & 2 deletions portality/static/js/application_form.js
Original file line number Diff line number Diff line change
Expand Up @@ -844,8 +844,8 @@ window.Parsley.addValidator("optionalIf", {
});

window.Parsley.addValidator("differentTo", {
validateString : function(value, requirement) {
return (!value || ($("[name = " + requirement + "]")).val() !== value);
validateString : function(value, requirement, message) {
return (!value || ($("[name = " + requirement + "]")).val().toLowerCase() !== value.toLowerCase());
},
messages: {
en: 'Value of this field and %s field must be different'
Expand Down

0 comments on commit 95bdccb

Please sign in to comment.