[PATCH v3] pullrequests: add PullRequest.nice_id class method

Thomas De Schampheleire patrickdepinguin at gmail.com
Fri May 1 15:34:25 EDT 2015


On Fri, May 1, 2015 at 9:30 PM, Thomas De Schampheleire
<patrickdepinguin at gmail.com> wrote:
> # HG changeset patch
> # User Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>
> # Date 1429265659 -7200
> #      Fri Apr 17 12:14:19 2015 +0200
> # Node ID f4093cdbf80ae12e9932d69f4ec45ada2afac543
> # Parent  b5e399286ce50f2daf791b154653a536431a0205
> pullrequests: add PullRequest.nice_id class method
>
> Currently, a pull request id is referenced as #5, and the '#' symbol is
> fixed and repeated in several places.  This commit adds a class method
> nice_id, that returns a string reference to the pull request,
> currently in the form '#5'.
>
> This property could be overridden by an organization if they need references
> in another form, for example PR-5.
>
> diff --git a/kallithea/lib/helpers.py b/kallithea/lib/helpers.py
> --- a/kallithea/lib/helpers.py
> +++ b/kallithea/lib/helpers.py
> @@ -423,7 +423,7 @@
>  #==============================================================================
>  from kallithea.lib.vcs.utils import author_name, author_email
>  from kallithea.lib.utils2 import credentials_filter, age as _age
> -from kallithea.model.db import User, ChangesetStatus
> +from kallithea.model.db import User, ChangesetStatus, PullRequest
>
>  age = lambda  x, y=False: _age(x, y)
>  capitalize = lambda x: x.capitalize()
> @@ -735,13 +735,16 @@
>          return group_name
>
>      def get_pull_request():
> -        pull_request_id = action_params
> +        pull_request_id = int(action_params)
> +        nice_id = PullRequest.nice_id(pull_request_id)
> +
>          deleted = user_log.repository is None
>          if deleted:
>              repo_name = user_log.repository_name
>          else:
>              repo_name = user_log.repository.repo_name
> -        return link_to(_('Pull request #%s') % pull_request_id,
> +
> +        return link_to(_('Pull request %s') % nice_id,
>                      url('pullrequest_show', repo_name=repo_name,
>                      pull_request_id=pull_request_id))
>
> diff --git a/kallithea/model/comment.py b/kallithea/model/comment.py
> --- a/kallithea/model/comment.py
> +++ b/kallithea/model/comment.py
> @@ -126,9 +126,9 @@
>              comment_url = pull_request.url(canonical=True,
>                  anchor='comment-%s' % comment.comment_id)
>              subj = safe_unicode(
> -                h.link_to('Re pull request #%(pr_id)s: %(desc)s %(line)s' % \
> +                h.link_to('Re pull request %(pr_nice_id)s: %(desc)s %(line)s' % \
>                            {'desc': desc,
> -                           'pr_id': comment.pull_request.pull_request_id,
> +                           'pr_nice_id': PullRequest.nice_id(comment.pull_request.pull_request_id),
>                             'line': line},
>                            comment_url)
>              )
> @@ -144,7 +144,7 @@
>              #set some variables for email notification
>              email_kwargs = {
>                  'pr_title': pull_request.title,
> -                'pr_id': pull_request.pull_request_id,
> +                'pr_nice_id': PullRequest.nice_id(pull_request.pull_request_id),
>                  'status_change': status_change,
>                  'closing_pr': closing_pr,
>                  'pr_comment_url': comment_url,
> diff --git a/kallithea/model/db.py b/kallithea/model/db.py
> --- a/kallithea/model/db.py
> +++ b/kallithea/model/db.py
> @@ -1387,9 +1387,10 @@
>              pr_id = pr_repo = None
>              if stat.pull_request:
>                  pr_id = stat.pull_request.pull_request_id
> +                pr_nice_id = PullRequest.nice_id(pr_id)
>                  pr_repo = stat.pull_request.other_repo.repo_name
>              grouped[stat.revision] = [str(stat.status), stat.status_lbl,
> -                                      pr_id, pr_repo]
> +                                      pr_id, pr_repo, pr_nice_id]
>          return grouped
>
>      def _repo_size(self):
> @@ -2305,6 +2306,11 @@
>              .first()
>          return str(status.status) if status else ''
>
> +    @classmethod
> +    def nice_id(cls, pull_request_id):
> +        '''Return a string reference to this pull request'''
> +        return '#%d' % pull_request_id
> +
>      def __json__(self):
>          return dict(
>              revisions=self.revisions
> diff --git a/kallithea/model/notification.py b/kallithea/model/notification.py
> --- a/kallithea/model/notification.py
> +++ b/kallithea/model/notification.py
> @@ -298,8 +298,8 @@
>              # self.TYPE_PASSWORD_RESET
>              self.TYPE_REGISTRATION: _('New user %(new_username)s registered'),
>              # self.TYPE_DEFAULT
> -            self.TYPE_PULL_REQUEST: _('Review request on %(repo_name)s pull request #%(pr_id)s from %(ref)s by %(pr_username)s'),
> -            self.TYPE_PULL_REQUEST_COMMENT: _('Comment on %(repo_name)s pull request #%(pr_id)s from %(ref)s by %(comment_username)s'),
> +            self.TYPE_PULL_REQUEST: _('Review request on %(repo_name)s pull request %(pr_nice_id)s from %(ref)s by %(pr_username)s'),
> +            self.TYPE_PULL_REQUEST_COMMENT: _('Comment on %(repo_name)s pull request %(pr_nice_id)s from %(ref)s by %(comment_username)s'),
>          }
>
>      def get_email_description(self, type_, **kwargs):
> diff --git a/kallithea/model/pull_request.py b/kallithea/model/pull_request.py
> --- a/kallithea/model/pull_request.py
> +++ b/kallithea/model/pull_request.py
> @@ -129,10 +129,10 @@
>                                       pull_request_id=pr.pull_request_id)]
>          subject = safe_unicode(
>              h.link_to(
> -              _('%(user)s wants you to review pull request #%(pr_id)s: %(pr_title)s') % \
> +              _('%(user)s wants you to review pull request %(pr_nice_id)s: %(pr_title)s') % \
>                  {'user': pr.author.username,
>                   'pr_title': pr.title,
> -                 'pr_id': pr.pull_request_id},
> +                 'pr_nice_id': PullRequest.nice_id(pr.pull_request_id)},
>                  pr_url)
>              )
>          body = pr.description
> @@ -144,7 +144,7 @@
>              'pr_url': pr_url,
>              'pr_revisions': revision_data,
>              'repo_name': pr.other_repo.repo_name,
> -            'pr_id': pr.pull_request_id,
> +            'pr_nice_id': PullRequest.nice_id(pr.pull_request_id),
>              'ref': org_ref_name,
>              'pr_username': pr.author.username,
>              'threading': threading,
> diff --git a/kallithea/templates/changelog/changelog.html b/kallithea/templates/changelog/changelog.html
> --- a/kallithea/templates/changelog/changelog.html
> +++ b/kallithea/templates/changelog/changelog.html
> @@ -89,7 +89,7 @@
>                            %if c.statuses.get(cs.raw_id):
>                              <div class="changeset-status-ico">
>                              %if c.statuses.get(cs.raw_id)[2]:
> -                              <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
> +                              <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request %s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[4])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
>                                  <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
>                                </a>
>                              %else:
> diff --git a/kallithea/templates/changelog/changelog_summary_data.html b/kallithea/templates/changelog/changelog_summary_data.html
> --- a/kallithea/templates/changelog/changelog_summary_data.html
> +++ b/kallithea/templates/changelog/changelog_summary_data.html
> @@ -17,7 +17,7 @@
>                %if c.statuses.get(cs.raw_id):
>                  <div class="changeset-status-ico shortlog">
>                  %if c.statuses.get(cs.raw_id)[2]:
> -                  <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
> +                  <a class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request %s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[4])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
>                      <i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
>                    </a>
>                  %else:
> diff --git a/kallithea/templates/pullrequests/pullrequest_show.html b/kallithea/templates/pullrequests/pullrequest_show.html
> --- a/kallithea/templates/pullrequests/pullrequest_show.html
> +++ b/kallithea/templates/pullrequests/pullrequest_show.html
> @@ -3,11 +3,11 @@
>  <%namespace name="comment" file="/changeset/changeset_file_comment.html"/>
>
>  <%block name="title">
> -    ${_('%s Pull Request #%s') % (c.repo_name, c.pull_request.pull_request_id)}
> +    ${_('%s Pull Request %s') % (c.repo_name, c.pull_request.nice_id(c.pull_request.pull_request_id))}
>  </%block>
>
>  <%def name="breadcrumbs_links()">
> -    ${_('Pull request #%s from %s#%s') % (c.pull_request.pull_request_id, c.pull_request.org_repo.repo_name, c.cs_branch_name)}
> +    ${_('Pull request %s from %s#%s') % (c.pull_request.nice_id(c.pull_request.pull_request_id), c.pull_request.org_repo.repo_name, c.cs_branch_name)}


This is one particular change I'm not fully sure of: here we're
calling the class method 'nice_id' through an actual object
c.pull_request. Is this OK? It works, because the cls attribute in
nice_id isn't actually used.

If it's not OK, how do I access PullRequest from a mako template?

Thanks,
Thomas


More information about the kallithea-general mailing list