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/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'): 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-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) 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} 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