Skip to content

Commit f7f5f57

Browse files
Merge branch 'release/2026-01-15_4080_key_dates'
2 parents 126ff2c + b2850e7 commit f7f5f57

102 files changed

Lines changed: 1636 additions & 342 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
name: Prepare doaj env for unittests
3131
command: |
3232
echo "ELASTICSEARCH_HOSTS = [{'host': 'localhost', 'port': 9200}]" > test.cfg
33+
echo "DEFAULT_INDEX_SETTINGS = { 'number_of_shards': 1, 'number_of_replicas': 0, 'analysis': { 'analyzer': { 'ascii_folded': { 'tokenizer': 'standard', 'filter': ['lowercase', 'asciifolding'] } } } }" >> test.cfg
3334
python portality/cms/build_fragments.py
3435
python portality/cms/build_sass.py
3536

data_import_settings/dev_basics.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"lcc" : {"import" : false, "limit" : -1},
1616
"lock" : {"import" : false, "limit" : -1},
1717
"news" : {"import" : true, "limit" : -1},
18-
"notification" : {"import" : false, "limit" : -1},
18+
"notification" : {"import" : true, "limit" : 100},
1919
"preserve" : {"import" : false, "limit" : -1},
2020
"provenance" : {"import" : false, "limit" : -1},
2121
"upload" : {"import" : false, "limit" : -1}

