Added a 'recent drafts' page, showing drafs submitted the last 7 days.

- Legacy-Id: 15099
This commit is contained in:
Henrik Levkowetz 2018-05-01 17:55:22 +00:00
parent e223ba5e2c
commit d076a1728c
5 changed files with 56 additions and 1 deletions

View file

@ -64,6 +64,7 @@ urlpatterns = [
url(r'^all/?$', views_search.index_all_drafts),
url(r'^active/?$', views_search.index_active_drafts),
url(r'^recent/?$', views_search.recent_drafts),
url(r'^select2search/(?P<model_name>(document|docalias))/(?P<doc_type>draft)/$', views_search.ajax_select2_search_docs),
url(r'^%(name)s(?:/%(rev)s)?/$' % settings.URL_REGEXPS, views_doc.document_main),

View file

@ -46,7 +46,7 @@ from django.utils.cache import _generate_cache_key
import debug # pyflakes:ignore
from ietf.doc.models import ( Document, DocHistory, DocAlias, State,
LastCallDocEvent, IESG_SUBSTATE_TAGS )
LastCallDocEvent, NewRevisionDocEvent, IESG_SUBSTATE_TAGS )
from ietf.doc.fields import select2_id_doc_name_json
from ietf.doc.utils import get_search_cache_key
from ietf.group.models import Group
@ -449,6 +449,22 @@ def drafts_in_iesg_process(request):
"title": title,
})
def recent_drafts(request, days=7):
since = datetime.datetime.now()-datetime.timedelta(days=days)
state = State.objects.get(type='draft', slug='active')
events = NewRevisionDocEvent.objects.filter(time__gt=since)
names = [ e.doc.name for e in events ]
docs = Document.objects.filter(name__in=names, states=state)
results, meta = prepare_document_table(request, docs, query={'sort':'-date', }, max_results=len(names))
pages = 0
for doc in results:
pages += doc.pages
return render(request, 'doc/recent_drafts.html', {
'docs':results, 'meta':meta, 'pages':pages, 'days': days,
})
def index_all_drafts(request):
# try to be efficient since this view returns a lot of data
categories = []

View file

@ -470,6 +470,12 @@ class SubmitTests(TestCase):
self.assertTrue("New Version Notification" in outbox[-1]["Subject"])
self.assertTrue(name in unicode(outbox[-1]))
self.assertTrue("mars" in unicode(outbox[-1]))
#
r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts'))
self.assertEqual(r.status_code, 200)
self.assertIn(draft.name, unicontent(r))
self.assertIn(draft.title, unicontent(r))
def test_submit_existing_txt(self):
self.submit_existing(["txt"])
@ -587,6 +593,11 @@ class SubmitTests(TestCase):
draft = Document.objects.get(docalias__name=name)
self.assertEqual(draft.rev, rev)
self.assertEqual(draft.relateddocument_set.filter(relationship_id='replaces').count(), replaces_count)
#
r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts'))
self.assertEqual(r.status_code, 200)
self.assertIn(draft.name, unicontent(r))
self.assertIn(draft.title, unicontent(r))
def test_submit_cancel_confirmation(self):
draft = make_test_data()

View file

@ -44,6 +44,7 @@
<ul class="dropdown-menu" role="menu">
{% endif %}
<li><a href="{% url "ietf.doc.views_search.search" %}">Search</a></li>
<li><a href="{% url "ietf.doc.views_search.recent_drafts" %}">Recent drafts</a></li>
<li><a href="{% url "ietf.submit.views.upload_submission" %}">Draft submission</a></li>
{% if user and user.is_authenticated %}

View file

@ -0,0 +1,26 @@
{% extends "base.html" %}
{# Copyright The IETF Trust 2015, All Rights Reserved #}
{% load origin staticfiles %}
{% block pagehead %}
<link rel="stylesheet" href="{% static "jquery.tablesorter/css/theme.bootstrap.min.css" %}">
{% endblock %}
{% block title %}Internet-Drafts submitted during the last {{days|default:7}} days{% endblock %}
{% block content %}
{% origin %}
<h1>
Internet-Drafts submitted during the last {{days|default:7}} days
{% if pages %}
<small class="padded-left">{{ pages }} pages</small>
{% endif %}
</h1>
{% include "doc/search/search_results.html" %}
{% endblock %}
{% block js %}
<script src="{% static "jquery.tablesorter/js/jquery.tablesorter.combined.min.js" %}"></script>
{% endblock %}