SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit acee6e87 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add DeleteView for Ticket, and admin for Followup

parent 8bd98f3a
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ from django.contrib import admin
from guardian.admin import GuardedModelAdmin
from .models import Queue, Ticket
from .models import Queue, Ticket, Followup
class QueueAdmin(GuardedModelAdmin):
......@@ -16,7 +16,12 @@ class QueueAdmin(GuardedModelAdmin):
admin.site.register(Queue, QueueAdmin)
class FollowupInline(admin.TabularInline):
model = Followup
extra = 0
class TicketAdmin(admin.ModelAdmin):
search_fields = ['description', 'defined_by']
inlines = [FollowupInline]
admin.site.register(Ticket, TicketAdmin)
......@@ -156,7 +156,7 @@ class Followup(models.Model):
ordering = ['timestamp']
def __str__(self):
return '%s, by %s on %s: %s' % (self.ticket, self.by, self.timestamp.strftime("%Y-%m-%d"),
return '%s, by %s on %s: %s' % (self.ticket, self.by, self.timestamp,
self.get_action_display())
def get_absolute_url(self):
......
......@@ -70,9 +70,10 @@
</ul>
{% if ticket.open %}
{% if request.user|is_in_group:ticket.queue.managing_group.name %}
<a class="btn btn-sm btn-danger" role="button" href="{% url 'helpdesk:ticket_delete' pk=ticket.id %}">Delete this Ticket</a>
<a class="btn btn-sm btn-warning" role="button" href="{% url 'helpdesk:ticket_update' pk=ticket.id %}">Update this Ticket</a>
{% if ticket.unassigned %}
<a class="btn btn-sm btn-danger" role="button" href="{% url 'helpdesk:ticket_assign' pk=ticket.id %}">Assign this ticket</a>
<a class="btn btn-sm btn-primary" role="button" href="{% url 'helpdesk:ticket_assign' pk=ticket.id %}">Assign this ticket</a>
{% endif %}
{% endif %}
<a class="btn btn-sm btn-primary" role="button" href="{% url 'helpdesk:ticket_followup' pk=ticket.id %}">Reply/add a Followup</a>
......
{% extends 'helpdesk/base.html' %}
{% load bootstrap %}
{% load restructuredtext %}
{% block pagetitle %}: Delete Ticket{% endblock pagetitle %}
{% block content %}
<div class="row">
<div class="col-12">
<h1 class="highlight">Delete Ticket</h1>
{% include 'helpdesk/ticket_card.html' with ticket=object %}
</div>
</div>
<div class="row">
<div class="col-12">
<form method="post">
{% csrf_token %}
<h3 class="mb-2">Are you sure you want to delete this Ticket (and all associated Followups)?</h3>
<input type="submit" class="btn btn-danger" value="Yes, delete it" />
</form>
</div>
</div>
{% endblock content %}
......@@ -52,6 +52,11 @@ urlpatterns = [
views.TicketUpdateView.as_view(),
name='ticket_update'
),
url(
r'^ticket/(?P<pk>[0-9]+)/delete/$',
views.TicketDeleteView.as_view(),
name='ticket_delete'
),
url(
r'^ticket/(?P<pk>[0-9]+)/assign/$',
views.TicketAssignView.as_view(),
......
......@@ -137,6 +137,15 @@ class TicketUpdateView(UserPassesTestMixin, UpdateView):
return super().form_valid(form)
class TicketDeleteView(UserPassesTestMixin, DeleteView):
model = Ticket
success_url = reverse_lazy('helpdesk:helpdesk')
def test_func(self):
ticket = get_object_or_404(Ticket, pk=self.kwargs.get('pk'))
return self.request.user.groups.filter(name=ticket.queue.managing_group.name).exists()
class TicketAssignView(UserPassesTestMixin, UpdateView):
model = Ticket
form_class = TicketAssignForm
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment