Add RFC Editor undo page, missing test and dump model
- Legacy-Id: 5013
This commit is contained in:
parent
63fb1cbf0c
commit
793856c217
|
@ -3,5 +3,6 @@ from django.conf.urls.defaults import patterns, url
|
|||
urlpatterns = patterns('',
|
||||
url(r'^discrepancies/$', 'ietf.sync.views.discrepancies'),
|
||||
url(r'^(?P<org>\w+)/notify/(?P<notification>\w+)/$', 'ietf.sync.views.notify'),
|
||||
url(r'^rfceditor/undo/', 'ietf.sync.views.rfceditor_undo')
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import subprocess, os
|
||||
|
||||
from django.http import HttpResponse, HttpResponseForbidden, HttpResponseServerError
|
||||
from django.http import HttpResponse, HttpResponseForbidden, HttpResponseServerError, HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.template.loader import render_to_string
|
||||
|
@ -100,3 +100,33 @@ def notify(request, org, notification):
|
|||
help_text=known_notifications[notification],
|
||||
),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def rfceditor_undo(request):
|
||||
"""Undo a DocEvent."""
|
||||
|
||||
if not request.user.is_authenticated() or not has_role(request.user, ("Secretariat", "RFC Editor")):
|
||||
return HttpResponseForbidden("You do not have the necessary permissions to view this page")
|
||||
|
||||
events = StateDocEvent.objects.filter(state_type="draft-rfceditor",
|
||||
time__gte=datetime.datetime.now() - datetime.timedelta(weeks=1)
|
||||
).order_by("-time", "-id")
|
||||
|
||||
if request.method == "POST":
|
||||
try:
|
||||
eid = int(request.POST.get("event", ""))
|
||||
except ValueError:
|
||||
return HttpResponse("Could not parse event id")
|
||||
|
||||
try:
|
||||
e = events.get(id=eid)
|
||||
except StateDocEvent.DoesNotExist:
|
||||
return HttpResponse("Event does not exist")
|
||||
|
||||
e.delete()
|
||||
|
||||
return HttpResponseRedirect(urlreverse("ietf.sync.views.rfceditor_undo"))
|
||||
|
||||
return render_to_response('sync/rfceditor_undo.html',
|
||||
dict(events=events,
|
||||
),
|
||||
context_instance=RequestContext(request))
|
||||
|
|
29
ietf/templates/sync/rfceditor_undo.html
Normal file
29
ietf/templates/sync/rfceditor_undo.html
Normal file
|
@ -0,0 +1,29 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Undo RFC Editor state events{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Undo RFC Editor state events</h1>
|
||||
|
||||
<table class="ietf-table">
|
||||
<tr>
|
||||
<th>Time</th>
|
||||
<th>Document</th>
|
||||
<th>Text</th>
|
||||
<th>Undo</th>
|
||||
</tr>
|
||||
{% for e in events %}
|
||||
<tr class="{% if forloop.counter|divisibleby:2 %}evenrow{% else %}oddrow{% endif %}">
|
||||
<td>{{ e.time|date:"Y-m-d H:i:s"}}</td>
|
||||
<td><a href="{% url doc_history e.doc_id %}">{{ e.doc_id }}</a></td>
|
||||
<td>{{ e.desc|safe }}</td>
|
||||
<td>
|
||||
<form method="post">
|
||||
<input type="hidden" name="event" value="{{ e.id }}"/>
|
||||
<input type="submit" value="Remove"/>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
Loading…
Reference in a new issue