def update_reviewers(self, pull_request, reviewers_ids): reviewers_ids = set(reviewers_ids) pull_request = self.__get_pull_request(pull_request) current_reviewers = PullRequestReviewers.query()\ .filter(PullRequestReviewers.pull_request== pull_request)\ .all() current_reviewers_ids = set([x.user.user_id for x in current_reviewers]) to_add = reviewers_ids.difference(current_reviewers_ids) to_remove = current_reviewers_ids.difference(reviewers_ids) log.debug("Adding %s reviewers" % to_add) log.debug("Removing %s reviewers" % to_remove) for uid in to_add: _usr = self._get_user(uid) reviewer = PullRequestReviewers(_usr, pull_request) Session().add(reviewer) for uid in to_remove: reviewer = PullRequestReviewers.query()\ .filter(PullRequestReviewers.user_id==uid, PullRequestReviewers.pull_request==pull_request)\ .scalar() if reviewer: Session().delete(reviewer)
def edit_advanced(self, user_id): user_id = safe_int(user_id) user = c.user = User.get_or_404(user_id) if user.username == User.DEFAULT_USER: h.flash(_("You can't edit this user"), category='warning') return redirect(url('users')) c.active = 'advanced' c.perm_user = AuthUser(user_id=user_id, ip_addr=self.ip_addr) c.personal_repo_group = RepoGroup.get_by_group_name(user.username) c.first_admin = User.get_first_super_admin() defaults = user.get_dict() # Interim workaround if the user participated on any pull requests as a # reviewer. has_review = bool(PullRequestReviewers.query().filter( PullRequestReviewers.user_id == user_id).first()) c.can_delete_user = not has_review c.can_delete_user_message = _( 'The user participates as reviewer in pull requests and ' 'cannot be deleted. You can set the user to ' '"inactive" instead of deleting it.') if has_review else '' return htmlfill.render(render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False)
def my_account_my_pullrequests(self): c.my_pull_requests = PullRequest.query()\ .filter(PullRequest.user_id== self.rhodecode_user.user_id)\ .all() c.participate_in_pull_requests = \ [x.pull_request for x in PullRequestReviewers.query()\ .filter(PullRequestReviewers.user_id== self.rhodecode_user.user_id)\ .all()] return render('admin/users/user_edit_my_account_pullrequests.html')
def update_reviewers(self, pull_request, reviewers_ids): reviewers_ids = set(reviewers_ids) pull_request = self.__get_pull_request(pull_request) current_reviewers = PullRequestReviewers.query()\ .filter(PullRequestReviewers.pull_request == pull_request).all() current_reviewers_ids = set( [x.user.user_id for x in current_reviewers]) ids_to_add = reviewers_ids.difference(current_reviewers_ids) ids_to_remove = current_reviewers_ids.difference(reviewers_ids) log.debug("Adding %s reviewers", ids_to_add) log.debug("Removing %s reviewers", ids_to_remove) changed = False for uid in ids_to_add: changed = True _usr = self._get_user(uid) reviewer = PullRequestReviewers(_usr, pull_request) Session().add(reviewer) self.notify_reviewers(pull_request, ids_to_add) for uid in ids_to_remove: changed = True reviewer = PullRequestReviewers.query()\ .filter(PullRequestReviewers.user_id == uid, PullRequestReviewers.pull_request == pull_request)\ .scalar() if reviewer: Session().delete(reviewer) if changed: pull_request.updated_on = datetime.datetime.now() Session().add(pull_request) return ids_to_add, ids_to_remove
def my_account_my_pullrequests(self): c.show_closed = request.GET.get('pr_show_closed') def _filter(pr): s = sorted(pr, key=lambda o: o.created_on, reverse=True) if not c.show_closed: s = filter(lambda p: p.status != PullRequest.STATUS_CLOSED, s) return s c.my_pull_requests = _filter(PullRequest.query()\ .filter(PullRequest.user_id == self.rhodecode_user.user_id)\ .all()) c.participate_in_pull_requests = _filter([ x.pull_request for x in PullRequestReviewers.query()\ .filter(PullRequestReviewers.user_id == self.rhodecode_user.user_id).all()]) return render('admin/users/user_edit_my_account_pullrequests.html')
def my_account_pullrequests(self): c.active = 'pullrequests' self.__load_data() c.show_closed = request.GET.get('pr_show_closed') def _filter(pr): s = sorted(pr, key=lambda o: o.created_on, reverse=True) if not c.show_closed: s = filter(lambda p: p.status != PullRequest.STATUS_CLOSED, s) return s c.my_pull_requests = _filter(PullRequest.query().filter( PullRequest.user_id == c.rhodecode_user.user_id).all()) my_prs = [ x.pull_request for x in PullRequestReviewers.query().filter( PullRequestReviewers.user_id == c.rhodecode_user.user_id).all() ] c.participate_in_pull_requests = _filter(my_prs) return render('admin/my_account/my_account.html')
def get_not_reviewed(self, user_id): return [ x.pull_request for x in PullRequestReviewers.query().filter( PullRequestReviewers.user_id == user_id).all() ]