From 67dcaed864aa35cccbb733c121a83c5fe6664d35 Mon Sep 17 00:00:00 2001 From: ivis-ashino Date: Thu, 13 Mar 2025 13:38:56 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=E3=82=B3=E3=83=9F=E3=83=A5=E3=83=8B?= =?UTF-8?q?=E3=83=86=E3=82=A3=E7=AE=A1=E7=90=86=E8=80=85=E3=81=AE=E3=82=B3?= =?UTF-8?q?=E3=83=9F=E3=83=A5=E3=83=8B=E3=83=86=E3=82=A3=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=82=92=E5=88=B6=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/invenio-communities/invenio_communities/admin.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/invenio-communities/invenio_communities/admin.py b/modules/invenio-communities/invenio_communities/admin.py index 514ad8637e..85e381d9a9 100644 --- a/modules/invenio-communities/invenio_communities/admin.py +++ b/modules/invenio-communities/invenio_communities/admin.py @@ -110,7 +110,10 @@ def validate_input_id(id): m = re.match(the_patterns['ASCII_LETTER_PATTERN'], id) if m is None: raise ValidationError(the_result['ASCII_LETTER_PATTERN']) - + + if self.can_create is False: + abort(403) + form = self.create_form() if(request.method == 'POST'): From 935806b57f1e0af428000a3ce306dbbc53cd8376 Mon Sep 17 00:00:00 2001 From: ivis-ashino Date: Thu, 13 Mar 2025 18:24:00 +0900 Subject: [PATCH 2/4] fix --- modules/invenio-accounts/invenio_accounts/admin.py | 2 +- modules/weko-admin/weko_admin/views.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/invenio-accounts/invenio_accounts/admin.py b/modules/invenio-accounts/invenio_accounts/admin.py index 2eae4f9ce9..8074ac61b5 100644 --- a/modules/invenio-accounts/invenio_accounts/admin.py +++ b/modules/invenio-accounts/invenio_accounts/admin.py @@ -202,7 +202,7 @@ def action_activate(self, ids): _system_role = os.environ.get('INVENIO_ROLE_SYSTEM', 'System Administrator') - _repo_role = os.environ.get('INVENIO_ROLE_REPOSITORY' + _repo_role = os.environ.get('INVENIO_ROLE_REPOSITORY', 'Repository Administrator') _com_role = os.environ.get('INVENIO_ROLE_COMMUNITY', 'Community Administrator') diff --git a/modules/weko-admin/weko_admin/views.py b/modules/weko-admin/weko_admin/views.py index 0ca58b8430..61785ae234 100644 --- a/modules/weko-admin/weko_admin/views.py +++ b/modules/weko-admin/weko_admin/views.py @@ -578,7 +578,7 @@ def get_site_license_send_mail_settings(): SiteLicenseInfo.organization_id).all() settings = AdminSettings.get('site_license_mail_settings', dict_to_object=False) if settings: - setting = settings.get(repo_id) + setting = settings.get(repo_id, {'auto_send_flag': False}) else: setting = {'auto_send_flag': False} From e88a2a967052e9272bd17d010c54eb54aecb7c85 Mon Sep 17 00:00:00 2001 From: ivis-ashino Date: Fri, 14 Mar 2025 13:51:31 +0900 Subject: [PATCH 3/4] fix feedback mail --- modules/invenio-communities/invenio_communities/utils.py | 2 +- modules/weko-admin/weko_admin/models.py | 2 +- modules/weko-admin/weko_admin/tasks.py | 7 +++++-- modules/weko-records/weko_records/api.py | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/invenio-communities/invenio_communities/utils.py b/modules/invenio-communities/invenio_communities/utils.py index afe207b4f7..6c1059cfe0 100644 --- a/modules/invenio-communities/invenio_communities/utils.py +++ b/modules/invenio-communities/invenio_communities/utils.py @@ -247,7 +247,7 @@ def get_repository_id_by_item_id(item_id): record = Record.get_record(item_id) index_id = record.get("path") index = Index.get_index_by_id(index_id[0]) - repository_id = None + repository_id = "Root Index" while True: com = Community.query.filter_by(root_node_id=index.id).first() if com: diff --git a/modules/weko-admin/weko_admin/models.py b/modules/weko-admin/weko_admin/models.py index b363ecd3e9..ea4754d8fa 100644 --- a/modules/weko-admin/weko_admin/models.py +++ b/modules/weko-admin/weko_admin/models.py @@ -1164,7 +1164,7 @@ def update(cls, account_author, """ try: with db.session.begin_nested(): - settings = cls.query.all()[0] + settings = cls.query.filter_by(repository_id=repo_id).first() settings.account_author = account_author settings.manual_mail = manual_mail settings.is_sending_feedback = is_sending_feedback diff --git a/modules/weko-admin/weko_admin/tasks.py b/modules/weko-admin/weko_admin/tasks.py index 06a3f58c7a..f29650b313 100644 --- a/modules/weko-admin/weko_admin/tasks.py +++ b/modules/weko-admin/weko_admin/tasks.py @@ -36,7 +36,7 @@ from weko_admin.api import TempDirInfo -from .models import AdminSettings, StatisticsEmail +from .models import AdminSettings, StatisticsEmail, FeedbackMailSetting from .utils import StatisticMail, get_user_report_data, package_reports ,elasticsearch_reindex from .views import manual_send_site_license_mail from celery.task.control import inspect @@ -185,7 +185,10 @@ def check_send_all_reports(): def send_feedback_mail(): """Check Redis periodically for when to run a task.""" with current_app.app_context(): - StatisticMail.send_mail_to_all() + setting = FeedbackMailSetting.get_feedback_email_setting_by_repo(repo_id='Root Index') + if setting: + if setting[0].is_sending_feedback: + StatisticMail.send_mail_to_all() def _due_to_run(schedule): diff --git a/modules/weko-records/weko_records/api.py b/modules/weko-records/weko_records/api.py index 8878e28638..cde1f18b14 100644 --- a/modules/weko-records/weko_records/api.py +++ b/modules/weko-records/weko_records/api.py @@ -2391,7 +2391,7 @@ def get_feedback_mail_list(cls, repo_id=None): ) if repo_id: - data.filter(_FeedbackMailList.repository_id == repo_id) + data = data.filter(_FeedbackMailList.repository_id == repo_id) data = data.all() # create return data From fc93f8460d131028704409514dab762ce41dafd3 Mon Sep 17 00:00:00 2001 From: ivis-ashino Date: Fri, 14 Mar 2025 14:27:46 +0900 Subject: [PATCH 4/4] fix --- modules/weko-admin/weko_admin/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/weko-admin/weko_admin/utils.py b/modules/weko-admin/weko_admin/utils.py index ca12161437..f59262d321 100644 --- a/modules/weko-admin/weko_admin/utils.py +++ b/modules/weko-admin/weko_admin/utils.py @@ -596,6 +596,10 @@ def send_mail_to_one(cls, list_mail_data=None, stats_date=None, repo=None): if not setting.get('is_sending_feedback') and not stats_date: return banned_mail = cls.get_banned_mail(setting.get('data')) + if repo != "Root Index": + root_setting = FeedbackMail.get_feed_back_email_setting(repo_id='Root Index') + root_banned_mail= cls.get_banned_mail(root_setting.get('data')) + banned_mail = list(set(banned_mail + root_banned_mail)) session = db.session id = FeedbackMailHistory.get_sequence(session)