From 95c2b0769105f40559af66769acbbb817c3156b6 Mon Sep 17 00:00:00 2001
From: Ole Laursen <olau@iola.dk>
Date: Wed, 20 Jun 2012 11:00:35 +0000
Subject: [PATCH] Include _ in allowed document name regexp, we currently have
 7 drafts with _ in the database despite it not being valid - they can be
 found with: select name from doc_document where name like '%\_%' and type_id
 = "draft";  - Legacy-Id: 4477

---
 ietf/idrfc/urls.py | 50 +++++++++++++++++++++++-----------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/ietf/idrfc/urls.py b/ietf/idrfc/urls.py
index 52f4739d8..e45534ac4 100644
--- a/ietf/idrfc/urls.py
+++ b/ietf/idrfc/urls.py
@@ -42,33 +42,33 @@ urlpatterns = patterns('',
     (r'^in-last-call/$', views_search.in_last_call),
     url(r'^ad/(?P<name>[A-Za-z0-9.-]+)/$', views_search.by_ad, name="doc_search_by_ad"),
 
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/((?P<rev>[0-9-]+)/)?$', views_doc.document_main, name="doc_view"),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/history/$', views_doc.document_history, name="doc_history"),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/writeup/$', views_doc.document_writeup, name="doc_writeup"),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/position/$', views_ballot.edit_position, name='doc_edit_position'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/emailposition/$', views_ballot.send_ballot_comment, name='doc_send_ballot_comment'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/$', views_doc.document_ballot, name="doc_ballot"),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/ballot/$', views_doc.document_ballot, name="doc_ballot"),
-    (r'^(?P<name>[A-Za-z0-9.-]+)/doc.json$', views_doc.document_debug),
-    (r'^(?P<name>[A-Za-z0-9.-]+)/_ballot.data$', views_doc.ballot_html), # why is this url so weird instead of just ballot.html?
-    (r'^(?P<name>[A-Za-z0-9.-]+)/ballot.tsv$', views_doc.ballot_tsv),
-    (r'^(?P<name>[A-Za-z0-9.-]+)/ballot.json$', views_doc.ballot_json),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/((?P<rev>[0-9-]+)/)?$', views_doc.document_main, name="doc_view"),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/history/$', views_doc.document_history, name="doc_history"),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/writeup/$', views_doc.document_writeup, name="doc_writeup"),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/position/$', views_ballot.edit_position, name='doc_edit_position'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/emailposition/$', views_ballot.send_ballot_comment, name='doc_send_ballot_comment'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/ballot/(?P<ballot_id>[A-Za-z0-9.-]+)/$', views_doc.document_ballot, name="doc_ballot"),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/ballot/$', views_doc.document_ballot, name="doc_ballot"),
+    (r'^(?P<name>[A-Za-z0-9.-_]+)/doc.json$', views_doc.document_debug),
+    (r'^(?P<name>[A-Za-z0-9.-_]+)/_ballot.data$', views_doc.ballot_html), # why is this url so weird instead of just ballot.html?
+    (r'^(?P<name>[A-Za-z0-9.-_]+)/ballot.tsv$', views_doc.ballot_tsv),
+    (r'^(?P<name>[A-Za-z0-9.-_]+)/ballot.json$', views_doc.ballot_json),
 
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/state/$', views_edit.change_state, name='doc_change_state'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/info/$', views_edit.edit_info, name='doc_edit_info'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/requestresurrect/$', views_edit.request_resurrect, name='doc_request_resurrect'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/resurrect/$', views_edit.resurrect, name='doc_resurrect'),                       
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/addcomment/$', views_edit.add_comment, name='doc_add_comment'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/clearballot/$', views_ballot.clear_ballot, name='doc_clear_ballot'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/undeferballot/$', views_ballot.undefer_ballot, name='doc_undefer_ballot'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/lastcalltext/$', views_ballot.lastcalltext, name='doc_ballot_lastcall'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/ballotwriteupnotes/$', views_ballot.ballot_writeupnotes, name='doc_ballot_writeupnotes'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/approvaltext/$', views_ballot.ballot_approvaltext, name='doc_ballot_approvaltext'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/approveballot/$', views_ballot.approve_ballot, name='doc_approve_ballot'),
-    url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/makelastcall/$', views_ballot.make_last_call, name='doc_make_last_call'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/state/$', views_edit.change_state, name='doc_change_state'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/info/$', views_edit.edit_info, name='doc_edit_info'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/requestresurrect/$', views_edit.request_resurrect, name='doc_request_resurrect'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/resurrect/$', views_edit.resurrect, name='doc_resurrect'),                       
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/addcomment/$', views_edit.add_comment, name='doc_add_comment'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/clearballot/$', views_ballot.clear_ballot, name='doc_clear_ballot'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/undeferballot/$', views_ballot.undefer_ballot, name='doc_undefer_ballot'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/lastcalltext/$', views_ballot.lastcalltext, name='doc_ballot_lastcall'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/ballotwriteupnotes/$', views_ballot.ballot_writeupnotes, name='doc_ballot_writeupnotes'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/approvaltext/$', views_ballot.ballot_approvaltext, name='doc_ballot_approvaltext'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/approveballot/$', views_ballot.approve_ballot, name='doc_approve_ballot'),
+    url(r'^(?P<name>[A-Za-z0-9.-_]+)/edit/makelastcall/$', views_ballot.make_last_call, name='doc_make_last_call'),
 
-    (r'^(?P<name>[A-Za-z0-9.-]+)/charter/', include('ietf.wgcharter.urls')),
+    (r'^(?P<name>[A-Za-z0-9.-_]+)/charter/', include('ietf.wgcharter.urls')),
 )
 
 urlpatterns += patterns('django.views.generic.simple',