Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def fromId(db, review_id, branch=None, load_commits=True, profiler=None):
cursor = db.cursor()
cursor.execute("SELECT type, branch, state, serial, summary, description, applyfilters, applyparentfilters FROM reviews WHERE id=%s", [review_id])
row = cursor.fetchone()
if not row: return None
type, branch_id, state, serial, summary, description, applyfilters, applyparentfilters = row
if profiler: profiler.check("Review.fromId: basic")
if branch is None:
branch = Branch.fromId(db, branch_id, load_review=False, load_commits=load_commits, profiler=profiler)
cursor.execute("SELECT uid FROM reviewusers WHERE review=%s AND owner", (review_id,))
owners = User.fromIds(db, [user_id for (user_id,) in cursor])
if profiler: profiler.check("Review.fromId: owners")
review = Review(review_id, owners, type, branch, state, serial, summary, description, applyfilters, applyparentfilters)
branch.review = review
# Reviewers: all users that have at least one review file assigned to them.
cursor.execute("""SELECT DISTINCT uid, assignee IS NOT NULL, type
FROM reviewusers
LEFT OUTER JOIN fullreviewuserfiles ON (fullreviewuserfiles.review=reviewusers.review AND assignee=uid)
WHERE reviewusers.review=%s""",
(review_id,))
reviewers = []
watchers = []
watcher_types = {}
(review_id,))
reviewers = []
watchers = []
watcher_types = {}
for user_id, is_reviewer, user_type in cursor.fetchall():
if is_reviewer:
reviewers.append(user_id)
elif user_id not in review.owners:
watchers.append(user_id)
watcher_types[user_id] = user_type
review.reviewers = User.fromIds(db, reviewers)
for watcher in User.fromIds(db, watchers):
review.watchers[watcher] = watcher_types[watcher]
if profiler: profiler.check("Review.fromId: users")
return review
(review_id,))
reviewers = []
watchers = []
watcher_types = {}
for user_id, is_reviewer, user_type in cursor.fetchall():
if is_reviewer:
reviewers.append(user_id)
elif user_id not in review.owners:
watchers.append(user_id)
watcher_types[user_id] = user_type
review.reviewers = User.fromIds(db, reviewers)
for watcher in User.fromIds(db, watchers):
review.watchers[watcher] = watcher_types[watcher]
if profiler: profiler.check("Review.fromId: users")
if load_commits:
review.branch.loadCommits(db)
cursor.execute("""SELECT id
FROM reviewchangesets
JOIN changesets ON (id=changeset)
WHERE review=%s
AND child=ANY (%s)""", (review_id, [commit.id for commit in review.branch.commits]))
review.changesets = [changeset_id for (changeset_id,) in cursor.fetchall()]
if profiler: profiler.check("Review.fromId: load commits")
LEFT OUTER JOIN fullreviewuserfiles ON (fullreviewuserfiles.review=reviewusers.review AND assignee=uid)
WHERE reviewusers.review=%s""",
(review_id,))
reviewers = []
watchers = []
watcher_types = {}
for user_id, is_reviewer, user_type in cursor.fetchall():
if is_reviewer:
reviewers.append(user_id)
elif user_id not in review.owners:
watchers.append(user_id)
watcher_types[user_id] = user_type
review.reviewers = User.fromIds(db, reviewers)
for watcher in User.fromIds(db, watchers):
review.watchers[watcher] = watcher_types[watcher]
if profiler: profiler.check("Review.fromId: users")
return review
LEFT OUTER JOIN fullreviewuserfiles ON (fullreviewuserfiles.review=reviewusers.review AND assignee=uid)
WHERE reviewusers.review=%s""",
(review_id,))
reviewers = []
watchers = []
watcher_types = {}
for user_id, is_reviewer, user_type in cursor.fetchall():
if is_reviewer:
reviewers.append(user_id)
elif user_id not in review.owners:
watchers.append(user_id)
watcher_types[user_id] = user_type
review.reviewers = User.fromIds(db, reviewers)
for watcher in User.fromIds(db, watchers):
review.watchers[watcher] = watcher_types[watcher]
if profiler: profiler.check("Review.fromId: users")
if load_commits:
review.branch.loadCommits(db)
cursor.execute("""SELECT id
FROM reviewchangesets
JOIN changesets ON (id=changeset)
WHERE review=%s
AND child=ANY (%s)""", (review_id, [commit.id for commit in review.branch.commits]))
review.changesets = [changeset_id for (changeset_id,) in cursor.fetchall()]
cursor = db.cursor()
cursor.execute("SELECT type, branch, state, serial, summary, description, applyfilters, applyparentfilters FROM reviews WHERE id=%s", [review_id])
row = cursor.fetchone()
if not row: raise NoSuchReview(review_id)
type, branch_id, state, serial, summary, description, applyfilters, applyparentfilters = row
if profiler: profiler.check("Review.fromId: basic")
if branch is None:
from dbutils import Branch
branch = Branch.fromId(db, branch_id, load_review=False, profiler=profiler)
cursor.execute("SELECT uid FROM reviewusers WHERE review=%s AND owner", (review_id,))
owners = User.fromIds(db, [user_id for (user_id,) in cursor])
if profiler: profiler.check("Review.fromId: owners")
review = Review(review_id, owners, type, branch, state, serial, summary, description, applyfilters, applyparentfilters)
branch.review = review
# Reviewers: all users that have at least one review file assigned to them.
cursor.execute("""SELECT DISTINCT uid, assignee IS NOT NULL, type
FROM reviewusers
LEFT OUTER JOIN fullreviewuserfiles ON (fullreviewuserfiles.review=reviewusers.review AND assignee=uid)
WHERE reviewusers.review=%s""",
(review_id,))
reviewers = []
watchers = []
watcher_types = {}