deploy/read_only_routes.csv

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
rule,endpoint,methods
2+
/static/<path:filename>,static,GET
3+
/_debug_toolbar/static/<path:filename>,_debug_toolbar.static,GET
4+
/_debug_toolbar/views/template/<key>,debugtoolbar.template_editor,GET
5+
/_debug_toolbar/views/template/<key>/save,debugtoolbar.save_template,POST
6+
/_debug_toolbar/views/template/<key>,debugtoolbar.template_preview,POST
7+
/_debug_toolbar/views/sqlalchemy/sql_explain,debugtoolbar.sql_select,"GET, POST"
8+
/_debug_toolbar/views/sqlalchemy/sql_select,debugtoolbar.sql_select,"GET, POST"
9+
/account/,account.index,GET
10+
/account/login,account.login,"GET, POST"
11+
/account/logout,account.logout,GET
12+
/account/create/,account.create,GET
13+
/admin/,admin.index,GET
14+
/admin/journals,admin.journals,GET
15+
/admin/journal/readonly/<journal_id>,admin.journal_readonly,GET
16+
/admin/journal/<journal_id>/article-info/,admin.journal_article_info,GET
17+
/admin/journal/<journal_id>/article-info/admin-site-search,admin.journal_article_info_admin_site_search,GET
18+
/admin/applications,admin.suggestions,GET
19+
/admin/update_requests,admin.update_requests,GET
20+
/admin/admin_site_search,admin.admin_site_search,GET
21+
/admin/editor_groups,admin.editor_group_search,GET
22+
/admin/background_jobs,admin.background_jobs_search,GET
23+
/admin/notifications,admin.global_notifications_search,GET
24+
/admin/autocomplete/user,admin.user_autocomplete,GET
25+
/admin/dropdown/eg_associates,admin.eg_associates_dropdown,GET
26+
/admin/report/<report_id>,admin.get_report,GET
27+
/admin/reports,admin.reports_search,GET
28+
/admin/alerts,admin.admin_alerts,GET
29+
/admin/autoassign,admin.autoassign_search,GET
30+
/admin/ris,admin.ris_search,GET
31+
/admin/ris/<id>/<action>,admin.ris_manage,POST
32+
/publisher/,publisher.index,GET
33+
/publisher/journal,publisher.journals,GET
34+
/publisher/application/deleted,publisher.deleted_thanks,GET
35+
/publisher/view_application/<application_id>,publisher.application_readonly,GET
36+
/publisher/view_update_request/<application_id>,publisher.update_request_readonly,"GET, POST"
37+
/publisher/progress,publisher.updates_in_progress,GET
38+
/publisher/help,publisher.help,GET
39+
/query/<path:path>,query.query,"GET, POST"
40+
/admin_query/<path:path>,admin_query.query,"GET, POST"
41+
/publisher_query/<path:path>,publisher_query.query,"GET, POST"
42+
/editor_query/<path:path>,editor_query.query,"GET, POST"
43+
/associate_query/<path:path>,associate_query.query,"GET, POST"
44+
/dashboard_query/<path:path>,dashboard_query.query,"GET, POST"
45+
/editor/,editor.index,GET
46+
/editor/group_applications,editor.group_suggestions,GET
47+
/editor/your_applications,editor.associate_suggestions,GET
48+
/editor/journal/readonly/<journal_id>,editor.journal_readonly,GET
49+
/service/unlocked,doajservices.unlocked,GET
50+
/service/groupstatus/<group_id>,doajservices.group_status,GET
51+
/api/v1/,api_v1.api_v1_root,GET
52+
/api/v1/docs,api_v1.docs,GET
53+
/api/v1/search/articles/<path:search_query>,api_v1.search_articles,GET
54+
/api/v1/articles/<article_id>,api_v1.retrieve_article,GET
55+
/api/v1/journals/<journal_id>,api_v1.retrieve_journal,GET
56+
/api/v1/applications/<application_id>,api_v1.retrieve_application,GET
57+
/api/v1/search/applications/<path:search_query>,api_v1.search_applications,GET
58+
/api/v1/search/journals/<path:search_query>,api_v1.search_journals,GET
59+
/api/v2/,api_v2.api_v2_root,GET
60+
/api/v2/docs,api_v2.docs,GET
61+
/api/v2/search/articles/<path:search_query>,api_v2.search_articles,GET
62+
/api/v2/articles/<article_id>,api_v2.retrieve_article,GET
63+
/api/v2/journals/<journal_id>,api_v2.retrieve_journal,GET
64+
/api/v2/applications/<application_id>,api_v2.retrieve_application,GET
65+
/api/v2/search/applications/<path:search_query>,api_v2.search_applications,GET
66+
/api/v2/search/journals/<path:search_query>,api_v2.search_journals,GET
67+
/api/v3/,api_v3.api_root,GET
68+
/api/v3/docs,api_v3.docs,GET
69+
/api/v3/swagger.json,api_v3.api_spec,GET
70+
/api/v3/<path:invalid_path>,api_v3.missing_resource,"DELETE, GET, PATCH, POST, PUT"
71+
/api/v3/search/applications/<path:search_query>,api_v3.search_applications,GET
72+
/api/v3/search/journals/<path:search_query>,api_v3.search_journals,GET
73+
/api/v3/search/articles/<path:search_query>,api_v3.search_articles,GET
74+
/api/v3/applications/<application_id>,api_v3.retrieve_application,GET
75+
/api/v3/articles/<article_id>,api_v3.retrieve_article,GET
76+
/api/v3/journals/<journal_id>,api_v3.retrieve_journal,GET
77+
/api/v4/,api_v4.api_root,GET
78+
/api/v4/docs,api_v4.docs,GET
79+
/api/v4/swagger.json,api_v4.api_spec,GET
80+
/api/v4/<path:invalid_path>,api_v4.missing_resource,"DELETE, GET, PATCH, POST, PUT"
81+
/api/v4/search/applications/<path:search_query>,api_v4.search_applications,GET
82+
/api/v4/search/journals/<path:search_query>,api_v4.search_journals,GET
83+
/api/v4/search/articles/<path:search_query>,api_v4.search_articles,GET
84+
/api/v4/applications/<application_id>,api_v4.retrieve_application,GET
85+
/api/v4/articles/<article_id>,api_v4.retrieve_article,GET
86+
/api/v4/journals/<journal_id>,api_v4.retrieve_journal,GET
87+
/api/v4/bulk/articles/<upload_id>,api_v4.bulk_article_create_status,GET
88+
/api/,api.api_root,GET
89+
/api/docs,api.docs,GET
90+
/api/swagger.json,api.api_spec,GET
91+
/api/<path:invalid_path>,api.missing_resource,"DELETE, GET, PATCH, POST, PUT"
92+
/api/search/applications/<path:search_query>,api.search_applications,GET
93+
/api/search/journals/<path:search_query>,api.search_journals,GET
94+
/api/search/articles/<path:search_query>,api.search_articles,GET
95+
/api/applications/<application_id>,api.retrieve_application,GET
96+
/api/articles/<article_id>,api.retrieve_article,GET
97+
/api/journals/<journal_id>,api.retrieve_journal,GET
98+
/api/bulk/articles/<upload_id>,api.bulk_article_create_status,GET
99+
/status/stats,status.stats,GET
100+
/status/,status.status,GET
101+
/_status/stats,_status.stats,GET
102+
/_status/,_status.status,GET
103+
/apply/thank-you,apply.application_thanks,GET
104+
/apply/draft,apply.draft_saved,GET
105+
/jct/inprogress,jct.inprogress,GET
106+
/dashboard/,dashboard.top_todo,GET
107+
/dashboard/top_notifications,dashboard.top_notifications,GET
108+
/dashboard/notifications,dashboard.notifications,GET
109+
/tours/<content_id>,tours.tour,GET
110+
/tours/<content_id>/seen,tours.tour_seen,GET
111+
/oai.<specified>,oaipmh.oaipmh,"GET, POST"
112+
/oai,oaipmh.oaipmh,"GET, POST"
113+
/openurl,openurl.openurl,"GET, POST"
114+
/openurl/help,openurl.help,GET
115+
/feed,atom.feed,GET
116+
/,doaj.home,GET
117+
/login/,doaj.login,GET
118+
/dismiss_site_note,doaj.dismiss_site_note,GET
119+
/news/,doaj.news,GET
120+
/fqw_hit,doaj.fqw_hit,POST
121+
/search/journals,doaj.journals_search,GET
122+
/search/articles,doaj.articles_search,GET
123+
/search,doaj.search,GET
124+
/search,doaj.search_post,POST
125+
/csv,doaj.csv_data,GET
126+
/sitemap.xml,doaj.sitemap_legacy,GET
127+
/sitemap_index.xml,doaj.sitemap_index_legacy,GET
128+
/sitemap<suffix>.xml,doaj.sitemap,GET
129+
/public-data-dump/<record_type>,doaj.public_data_dump_redirect,GET
130+
/store/<container>/<dir>/<filename>,doaj.get_from_local_store_dir,GET
131+
/store/<container>/<filename>,doaj.get_from_local_store,GET
132+
/autocomplete/<doc_type>/<field_name>,doaj.autocomplete,"GET, POST"
133+
/toc/<identifier>,doaj.toc,GET
134+
/toc/articles/<identifier>,doaj.toc_articles_legacy,GET
135+
/toc/<identifier>/articles,doaj.toc_articles,GET
136+
/article/<identifier>,doaj.article_page,GET
137+
/googlebdb21861de30fe30.html,doaj.google_webmaster_tools,GET
138+
/accessibility/,doaj.accessibility,GET
139+
/privacy/,doaj.privacy,GET
140+
/contact/,doaj.contact,GET
141+
/terms/,doaj.terms,GET
142+
/code-of-conduct/,doaj.conduct,GET
143+
/media/,doaj.media,GET
144+
/support/,doaj.support,GET
145+
/support/sponsors/,doaj.sponsors,GET
146+
/support/publisher-supporters/,doaj.publisher_supporters,GET
147+
/support/supporters/,doaj.supporters,GET
148+
/support/funders/,doaj.funders,GET
149+
/support/thank-you/,doaj.application_thanks,GET
150+
/apply/guide/,doaj.guide,GET
151+
/apply/transparency/,doaj.transparency,GET
152+
/apply/why-index/,doaj.why_index,GET
153+
/apply/publisher-responsibilities/,doaj.publisher_responsibilities,GET
154+
/apply/copyright-and-licensing/,doaj.copyright_and_licensing,GET
155+
/docs/oai-pmh/,doaj.oai_pmh,GET
156+
/docs/api/,doaj.docs,GET
157+
/docs/xml/,doaj.xml,GET
158+
/docs/widgets/,doaj.widgets,GET
159+
/docs/public-data-dump/,doaj.public_data_dump,GET
160+
/docs/openurl/,doaj.openurl,GET
161+
/docs/faq/,doaj.faq,GET
162+
/about/,doaj.about,GET
163+
/at-20/,doaj.at_20,GET
164+
/about/ambassadors/,doaj.ambassadors,GET
165+
/about/advisory-board-council/,doaj.abc,GET
166+
/about/editorial-policy-advisory-group/,doaj.epag,GET
167+
/about/volunteers/,doaj.volunteers,GET
168+
/about/team/,doaj.team,GET
169+
/preservation/,doaj.preservation,GET
170+
/subjects,doaj.subjects,GET
171+
/application/new,doaj.old_application,GET
172+
/<cc>/editionsavante,doaj.bestpractice,GET
173+
/<cc>/bestpractice,doaj.bestpractice,GET
174+
/<cc>/boaspraticas,doaj.bestpractice,GET
175+
/<cc>/mejorespracticas,doaj.bestpractice,GET
176+
/oainfo,doaj.bestpractice,GET
177+
/bestpractice,doaj.bestpractice,GET
178+
/membership,doaj.membership,GET
179+
/publishermembers,doaj.old_sponsors,GET
180+
/members,doaj.members,GET
181+
/features,doaj.features,GET
182+
/openurl/help,doaj.old_openurl,GET
183+
/faq,doaj.old_faq,GET
184+
/publishers,doaj.publishers,GET
185+
/password-reset/,doaj.new_password_reset,GET
186+
/u/<alias>,doaj.shortened_url,GET
187+
/testdrive/<test_id>,testdrive.testdrive,GET
188+
/testdrive/<test_id>/teardown,testdrive.teardown,GET
189+
/assets/<path:filename>,our_static,GET
190+
/static/<path:filename>,our_static,GET
191+
/doaj,legacy,GET
192+
/doaj2csv,another_legacy_csv_route,GET
193+
/schemas/doajArticles.xsd,legacy_doaj_XML_schema,GET
194+
/isCrossrefLoaded,is_crossref_loaded,GET
195+
/api/,api_directory,GET

deploy/write_required_routes.csv

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
rule,endpoint,methods
2+
/account/<username>,account.username,"DELETE, GET, POST"
3+
/account/forgot,account.forgot,"GET, POST"
4+
/account/reset/<reset_token>,account.reset,"GET, POST"
5+
/account/register,account.register,"GET, POST"
6+
/admin/journals,admin.journals_list,"DELETE, POST"
7+
/admin/articles,admin.articles_list,"DELETE, POST"
8+
/admin/delete/article/<article_id>,admin.article_endpoint,POST
9+
/admin/article/<article_id>,admin.article_page,"GET, POST"
10+
/admin/journal/<journal_id>,admin.journal_page,"GET, POST"
11+
/admin/journal/<journal_id>/activate,admin.journal_activate,"GET, POST"
12+
/admin/journal/<journal_id>/deactivate,admin.journal_deactivate,"GET, POST"
13+
/admin/journals/bulk/withdraw,admin.journals_bulk_withdraw,POST
14+
/admin/journals/bulk/reinstate,admin.journals_bulk_reinstate,POST
15+
/admin/journal/<journal_id>/continue,admin.journal_continue,"GET, POST"
16+
/admin/application/<application_id>,admin.application,"GET, POST"
17+
/admin/application_quick_reject/<application_id>,admin.application_quick_reject,POST
18+
/admin/editor_group/<group_id>,admin.editor_group,"GET, POST"
19+
/admin/editor_group,admin.editor_group,"GET, POST"
20+
/admin/<doaj_type>/bulk/assign_editor_group,admin.bulk_assign_editor_group,POST
21+
/admin/<doaj_type>/bulk/add_note,admin.bulk_add_note,POST
22+
/admin/journals/bulk/edit_metadata,admin.bulk_edit_journal_metadata,POST
23+
/admin/<doaj_type>/bulk/change_status,admin.applications_bulk_change_status,POST
24+
/admin/journals/bulk/delete,admin.bulk_journals_delete,POST
25+
/admin/articles/bulk/delete,admin.bulk_articles_delete,POST
26+
/admin/report,admin.request_report,POST
27+
/publisher/application/<application_id>/delete,publisher.delete_application,GET
28+
/publisher/update_request/<journal_id>,publisher.update_request,"DELETE, GET, POST"
29+
/publisher/uploadfile,publisher.upload_file,"GET, POST"
30+
/publisher/preservation,publisher.preservation,"GET, POST"
31+
/publisher/metadata,publisher.metadata,"GET, POST"
32+
/publisher/journal-csv,publisher.journal_csv,GET
33+
/publisher/journal-csv/validate,publisher.journal_csv_validate,POST
34+
/editor/application/<application_id>,editor.application,"GET, POST"
35+
/service/unlock/<object_type>/<object_id>,doajservices.unlock,POST
36+
/service/shorten,doajservices.shorten,POST
37+
/service/export/article/<article_id>/<fmt>,doajservices.export_article_ris,GET
38+
/service/alerts/<alert_id>/<action>,doajservices.manage_alert,POST
39+
/api/v1/articles,api_v1.create_article,POST
40+
/api/v1/articles/<article_id>,api_v1.update_article,PUT
41+
/api/v1/articles/<article_id>,api_v1.delete_article,DELETE
42+
/api/v1/bulk/articles,api_v1.bulk_article_create,POST
43+
/api/v1/bulk/articles,api_v1.bulk_article_delete,DELETE
44+
/api/v1/bulk/applications,api_v1.bulk_application_create,POST
45+
/api/v1/bulk/applications,api_v1.bulk_application_delete,DELETE
46+
/api/v1/applications,api_v1.create_application,POST
47+
/api/v1/applications/<application_id>,api_v1.update_application,PUT
48+
/api/v1/applications/<application_id>,api_v1.delete_application,DELETE
49+
/api/v2/articles,api_v2.create_article,POST
50+
/api/v2/articles/<article_id>,api_v2.update_article,PUT
51+
/api/v2/articles/<article_id>,api_v2.delete_article,DELETE
52+
/api/v2/bulk/articles,api_v2.bulk_article_create,POST
53+
/api/v2/bulk/articles,api_v2.bulk_article_delete,DELETE
54+
/api/v2/bulk/applications,api_v2.bulk_application_create,POST
55+
/api/v2/bulk/applications,api_v2.bulk_application_delete,DELETE
56+
/api/v2/applications,api_v2.create_application,POST
57+
/api/v2/applications/<application_id>,api_v2.update_application,PUT
58+
/api/v2/applications/<application_id>,api_v2.delete_application,DELETE
59+
/api/v3/applications,api_v3.create_application,POST
60+
/api/v3/applications/<application_id>,api_v3.update_application,PUT
61+
/api/v3/applications/<application_id>,api_v3.delete_application,DELETE
62+
/api/v3/articles,api_v3.create_article,POST
63+
/api/v3/articles/<article_id>,api_v3.update_article,PUT
64+
/api/v3/articles/<article_id>,api_v3.delete_article,DELETE
65+
/api/v3/bulk/applications,api_v3.bulk_application_create,POST
66+
/api/v3/bulk/applications,api_v3.bulk_application_delete,DELETE
67+
/api/v3/bulk/articles,api_v3.bulk_article_create,POST
68+
/api/v3/bulk/articles,api_v3.bulk_article_delete,DELETE
69+
/api/v4/applications,api_v4.create_application,POST
70+
/api/v4/applications/<application_id>,api_v4.update_application,PUT
71+
/api/v4/applications/<application_id>,api_v4.delete_application,DELETE
72+
/api/v4/articles,api_v4.create_article,POST
73+
/api/v4/articles/<article_id>,api_v4.update_article,PUT
74+
/api/v4/articles/<article_id>,api_v4.delete_article,DELETE
75+
/api/v4/bulk/applications,api_v4.bulk_application_create,POST
76+
/api/v4/bulk/applications,api_v4.bulk_application_delete,DELETE
77+
/api/v4/bulk/articles,api_v4.bulk_article_create,POST
78+
/api/v4/bulk/articles,api_v4.bulk_article_delete,DELETE
79+
/api/applications,api.create_application,POST
80+
/api/applications/<application_id>,api.update_application,PUT
81+
/api/applications/<application_id>,api.delete_application,DELETE
82+
/api/articles,api.create_article,POST
83+
/api/articles/<article_id>,api.update_article,PUT
84+
/api/articles/<article_id>,api.delete_article,DELETE
85+
/api/bulk/applications,api.bulk_application_create,POST
86+
/api/bulk/applications,api.bulk_application_delete,DELETE
87+
/api/bulk/articles,api.bulk_article_create,POST
88+
/api/bulk/articles,api.bulk_article_delete,DELETE
89+
/apply/<draft_id>,apply.public_application,"GET, POST"
90+
/apply/,apply.public_application,"GET, POST"
91+
/dashboard/notifications/<notification_id>/seen,dashboard.notification_seen,POST

doajtest/UI/pages/login_page.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
from selenium.webdriver.common.by import By
2-
from selenium.webdriver.common.keys import Keys
3-
41
class DoajLoginPage:
52
URL = 'localhost:5004/account/login'
63

doajtest/UI/pages/main_page.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from selenium.webdriver.common.by import By
21
from selenium.webdriver.common.keys import Keys
32

43

doajtest/fixtures/article.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import datetime
21
import random
32
from copy import deepcopy
43
from typing import Dict, Iterable

doajtest/fixtures/issn_org.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from copy import deepcopy
21
from portality.lib import paths
32

43
class IssnOrgFixtureFactory(object):

doajtest/fixtures/v2/applications.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ def make_application_spread(cls, desired_output, period):
148148
],
149149
"owner" : "publisher",
150150
"related_journal" : "987654321123456789",
151-
"date_applied" : "2003-01-01T00:00:00Z"
151+
"date_applied" : "2003-01-01T00:00:00Z",
152+
"date_rejected" : "2004-01-01T00:00:00Z",
152153
},
153154
"bibjson" : JOURNAL_LIKE_BIBJSON
154155
}

doajtest/fixtures/v2/common.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ def build_flags_form_expanded(assignee=None, deadline="", setter=None, created_d
5151
"editor": "associate"
5252
}
5353

54+
LAST_REVIEW_FORM_EXPANDED = {
55+
"last_full_review": "2025-01-01"
56+
}
57+
58+
FLAGS_FORM_EXPANDED = {
59+
'flags': []
60+
}
61+
5462
JOURNAL_LIKE_BIBJSON = {
5563
"alternative_title": "Alternative Title",
5664
"apc": {

0 commit comments

Comments
 (0)