diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index af6173708..e7af7f0d9 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -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(document|docalias))/(?Pdraft)/$', views_search.ajax_select2_search_docs), url(r'^%(name)s(?:/%(rev)s)?/$' % settings.URL_REGEXPS, views_doc.document_main), diff --git a/ietf/doc/views_search.py b/ietf/doc/views_search.py index ad8be174b..59d141f78 100644 --- a/ietf/doc/views_search.py +++ b/ietf/doc/views_search.py @@ -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 = [] diff --git a/ietf/submit/tests.py b/ietf/submit/tests.py index d59c1b8c0..d51573ce0 100644 --- a/ietf/submit/tests.py +++ b/ietf/submit/tests.py @@ -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() diff --git a/ietf/templates/base/menu.html b/ietf/templates/base/menu.html index a8a038eca..bcaefc8e0 100644 --- a/ietf/templates/base/menu.html +++ b/ietf/templates/base/menu.html @@ -44,6 +44,7 @@