From f6d91b7f73edd4818a6267caa8f56a867e869a6e Mon Sep 17 00:00:00 2001 From: zeroq Date: Wed, 12 Jun 2019 22:24:26 +0200 Subject: [PATCH] #14 change task status --- kraut_incident/models.py | 3 + .../kraut_incident/incident_details.html | 9 ++- kraut_incident/urls.py | 3 + kraut_incident/views.py | 61 +++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/kraut_incident/models.py b/kraut_incident/models.py index ffc322d..8dbfba4 100644 --- a/kraut_incident/models.py +++ b/kraut_incident/models.py @@ -60,6 +60,9 @@ class Task(models.Model): status = models.CharField(max_length=2, choices=status_choices, default='op') responsible = models.ManyToManyField(Contact, blank=True) + class Meta: + ordering = ['-status'] + class Account(models.Model): """Describe an account """ diff --git a/kraut_incident/templates/kraut_incident/incident_details.html b/kraut_incident/templates/kraut_incident/incident_details.html index 279cde7..8bc9236 100644 --- a/kraut_incident/templates/kraut_incident/incident_details.html +++ b/kraut_incident/templates/kraut_incident/incident_details.html @@ -229,14 +229,19 @@

Incident Information
- + {% for t in incident.tasks.all %} - + + {% endfor %} diff --git a/kraut_incident/urls.py b/kraut_incident/urls.py index 47a108d..24e35c8 100644 --- a/kraut_incident/urls.py +++ b/kraut_incident/urls.py @@ -13,6 +13,9 @@ url(r'^incident/(?P\d+)/add/contact/$', views.add_contact_incident, name='add_contact_incident'), url(r'^incident/(?P\d+)/remove/handler/(?P\d+)/$', views.remove_handler_incident, name='remove_handler_incident'), url(r'^incident/(?P\d+)/remove/contact/(?P\d+)/$', views.remove_contact_incident, name='remove_contact_incident'), + url(r'^incident/(?P\d+)/remove/task/(?P\d+)/$', views.remove_task_incident, name='remove_task_incident'), + url(r'^incident/(?P\d+)/resolve/task/(?P\d+)/$', views.resolve_task_incident, name='resolve_task_incident'), + url(r'^incident/(?P\d+)/abort/task/(?P\d+)/$', views.abort_task_incident, name='abort_task_incident'), url(r'^incident/(?P\d+)/add/comment/$', views.comment_incident, name='comment_incident'), url(r'^incident/(?P\d+)/del/comment/(?P\d+)/$', views.delete_comment_incident, name='delete_comment_incident'), url(r'^create_contact/$', views.create_contact, name='create_contact'), diff --git a/kraut_incident/views.py b/kraut_incident/views.py index 28fa92a..2ca71d1 100644 --- a/kraut_incident/views.py +++ b/kraut_incident/views.py @@ -15,6 +15,8 @@ from kraut_incident.models import Contact, Handler, Incident, IncidentComment, TemplateTask, Task from kraut_incident.utils import slicedict +import datetime + # Create your views here. @login_required @@ -27,6 +29,65 @@ def list_incidents(request): context = {} return render(request, 'kraut_incident/incident_list.html', context) +@login_required +def abort_task_incident(request, incident_id, task_id): + """abort a task from an incident + """ + context = {} + try: + inc = Incident.objects.get(id=incident_id) + except Incident.DoesNotExist: + messages.error(request, 'The requested incident does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist: + messages.error(request, 'The requested task does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + task.status = 'ab' + task.finish_time = datetime.datetime.now() + task.save() + return HttpResponseRedirect(reverse("incidents:view_incident", kwargs={'incident_id': incident_id})) + +@login_required +def resolve_task_incident(request, incident_id, task_id): + """resolve a task from an incident + """ + context = {} + try: + inc = Incident.objects.get(id=incident_id) + except Incident.DoesNotExist: + messages.error(request, 'The requested incident does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist: + messages.error(request, 'The requested task does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + task.status = 'do' + task.finish_time = datetime.datetime.now() + task.save() + return HttpResponseRedirect(reverse("incidents:view_incident", kwargs={'incident_id': incident_id})) + +@login_required +def remove_task_incident(request, incident_id, task_id): + """remove a task from an incident + """ + context = {} + try: + inc = Incident.objects.get(id=incident_id) + except Incident.DoesNotExist: + messages.error(request, 'The requested incident does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + try: + task = Task.objects.get(id=task_id) + except Task.DoesNotExist: + messages.error(request, 'The requested task does not exist!') + return render(request, 'kraut_incident/incident_list.html', context) + inc.tasks.remove(task) + inc.save() + return HttpResponseRedirect(reverse("incidents:view_incident", kwargs={'incident_id': incident_id})) + @login_required def remove_contact_incident(request, incident_id, contact_id): """remove contact person from incident
NameStatusShort Description
NameStatusShort Description
{{ t.name }}{{ t.get_status_display }}{% if t.get_status_display == 'Open' %}Open{% else %}{{ t.get_status_display }}{% endif %} {{ t.description }} + + + +