feature: squash audit log
This commit is contained in:
parent
812b91ce4d
commit
bd9d7a7b5a
2 changed files with 44 additions and 21 deletions
|
|
@ -27,6 +27,9 @@ from rhodecode.lib.str_utils import safe_str
|
|||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
PR_IDS_REVIEWER_ROLE = "pull_request_ids_reviewer_role"
|
||||
PR_IDS_OBSERVER_ROLE = "pull_request_ids_observer_role"
|
||||
|
||||
# action as key, and expected action_data as value
|
||||
ACTIONS_V1 = {
|
||||
"user.login.success": {"user_agent": ""},
|
||||
|
|
@ -63,7 +66,7 @@ ACTIONS_V1 = {
|
|||
"repo.edit.permissions.branch": {},
|
||||
"repo.archive": {"old_data": {}},
|
||||
"repo.delete": {"old_data": {}},
|
||||
"review.delete": {"review.role": "", "pull_request": {}, "prev_user": {}},
|
||||
"review.delete": {PR_IDS_OBSERVER_ROLE: [], PR_IDS_REVIEWER_ROLE: [], "prev_user": {}},
|
||||
"repo.archive.download": {"user_agent": "", "archive_name": "", "archive_spec": "", "archive_cached": ""},
|
||||
"repo.permissions.branch_rule.create": {},
|
||||
"repo.permissions.branch_rule.edit": {},
|
||||
|
|
|
|||
|
|
@ -512,30 +512,50 @@ class UserModel(BaseModel):
|
|||
self.sa.add(a)
|
||||
|
||||
def _delete_from_reviews(self, user: User, reviewer_pull_requests: List[PullRequestReviewers]):
|
||||
repos_map = {}
|
||||
|
||||
for review in reviewer_pull_requests:
|
||||
repo_id = review.pull_request.target_repo_id
|
||||
repo_map = repos_map.get(repo_id, {})
|
||||
|
||||
pull_request_ids_reviewer_role = repo_map.get(audit_logger.PR_IDS_REVIEWER_ROLE, set())
|
||||
pull_request_ids_observer_role = repo_map.get(audit_logger.PR_IDS_OBSERVER_ROLE, set())
|
||||
|
||||
if review.role == PullRequestReviewers.ROLE_REVIEWER:
|
||||
audit_logger.store_web(
|
||||
"review.delete",
|
||||
user=get_current_rhodecode_user(),
|
||||
action_data={
|
||||
"review_role": review.role,
|
||||
"pull_request": {
|
||||
"id": review.pull_request.pull_request_id,
|
||||
"title": review.pull_request.title_safe,
|
||||
},
|
||||
"prev_user": {
|
||||
"username": user.username,
|
||||
"name": user.name,
|
||||
"email": user.email,
|
||||
},
|
||||
},
|
||||
repo=audit_logger.RepoWrap(
|
||||
repo_id=review.pull_request.target_repo_id,
|
||||
repo_name=review.pull_request.target_repo.repo_name,
|
||||
),
|
||||
)
|
||||
pull_request_ids_reviewer_role.add(review.pull_request.pull_request_id)
|
||||
elif review.role == PullRequestReviewers.ROLE_OBSERVER:
|
||||
pull_request_ids_observer_role.add(review.pull_request.pull_request_id)
|
||||
|
||||
repos_map[repo_id] = {
|
||||
audit_logger.PR_IDS_REVIEWER_ROLE: pull_request_ids_reviewer_role,
|
||||
audit_logger.PR_IDS_OBSERVER_ROLE: pull_request_ids_observer_role,
|
||||
"repo_id": repo_id,
|
||||
"repo_name": review.pull_request.target_repo.repo_name,
|
||||
}
|
||||
|
||||
self.sa.delete(review)
|
||||
|
||||
for repo_id in repos_map:
|
||||
repo_map = repos_map[repo_id]
|
||||
|
||||
audit_logger.store_web(
|
||||
"review.delete",
|
||||
user=get_current_rhodecode_user(),
|
||||
action_data={
|
||||
audit_logger.PR_IDS_OBSERVER_ROLE: list(repo_map.get(audit_logger.PR_IDS_OBSERVER_ROLE, set())),
|
||||
audit_logger.PR_IDS_REVIEWER_ROLE: list(repo_map.get(audit_logger.PR_IDS_REVIEWER_ROLE, set())),
|
||||
"prev_user": {
|
||||
"username": user.username,
|
||||
"name": user.name,
|
||||
"email": user.email,
|
||||
},
|
||||
},
|
||||
repo=audit_logger.RepoWrap(
|
||||
repo_id=repo_map["repo_id"],
|
||||
repo_name=repo_map["repo_name"],
|
||||
),
|
||||
)
|
||||
|
||||
def delete(
|
||||
self,
|
||||
user,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue