Mercurial > kallithea
changeset 4322:96bd919192b0
pull requests: simple editing
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 10 Dec 2013 19:30:37 +0100 |
parents | f4c9b0f76d79 |
children | 65a964fc9053 |
files | kallithea/config/routing.py kallithea/controllers/pullrequests.py kallithea/model/forms.py kallithea/templates/pullrequests/pullrequest_show.html |
diffstat | 4 files changed, 101 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/config/routing.py Fri Jul 18 18:44:54 2014 +0200 +++ b/kallithea/config/routing.py Tue Dec 10 19:30:37 2013 +0100 @@ -698,6 +698,11 @@ controller='pullrequests', action='show', conditions=dict(function=check_repo, method=["GET"])) + rmap.connect('pullrequest_post', + '/{repo_name:.*?}/pull-request/{pull_request_id}', + controller='pullrequests', + action='post', conditions=dict(function=check_repo, + method=["POST"])) rmap.connect('pullrequest_update', '/{repo_name:.*?}/pull-request/{pull_request_id}', controller='pullrequests',
--- a/kallithea/controllers/pullrequests.py Fri Jul 18 18:44:54 2014 +0200 +++ b/kallithea/controllers/pullrequests.py Tue Dec 10 19:30:37 2013 +0100 @@ -55,7 +55,7 @@ from kallithea.model.repo import RepoModel from kallithea.model.comment import ChangesetCommentsModel from kallithea.model.changeset_status import ChangesetStatusModel -from kallithea.model.forms import PullRequestForm +from kallithea.model.forms import PullRequestForm, PullRequestPostForm from kallithea.lib.utils2 import safe_int from kallithea.controllers.changeset import anchor_url, _ignorews_url,\ _context_url, get_line_ctx, get_ignore_ws @@ -382,7 +382,7 @@ title = _form['pullrequest_title'] if not title: title = '%s#%s to %s' % (org_repo, org_ref.split(':', 2)[1], other_repo) - description = _form['pullrequest_desc'] + description = _form['pullrequest_desc'].strip() or _('No description') try: pull_request = PullRequestModel().create( self.authuser.user_id, org_repo, org_ref, other_repo, @@ -404,6 +404,25 @@ @NotAnonymous() @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin') + def post(self, repo_name, pull_request_id): + repo = RepoModel()._get_repo(repo_name) + pull_request = PullRequest.get_or_404(pull_request_id) + + _form = PullRequestPostForm()().to_python(request.POST) + + pull_request.title = _form['pullrequest_title'] + pull_request.description = _form['pullrequest_desc'].strip() or _('No description') + + Session().commit() + h.flash(_('Pull request updated'), category='success') + + return redirect(url('pullrequest_show', repo_name=repo.repo_name, + pull_request_id=pull_request_id)) + + @LoginRequired() + @NotAnonymous() + @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', + 'repository.admin') @jsonify def update(self, repo_name, pull_request_id): pull_request = PullRequest.get_or_404(pull_request_id)
--- a/kallithea/model/forms.py Fri Jul 18 18:44:54 2014 +0200 +++ b/kallithea/model/forms.py Tue Dec 10 19:30:37 2013 +0100 @@ -502,6 +502,17 @@ return _PullRequestForm +def PullRequestPostForm(): + class _PullRequestPostForm(formencode.Schema): + allow_extra_fields = True + filter_extra_fields = True + + pullrequest_title = v.UnicodeString(strip=True, required=True) + pullrequest_desc = v.UnicodeString(strip=True, required=False) + + return _PullRequestPostForm + + def GistForm(lifetime_options): class _GistForm(formencode.Schema):
--- a/kallithea/templates/pullrequests/pullrequest_show.html Fri Jul 18 18:44:54 2014 +0200 +++ b/kallithea/templates/pullrequests/pullrequest_show.html Tue Dec 10 19:30:37 2013 +0100 @@ -24,14 +24,59 @@ </div> <div class="form pr-box" style="float: left"> - <div class="pr-details-title ${'closed' if c.pull_request.is_closed() else ''}"> - ${_('Title')}: ${c.pull_request.title} - %if c.pull_request.is_closed(): - (${_('Closed')}) + <div class="pr-details-title ${'closed' if c.pull_request.is_closed() else ''}"> + ${_('Title')}: ${c.pull_request.title} + %if c.pull_request.is_closed(): + (${_('Closed')}) + %endif + </div> + <div id="pr-summary" class="fields"> + + <div class="field pr-not-edit" style="min-height:37px"> + <div class="label-summary"> + <label>${_('Description')}:</label> + %if not c.pull_request.is_closed() and (h.HasPermissionAny('hg.admin', 'repository.admin')() or c.pull_request.author.user_id == c.authuser.user_id): + <div style="margin: 5px"> + <a class="btn btn-mini" onclick="YUD.setStyle('pr-edit-form','display','');YUD.setStyle(YUD.getElementsByClassName('pr-not-edit'),'display','none')">${_("Edit")}</a> + </div> %endif + </div> + <div class="input"> + <div style="white-space:pre-wrap; line-height: 14px">${h.urlify_commit(c.pull_request.description, c.pull_request.org_repo.repo_name)}</div> + </div> </div> - <div id="summary" class="fields"> - <div class="field"> + + %if not c.pull_request.is_closed() and (h.HasPermissionAny('hg.admin', 'repository.admin')() or c.pull_request.author.user_id == c.authuser.user_id): + <div id="pr-edit-form" style="display:none"> + ${h.form(url('pullrequest_post', repo_name=c.repo_name, pull_request_id=c.pull_request.pull_request_id), method='post', id='pull_request_form')} + + <div class="field"> + <div class="label-summary"> + <label for="pullrequest_title">${_('Title')}:</label> + </div> + <div class="input"> + ${h.text('pullrequest_title',class_="large",value=c.pull_request.title,placeholder=_('Summarize the changes'))} + </div> + </div> + + <div class="field"> + <div class="label-summary label-textarea"> + <label for="pullrequest_desc">${_('Description')}:</label> + </div> + <div class="textarea text-area editor"> + ${h.textarea('pullrequest_desc',size=30,content=c.pull_request.description,placeholder=_('Write a short description on this pull request'))} + </div> + <div class="buttons"> + ${h.submit('save',_('Save'),class_="btn btn-mini")} + ${h.reset('reset',_('Cancel'),class_="btn btn-mini",onclick="YUD.setStyle('pr-edit-form','display','none');YUD.setStyle(YUD.getElementsByClassName('pr-not-edit'),'display','')")} + </div> + </div> + + ${h.end_form()} + </div> + %endif + + <div class="field"> <div class="label-summary"> <label>${_('Review status')}:</label> </div> @@ -50,8 +95,8 @@ %endif </div> </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Still not reviewed by')}:</label> </div> @@ -62,8 +107,8 @@ <div>${_('Pull request was reviewed by all reviewers')}</div> %endif </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Origin repository')}:</label> </div> @@ -75,8 +120,8 @@ <span class="spantag"><a href="${h.url('summary_home', repo_name=c.pull_request.org_repo.repo_name, anchor=c.org_ref_name)}">${c.org_ref_type}: ${c.org_ref_name}</a></span> </div> </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Target repository')}:</label> </div> @@ -87,8 +132,8 @@ <span class="spantag"><a href="${h.url('summary_home', repo_name=c.pull_request.other_repo.repo_name, anchor=c.other_ref_name)}">${c.other_ref_type}: ${c.other_ref_name}</a></span> </div> </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Pull changes')}:</label> </div> @@ -102,24 +147,16 @@ %endif </div> </div> - </div> - <div class="field"> - <div class="label-summary"> - <label>${_('Description')}:</label> - </div> - <div class="input"> - <div style="white-space:pre-wrap">${h.urlify_commit(c.pull_request.description, c.pull_request.org_repo.repo_name)}</div> - </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Created on')}:</label> </div> <div class="input"> <div>${h.fmt_date(c.pull_request.created_on)}</div> </div> - </div> - <div class="field"> + </div> + <div class="field"> <div class="label-summary"> <label>${_('Created by')}:</label> </div> @@ -132,7 +169,7 @@ <span><a href="mailto:${c.pull_request.author.email}">${c.pull_request.author.email}</a></span><br/> </div> </div> - </div> + </div> </div> </div> ## REVIEWERS