From f81072c8a718bc3b609d19b8493504db4e81d533 Mon Sep 17 00:00:00 2001 From: WJH <40563566+loveclever@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:44:30 +0800 Subject: [PATCH] deleted files notice (#5426) * batch delete files notice * frontend page --- frontend/src/components/common/notice-item.js | 16 ++++++++++++++++ seahub/notifications/models.py | 4 ++++ seahub/notifications/utils.py | 18 ++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/frontend/src/components/common/notice-item.js b/frontend/src/components/common/notice-item.js index afff41b4ba..ec2f2ddbd0 100644 --- a/frontend/src/components/common/notice-item.js +++ b/frontend/src/components/common/notice-item.js @@ -20,6 +20,7 @@ const MSG_TYPE_DRAFT_COMMENT = 'draft_comment'; const MSG_TYPE_DRAFT_REVIEWER = 'draft_reviewer'; const MSG_TYPE_GUEST_INVITATION_ACCEPTED = 'guest_invitation_accepted'; const MSG_TYPE_REPO_MONITOR = 'repo_monitor'; +const MSG_TYPE_DELETED_FILES = 'deleted_files'; class NoticeItem extends React.Component { @@ -307,6 +308,21 @@ class NoticeItem extends React.Component { return { avatar_url, notice }; } + if (noticeType === MSG_TYPE_DELETED_FILES) { + const { + repo_id, + repo_name, + } = detail; + + const repoURL = `${siteRoot}library/${repo_id}/${encodeURIComponent(repo_name)}/`; + const repoLink = `${Utils.HTMLescape(repo_name)}`; + + let notice = gettext('Your library {libraryName} has recently deleted a large number of files.'); + notice = notice.replace('{libraryName}', repoLink); + + return { avatar_url : null, notice }; + } + // if (noticeType === MSG_TYPE_GUEST_INVITATION_ACCEPTED) { // } diff --git a/seahub/notifications/models.py b/seahub/notifications/models.py index 5c57279071..63ad1a3b41 100644 --- a/seahub/notifications/models.py +++ b/seahub/notifications/models.py @@ -75,6 +75,7 @@ MSG_TYPE_DRAFT_REVIEWER = 'draft_reviewer' MSG_TYPE_GUEST_INVITATION_ACCEPTED = 'guest_invitation_accepted' MSG_TYPE_REPO_TRANSFER = 'repo_transfer' MSG_TYPE_REPO_MINOTOR = 'repo_monitor' +MSG_TYPE_DELETED_FILES = 'deleted_files' USER_NOTIFICATION_COUNT_CACHE_PREFIX = 'USER_NOTIFICATION_COUNT_' @@ -407,6 +408,9 @@ class UserNotification(models.Model): def is_repo_monitor_msg(self): return self.msg_type == MSG_TYPE_REPO_MINOTOR + def is_deleted_files_msg(self): + return self.msg_type == MSG_TYPE_DELETED_FILES + def user_message_detail_to_dict(self): """Parse user message detail, returns dict contains ``message`` and ``msg_from``. diff --git a/seahub/notifications/utils.py b/seahub/notifications/utils.py index b46deeff1a..634c27e8ee 100644 --- a/seahub/notifications/utils.py +++ b/seahub/notifications/utils.py @@ -247,4 +247,22 @@ def update_notice_detail(request, notices): except Exception as e: logger.error(e) + elif notice.is_deleted_files_msg(): + try: + d = json.loads(notice.detail) + repo_id = d['repo_id'] + if repo_id in repo_dict: + repo = repo_dict[repo_id] + else: + repo = seafile_api.get_repo(repo_id) + repo_dict[repo_id] = repo + + if repo: + d['repo_name'] = repo.name + notice.detail = d + else: + notice.detail = None + except Exception as e: + logger.error(e) + return notices