permissions for comments & issue creation/deletion
This commit is contained in:
parent
719f317582
commit
3cb84d971f
3 changed files with 39 additions and 10 deletions
|
@ -35,11 +35,21 @@
|
|||
<a href="{% same_author event.author %}"><b>{{ event.author}}</b></a> {{ event }} {{ event.date|naturaltime }}
|
||||
{% if event.code == event.DESCRIBE %}
|
||||
<div class="pull-right">
|
||||
<a href="{% url 'edit-issue' project.name issue.id %}" class="btn btn-primary btn-xs">Edit</a>
|
||||
{% if perm.delete_issue %}
|
||||
<a href="{% url 'delete-issue' project.name issue.id %}?prev={{ request.path }}" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
{% endif %}
|
||||
{% if perm.modify_issue %}
|
||||
<a href="{% url 'edit-issue' project.name issue.id %}" class="btn btn-primary btn-xs"><span class="glyphicon glyphicon-edit"></span> Edit</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% elif event.code == event.COMMENT %}
|
||||
<div class="pull-right">
|
||||
<a href="{% url 'edit-comment' project.name issue.id event.id %}" class="btn btn-primary btn-xs">Edit</a>
|
||||
{% if perm.delete_comment %}
|
||||
<a href="{% url 'delete-comment' project.name issue.id event.id %}?prev={{ request.path }}" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
{% endif %}
|
||||
{% if perm.modify_comment %}
|
||||
<a href="{% url 'edit-comment' project.name issue.id event.id %}" class="btn btn-primary btn-xs"><span class="glyphicon glyphicon-edit"></span> Edit</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -64,19 +74,19 @@
|
|||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<a href="{% url 'edit-issue' project.name issue.id %}" class="btn btn-default btn-block">Edit this issue</a>
|
||||
<a href="{% url 'edit-issue' project.name issue.id %}" class="btn btn-primary btn-block"><span class="glyphicon glyphicon-edit"></span> Edit this issue</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
{% if issue.closed %}
|
||||
<a href="{% url 'reopen-issue' project.name issue.id %}" class="btn btn-default btn-block">Reopen this issue</a>
|
||||
<a href="{% url 'reopen-issue' project.name issue.id %}" class="btn btn-info btn-block"><span class="glyphicon glyphicon-refresh"></span> Reopen this issue</a>
|
||||
{% else %}
|
||||
<a href="{% url 'close-issue' project.name issue.id %}" class="btn btn-default btn-block">Close this issue</a>
|
||||
<a href="{% url 'close-issue' project.name issue.id %}" class="btn btn-success btn-block"><span class="glyphicon glyphicon-ok-circle"></span> Close this issue</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<a href="{% url 'delete-issue' project.name issue.id %}" class="btn btn-default btn-block">Delete this issue</a>
|
||||
<a href="{% url 'delete-issue' project.name issue.id %}" class="btn btn-danger btn-block"><span class="glyphicon glyphicon-trash"></span> Delete this issue</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -11,8 +11,9 @@ urlpatterns = [
|
|||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/edit$', 'issue.views.issue_edit', name='edit-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/close$', 'issue.views.issue_close', name='close-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/reopen$', 'issue.views.issue_reopen', name='reopen-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/comment$', 'issue.views.issue_comment', name='comment-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/comments/(?P<comment>[0-9]+)/edit$', 'issue.views.issue_comment', name='edit-comment'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/comment$', 'issue.views.issue_edit_comment', name='comment-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/comments/(?P<comment>[0-9]+)/edit$', 'issue.views.issue_edit_comment', name='edit-comment'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/comments/(?P<comment>[0-9]+)/delete$', 'issue.views.issue_delete_comment', name='delete-comment'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/delete$', 'issue.views.issue_delete', name='delete-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/add-label/(?P<label>[0-9]+)$', 'issue.views.issue_add_label', name='add-label-to-issue'),
|
||||
url(r'^(?P<project>[a-z0-9_-]+)/issues/(?P<issue>[0-9]+)/remove-label/(?P<label>[0-9]+)$', 'issue.views.issue_remove_label', name='remove-label-from-issue'),
|
||||
|
|
|
@ -436,16 +436,20 @@ def issue(request, project, issue):
|
|||
return render(request, 'issue/issue.html', c)
|
||||
|
||||
|
||||
@project_perm_required('create_comment')
|
||||
def issue_comment(request, project, issue, comment=None):
|
||||
@login_required
|
||||
def issue_edit_comment(request, project, issue, comment=None):
|
||||
|
||||
issue = get_object_or_404(Issue, project=project, id=issue)
|
||||
|
||||
if comment:
|
||||
if not request.user.has_perm('modify_comment', project):
|
||||
return HttpResponseForbidden()
|
||||
event = get_object_or_404(Event, code=Event.COMMENT,
|
||||
issue=issue, id=comment)
|
||||
init_data = {'comment': event.additionnal_section}
|
||||
else:
|
||||
if not request.user.has_perm('create_comment', project):
|
||||
return HttpResponseForbidden()
|
||||
event = None
|
||||
init_data = None
|
||||
|
||||
|
@ -483,6 +487,19 @@ def issue_comment(request, project, issue, comment=None):
|
|||
return render(request, 'issue/issue_comment.html', c)
|
||||
|
||||
|
||||
@project_perm_required('delete_comment')
|
||||
@confirmation_required('Are you sure to delete this comment?')
|
||||
def issue_delete_comment(request, project, issue, comment):
|
||||
|
||||
comment = get_object_or_404(Event,
|
||||
issue__project=project, issue__pk=issue, id=comment)
|
||||
|
||||
comment.delete()
|
||||
message.success(request, 'Issue deleted successfully.')
|
||||
|
||||
return redirect('show-issue', project.name, issue)
|
||||
|
||||
|
||||
@project_perm_required('manage_issue')
|
||||
def issue_close(request, project, issue):
|
||||
|
||||
|
@ -514,6 +531,7 @@ def issue_reopen(request, project, issue):
|
|||
|
||||
|
||||
@project_perm_required('delete_issue')
|
||||
@confirmation_required('Are you sure to delete this issue?')
|
||||
def issue_delete(request, project, issue):
|
||||
|
||||
issue = get_object_or_404(Issue, project=project, id=issue)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue