Commit 937ea70a authored by jc's avatar jc
Browse files

Adds new status 'resolved' + reopen feature

parent 4f9f43f9
......@@ -67,6 +67,7 @@ STATUS = (
('verified', _('Verified')),
('duplicate', _('Duplicate')),
('ooscope', _('Out of scope')),
('resolved', _('Resolved')),
('closed', _('Closed')),
......@@ -102,12 +103,15 @@ class Violation(models.Model):
old = models.BooleanField(default="False")
creation_date = models.DateField(auto_now_add=True)
def confirmations(self):
return self.confirmation_set.filter(key='').count()
def __unicode__(self):
return "#%s %s/%s" % (,, self.operator)
class Admin:
def confirmations(self):
return self.confirmation_set.filter(key='').count()
def operator(self):
......@@ -115,8 +119,14 @@ class Violation(models.Model):
def get_absolute_url(self):
return reverse('violation_url', args=[])
def __unicode__(self):
return "#%s %s/%s" % (,, self.operator)
def is_resolved(self):
return self.state == 'resolved'
def reopen_if_needed(self):
if self.is_resolved:
self.state = 'new'
class Comment(models.Model):
submitter_email = models.EmailField()
......@@ -112,14 +112,24 @@ def moderate(request):
return HttpResponseRedirect('/') # Redirect after POST
return render_to_response('view.html', { 'v': v, 'key': request.GET.get('key') },context_instance=RequestContext(request))
from django.db import transaction
def confirm(request, id, name=None):
violation = Violation.objects.filter(pk=id).first()
if violation:
if name:
if Confirmation.objects.filter(email=name, violation=id).count()==0:
msg=_("Thank you for confirming a case. To finalize your confirmation please validate using your confirmation key.\nYour confirmation key is %s/%s%s")
actid=sendverifymail('confirm/',name, msg)
c=Confirmation(key=actid, email=name, violation=Violation.objects.get(pk=id))
c=Confirmation(key=actid, email=name, violation=violation)
# should except IntegrityError properly
return HttpResponse(unicode(_('Thank you, this has been already confirmed')))
return HttpResponse(unicode(_('Thank you for your confirmation')))
......@@ -67,11 +67,16 @@ $("#sortedList").tablesorter({
<td><a class="cell-link" href="{{ violation.get_absolute_url }}">{{|media }}</a></td>
<td>{{ violation.confirmations }}</td>
{% if violation.is_resolved %}
<button role="button" class="btn btn-default" data-toggle="modal" data-target="#modal-{{ }}">{% trans "Reopen" %}</button>
{% else %}
<button role="button" class="btn btn-default" data-toggle="modal" data-target="#modal-{{ }}">{% trans "Me too!" %}</button>
{% endif %}
<div class="modal fade" id="modal-{{ }}" tabindex="-1" role="dialog" aria-labelledby="modal-label-{{ }}" data-backdrop="false">
<div class="modal-dialog">
<div class="modal-content">
<form method="post" class="metoo inline-from" action="/confirm/{{ }}" id="i{{ }}">
<form method="post" class="metoo inline-from" action="/confirm/{{ }}" id="{{ }}">
<div class="modal-body">
<div class="form-group">
<label for="list-email-{{ }}">{% trans "In order to <strong>confirm</strong> this report, please enter your email address" %}</label>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment