def check_merge(self, request): """ return merge guide widget """ ticket = self.ticket project = self.project pullreq = self.pullreq auto_mergable = self.pullreq.is_auto_mergable() can_fastforward = self.pullreq.can_fastforward() user = request.user # FIXME menghan: 如果latest_commit_status不是针对最后一个commit,那么结果有误导性 latest_commit_status = None commits = pullreq.commits for commit in commits: cs = CommitStatuses(pullreq.from_proj.id, commit.sha) latest_commit_status = cs.latest() if latest_commit_status: break has_perm = project.has_push_perm(user.name) if user else False show_merge_btn = has_perm and not pullreq.is_up_to_date() return st('/pull/merge_guide.html', auto_mergable=auto_mergable, can_fastforward=can_fastforward, latest_commit_status=latest_commit_status, show_merge_btn=show_merge_btn, project=project, pullreq=pullreq, user=user, ticket=ticket, )
def check_merge(self, request): """ return merge guide widget """ ticket = self.ticket project = self.project pullreq = self.pullreq auto_mergable = self.pullreq.is_auto_mergable() can_fastforward = self.pullreq.can_fastforward() user = request.user # FIXME menghan: 如果latest_commit_status不是针对最后一个commit,那么结果有误导性 latest_commit_status = None commits = pullreq.commits for commit in commits: cs = CommitStatuses(pullreq.from_proj.id, commit.sha) latest_commit_status = cs.latest() if latest_commit_status: break has_perm = project.has_push_perm(user.name) if user else False show_merge_btn = has_perm and not pullreq.is_up_to_date() return st( '/pull/merge_guide.html', auto_mergable=auto_mergable, can_fastforward=can_fastforward, latest_commit_status=latest_commit_status, show_merge_btn=show_merge_btn, project=project, pullreq=pullreq, user=user, ticket=ticket, )
def _add_status(self, request, sha): cs = CommitStatuses(self.project.id, sha) state = request.get_form_var('state') target_url = request.get_form_var('target_url') description = request.get_form_var('description') s = cs.add(state, target_url, description, 'qaci') self._push_qaci_noti(sha, state, target_url) request.response.set_status(201) return json.dumps(s.as_dict())
def _q_lookup(self, request, sha): if request.method == 'POST': return self._add_status(request, sha) cs = CommitStatuses(self.project.id, sha) if re.match(r'^\d+$', sha): # using id got one s = cs.get(sha) if s: return json.dumps(s.as_dict()) else: raise TraversalError() else: statuses = cs.all() statuses = [s.as_dict() for s in statuses] return json.dumps(statuses)