feature: squash audit log

This commit is contained in:
ievgenii vdovenko 2025-07-30 13:35:18 +02:00
parent 812b91ce4d
commit bd9d7a7b5a
2 changed files with 44 additions and 21 deletions

View file

@ -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,