Skip to content

Commit

Permalink
added comment functionality #14
Browse files Browse the repository at this point in the history
  • Loading branch information
zeroq committed May 5, 2019
1 parent dfc61c7 commit a571aea
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 6 deletions.
11 changes: 10 additions & 1 deletion kraut_incident/forms.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4

from django.forms import ModelForm, widgets
from kraut_incident.models import Incident, Contact, Handler
from kraut_incident.models import Incident, Contact, Handler, IncidentComment

class HandlerForm(ModelForm):
class Meta:
Expand Down Expand Up @@ -40,3 +40,12 @@ class Meta:
'category': widgets.Select(attrs={'class': 'form-control'}),
'severity': widgets.Select(attrs={'class': 'form-control'}),
}

class IncidentCommentForm(ModelForm):
class Meta:
model = IncidentComment
fields = ['ctext']

def __init__(self, *args, **kwargs):
super(IncidentCommentForm, self).__init__(*args, **kwargs)
self.fields['ctext'].widget.attrs.update({'class' : 'form-control', 'id': 'incidentComment'})
7 changes: 7 additions & 0 deletions kraut_incident/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4

from django.db import models
from django.contrib.auth.models import User

import random

Expand Down Expand Up @@ -159,3 +160,9 @@ class Incident(models.Model):
def __unicode__(self):
return u"%s" % (self.title)


class IncidentComment(models.Model):
ctext = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
creation_time = models.DateTimeField(auto_now_add=True)
incident_reference = models.ForeignKey(Incident, on_delete=models.CASCADE)
2 changes: 1 addition & 1 deletion kraut_incident/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
url(r'^incident/(?P<incident_id>\d+)/view/$', views.view_incident, name='view_incident'),
url(r'^incident/(?P<incident_id>\d+)/update/header/$', views.update_incident_header, name='update_incident_header'),
url(r'^incident/(?P<incident_id>\d+)/add/comment/$', views.comment_incident, name='comment_incident'),

url(r'^incident/(?P<incident_id>\d+)/del/comment/(?P<comment_id>\d+)/$', views.delete_comment_incident, name='delete_comment_incident'),
url(r'^create_contact/$', views.create_contact, name='create_contact'),
url(r'^create_handler/$', views.create_handler, name='create_handler'),
]
Expand Down
53 changes: 49 additions & 4 deletions kraut_incident/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

from kraut_intel.utils import get_icon_for_namespace

from kraut_incident.forms import IncidentForm, ContactForm, HandlerForm
from kraut_incident.models import Contact, Handler, Incident
from kraut_incident.forms import IncidentForm, ContactForm, HandlerForm, IncidentCommentForm
from kraut_incident.models import Contact, Handler, Incident, IncidentComment
from kraut_incident.utils import slicedict

# Create your views here.
Expand Down Expand Up @@ -55,10 +55,49 @@ def update_incident_header(request, incident_id):

@login_required
def comment_incident(request, incident_id):
"""Add comment to incident
"""
context = {}
return render(request, 'kraut_incident/incident_list.html', context)

if request.method == "POST":
form = IncidentCommentForm(request.POST)
if form.is_valid():
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)
data = {
'ctext': form.cleaned_data['ctext'],
'author': request.user,
'incident_reference': inc
}
new_comment = IncidentComment.objects.get_or_create(**data)
messages.info(request, "Comment successfully added")
else:
if form.errors:
for field in form:
for error in field.errors:
messages.error(request, '%s: %s' % (field.name, error))
return HttpResponseRedirect(reverse("incidents:view_incident", kwargs={'incident_id': incident_id}))

@login_required
def delete_comment_incident(request, incident_id, comment_id):
"""Delete a comment for given 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:
com = IncidentComment.objects.get(pk=int(comment_id), incident_reference=inc, author=request.user)
except IncidentComment.DoesNotExist:
messages.error(request, 'The requested comment does not exist!')
return render(request, 'kraut_incident/incident_list.html', context)
com.delete()
messages.info(request, 'Comment successfully deleted.')
return HttpResponseRedirect(reverse("incidents:view_incident", kwargs={'incident_id': incident_id}))

@login_required
def view_incident(request, incident_id):
Expand All @@ -84,6 +123,12 @@ def view_incident(request, incident_id):
else:
context['usernamespace'] = 'nospace'
context['namespaceicon'] = static('ns_icon/octalpus.png')
try:
comments = IncidentComment.objects.filter(incident_reference=inc).order_by('-creation_time')
except:
comments = None
context['comments'] = comments
context['commentform'] = IncidentCommentForm()
context['num_incident_handlers'] = inc.incident_handler.count()
context['num_incident_contacts'] = inc.contacts.count()
context['num_incident_tasks'] = inc.tasks.count()
Expand Down

0 comments on commit a571aea

Please sign in to comment.