def process(self, db, user, repository_id, commit_ids, branch, summary, reviewfilters, recipientfilters, applyfilters, applyparentfilters, description=None, frombranch=None, trackedbranch=None): if not branch.startswith("r/"): raise OperationFailure(code="invalidbranch", title="Invalid review branch name", message="'%s' is not a valid review branch name; it must have a \"r/\" prefix." % branch) repository = gitutils.Repository.fromId(db, repository_id) commits = [gitutils.Commit.fromId(db, repository, commit_id) for commit_id in commit_ids] commitset = CommitSet(commits) reviewfilters = parseReviewFilters(db, reviewfilters) recipientfilters = parseRecipientFilters(db, recipientfilters) review = createReview(db, user, repository, commits, branch, summary, description, from_branch_name=frombranch, reviewfilters=reviewfilters, recipientfilters=recipientfilters, applyfilters=applyfilters, applyparentfilters=applyparentfilters) extensions_output = StringIO() kwargs = {} if configuration.extensions.ENABLED: if executeProcessCommits(db, user, review, commits, None, commitset.getHeads().pop(), extensions_output): kwargs["extensions_output"] = extensions_output.getvalue().lstrip() if trackedbranch: cursor = db.cursor() cursor.execute("""INSERT INTO trackedbranches (repository, local_name, remote, remote_name, forced, delay) VALUES (%s, %s, %s, %s, false, '1 hour') RETURNING id""", (repository_id, branch, trackedbranch["remote"], trackedbranch["name"])) trackedbranch_id = cursor.fetchone()[0] cursor.execute("""INSERT INTO trackedbranchusers (branch, uid) VALUES (%s, %s)""", (trackedbranch_id, user.id)) db.commit() pid = int(open(configuration.services.BRANCHTRACKER["pidfile_path"]).read().strip()) os.kill(pid, signal.SIGHUP) return OperationResult(review_id=review.id, **kwargs)
def process(req, db, user, repository_id, commit_ids, reviewfilters, applyfilters, applyparentfilters): reviewfilters = parseReviewFilters(db, reviewfilters) repository = gitutils.Repository.fromId(db, repository_id) commits = [gitutils.Commit.fromId(db, repository, commit_id) for commit_id in commit_ids] all_reviewers, all_watchers = getReviewersAndWatchers(db, repository, commits, reviewfilters=reviewfilters, applyfilters=applyfilters, applyparentfilters=applyparentfilters) document = htmlutils.Document(req) generateReviewersAndWatchersTable(db, repository, document, all_reviewers, all_watchers, applyfilters=applyfilters, applyparentfilters=applyparentfilters) return OperationResult(html=document.render(plain=True))