diff --git a/ietf/api/__init__.py b/ietf/api/__init__.py index 9a6cdf868..fa33e02ab 100644 --- a/ietf/api/__init__.py +++ b/ietf/api/__init__.py @@ -47,29 +47,29 @@ class Serializer(BaseSerializer): available to a browser. This is on the TODO list but not currently implemented. """ - from django.template.loader import render_to_string as render + from django.template.loader import render_to_string options = options or {} serialized = self.to_simple_html(data, options) - return render("api/base.html", {"data": serialized}) + return render_to_string("api/base.html", {"data": serialized}) def to_simple_html(self, data, options): """ """ - from django.template.loader import render_to_string as render + from django.template.loader import render_to_string # if isinstance(data, (list, tuple)): - return render("api/listitem.html", {"data": [self.to_simple_html(item, options) for item in data]}) + return render_to_string("api/listitem.html", {"data": [self.to_simple_html(item, options) for item in data]}) if isinstance(data, dict): - return render("api/dictitem.html", {"data": dict((key, self.to_simple_html(val, options)) for (key, val) in data.items())}) + return render_to_string("api/dictitem.html", {"data": dict((key, self.to_simple_html(val, options)) for (key, val) in data.items())}) elif isinstance(data, Bundle): - return render("api/dictitem.html", {"data":dict((key, self.to_simple_html(val, options)) for (key, val) in data.data.items())}) + return render_to_string("api/dictitem.html", {"data":dict((key, self.to_simple_html(val, options)) for (key, val) in data.data.items())}) elif hasattr(data, 'dehydrated_type'): if getattr(data, 'dehydrated_type', None) == 'related' and data.is_m2m == False: - return render("api/relitem.html", {"fk": data.fk_resource, "val": self.to_simple_html(data.value, options)}) + return render_to_string("api/relitem.html", {"fk": data.fk_resource, "val": self.to_simple_html(data.value, options)}) elif getattr(data, 'dehydrated_type', None) == 'related' and data.is_m2m == True: - render("api/listitem.html", {"data": [self.to_simple_html(bundle, options) for bundle in data.m2m_bundles]}) + render_to_string("api/listitem.html", {"data": [self.to_simple_html(bundle, options) for bundle in data.m2m_bundles]}) else: return self.to_simple_html(data.value, options) elif isinstance(data, datetime.datetime): @@ -85,7 +85,7 @@ class Serializer(BaseSerializer): elif data is None: return None elif isinstance(data, basestring) and data.startswith("/api/v1/"): # XXX Will not work for Python 3 - return render("api/relitem.html", {"fk": data, "val": data.split('/')[-2]}) + return render_to_string("api/relitem.html", {"fk": data, "val": data.split('/')[-2]}) else: return force_text(data) diff --git a/ietf/community/urls.py b/ietf/community/urls.py index 510d1a350..999512f76 100644 --- a/ietf/community/urls.py +++ b/ietf/community/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import patterns, url +from django.conf.urls import url -urlpatterns = patterns('', +urlpatterns = [ url(r'^personal/(?P[^/]+)/$', 'ietf.community.views.view_list'), url(r'^personal/(?P[^/]+)/manage/$', 'ietf.community.views.manage_list'), url(r'^personal/(?P[^/]+)/trackdocument/(?P[^/]+)/$', 'ietf.community.views.track_document'), @@ -9,5 +9,4 @@ urlpatterns = patterns('', url(r'^personal/(?P[^/]+)/csv/$', 'ietf.community.views.export_to_csv'), url(r'^personal/(?P[^/]+)/feed/$', 'ietf.community.views.feed'), url(r'^personal/(?P[^/]+)/subscription/$', 'ietf.community.views.subscription'), - -) +] diff --git a/ietf/cookies/urls.py b/ietf/cookies/urls.py index b8f146dcb..1e8c4518e 100644 --- a/ietf/cookies/urls.py +++ b/ietf/cookies/urls.py @@ -1,16 +1,16 @@ # Copyright The IETF Trust 2010, All Rights Reserved -from django.conf.urls import patterns +from django.conf.urls import url from ietf.cookies import views -urlpatterns = patterns('', - (r'^$', views.preferences), - (r'^new_enough/(?P.+)$', views.new_enough), - (r'^new_enough/', views.new_enough), - (r'^expires_soon/(?P.+)$', views.expires_soon), - (r'^expires_soon/', views.expires_soon), - (r'^full_draft/(?P.+)$', views.full_draft), - (r'^full_draft/', views.full_draft), - (r'^left_menu/(?P.+)$', views.left_menu), - (r'^left_menu/', views.left_menu), -) +urlpatterns = [ + url(r'^$', views.preferences), + url(r'^new_enough/(?P.+)$', views.new_enough), + url(r'^new_enough/', views.new_enough), + url(r'^expires_soon/(?P.+)$', views.expires_soon), + url(r'^expires_soon/', views.expires_soon), + url(r'^full_draft/(?P.+)$', views.full_draft), + url(r'^full_draft/', views.full_draft), + url(r'^left_menu/(?P.+)$', views.left_menu), + url(r'^left_menu/', views.left_menu), +] diff --git a/ietf/cookies/views.py b/ietf/cookies/views.py index 7941eceed..5b3c79298 100644 --- a/ietf/cookies/views.py +++ b/ietf/cookies/views.py @@ -1,7 +1,6 @@ # Copyright The IETF Trust 2010, All Rights Reserved -from django.shortcuts import render_to_response as render -from django.template import RequestContext +from django.shortcuts import render from django.conf import settings import debug # pyflakes:ignore @@ -32,7 +31,7 @@ def preferences(request, **kwargs): preferences[key] = settings.USER_PREFERENCE_DEFAULTS[key] del_cookies += [key] request.COOKIES.update(preferences) - response = render("cookies/settings.html", preferences, context_instance=RequestContext(request)) + response = render(request, "cookies/settings.html", preferences ) for key in new_cookies: response.set_cookie(key, new_cookies[key], settings.PREFERENCES_COOKIE_AGE) for key in del_cookies: diff --git a/ietf/dbtemplate/template.py b/ietf/dbtemplate/template.py index f4276a9ef..dc29ff08b 100644 --- a/ietf/dbtemplate/template.py +++ b/ietf/dbtemplate/template.py @@ -4,8 +4,9 @@ from docutils.core import publish_string from docutils.utils import SystemMessage import debug # pyflakes:ignore -from django.template.base import Template as DjangoTemplate, TemplateDoesNotExist, TemplateEncodingError -from django.template.loader import BaseLoader +from django.template import loaders +from django.template.base import Template as DjangoTemplate, TemplateEncodingError +from django.template.exceptions import TemplateDoesNotExist from django.utils.encoding import smart_unicode from ietf.dbtemplate.models import DBTemplate @@ -60,9 +61,9 @@ class RSTTemplate(PlainTemplate): e.args = tuple(args) raise e -class Loader(BaseLoader): - def __init__(self, *args, **kwargs): - super(Loader, self).__init__(self, *args, **kwargs) +class Loader(loaders.base.Loader): + def __init__(self, engine): + super(Loader, self).__init__(engine) self.is_usable = True def load_template(self, template_name, template_dirs=None): @@ -77,7 +78,7 @@ class Loader(BaseLoader): raise TemplateDoesNotExist(template_name) -_loader = Loader() +_loader = Loader(engine='django') def load_template_source(template_name, template_dirs=None): diff --git a/ietf/dbtemplate/urls.py b/ietf/dbtemplate/urls.py index d2d03977d..7a9a8bd51 100644 --- a/ietf/dbtemplate/urls.py +++ b/ietf/dbtemplate/urls.py @@ -1,7 +1,7 @@ -from django.conf.urls import patterns, url +from django.conf.urls import url -urlpatterns = patterns('ietf.dbtemplate.views', - url(r'^(?P[-a-z0-9]+)/$', 'template_list', name='template_list'), - url(r'^(?P[-a-z0-9]+)/(?P[\d]+)/$', 'template_edit', name='template_edit'), -) +urlpatterns = [ + url(r'^(?P[-a-z0-9]+)/$', 'ietf.dbtemplate.views.template_list', name='template_list'), + url(r'^(?P[-a-z0-9]+)/(?P[\d]+)/$', 'ietf.dbtemplate.views.template_edit', name='template_edit'), +] diff --git a/ietf/doc/admin.py b/ietf/doc/admin.py index a9e81a749..f3af1058e 100644 --- a/ietf/doc/admin.py +++ b/ietf/doc/admin.py @@ -81,7 +81,7 @@ class StatesField(forms.ModelMultipleChoiceField): class DocumentForm(forms.ModelForm): states = StatesField(queryset=State.objects.all(), required=False) comment_about_changes = forms.CharField( - widget=forms.Textarea(attrs={'rows':10,'cols':40,'class':'vLargeTextField'}), + widget=forms.Textarea(attrs={'rows':10,'cols':40,'class':'vLargeTextField'}), strip=False, help_text="This comment about the changes made will be saved in the document history.") def __init__(self, *args, **kwargs): diff --git a/ietf/doc/redirect_drafts_urls.py b/ietf/doc/redirect_drafts_urls.py index ee9235703..8e3d415bd 100644 --- a/ietf/doc/redirect_drafts_urls.py +++ b/ietf/doc/redirect_drafts_urls.py @@ -1,21 +1,21 @@ # Copyright The IETF Trust 2007, All Rights Reserved -from django.conf.urls import patterns +from django.conf.urls import url from django.views.generic import RedirectView from django.http import HttpResponsePermanentRedirect from django.shortcuts import get_object_or_404 from ietf.group.models import Group -urlpatterns = patterns('', - (r'^$', RedirectView.as_view(url='/doc/', permanent=True)), - (r'^all/$', RedirectView.as_view(url='/doc/all/', permanent=True)), - (r'^rfc/$', RedirectView.as_view(url='/doc/all/#rfc', permanent=True)), - (r'^dead/$', RedirectView.as_view(url='/doc/all/#expired', permanent=True)), - (r'^current/$', RedirectView.as_view(url='/doc/active/', permanent=True)), - (r'^(?P\d+)/(related/)?$', RedirectView.as_view(url='/doc/', permanent=True)), - (r'^(?P[^/]+)/(related/)?$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)), - (r'^wgid/(?P\d+)/$', lambda request, id: HttpResponsePermanentRedirect("/wg/%s/" % get_object_or_404(Group, id=id).acronym)), - (r'^wg/(?P[^/]+)/$', RedirectView.as_view(url='/wg/%(acronym)s/', permanent=True)), - (r'^all_id(?:_txt)?.html$', RedirectView.as_view(url='https://www.ietf.org/id/all_id.txt', permanent=True)), -) +urlpatterns = [ + url(r'^$', RedirectView.as_view(url='/doc/', permanent=True)), + url(r'^all/$', RedirectView.as_view(url='/doc/all/', permanent=True)), + url(r'^rfc/$', RedirectView.as_view(url='/doc/all/#rfc', permanent=True)), + url(r'^dead/$', RedirectView.as_view(url='/doc/all/#expired', permanent=True)), + url(r'^current/$', RedirectView.as_view(url='/doc/active/', permanent=True)), + url(r'^(?P\d+)/(related/)?$', RedirectView.as_view(url='/doc/', permanent=True)), + url(r'^(?P[^/]+)/(related/)?$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)), + url(r'^wgid/(?P\d+)/$', lambda request, id: HttpResponsePermanentRedirect("/wg/%s/" % get_object_or_404(Group, id=id).acronym)), + url(r'^wg/(?P[^/]+)/$', RedirectView.as_view(url='/wg/%(acronym)s/', permanent=True)), + url(r'^all_id(?:_txt)?.html$', RedirectView.as_view(url='https://www.ietf.org/id/all_id.txt', permanent=True)), +] diff --git a/ietf/doc/redirect_idtracker_urls.py b/ietf/doc/redirect_idtracker_urls.py index dec4823dc..e9214c525 100644 --- a/ietf/doc/redirect_idtracker_urls.py +++ b/ietf/doc/redirect_idtracker_urls.py @@ -1,13 +1,13 @@ -from django.conf.urls import patterns +from django.conf.urls import url from django.views.generic import RedirectView -urlpatterns = patterns('', - (r'^help/(?:sub)?state/(?:\d+/)?$', RedirectView.as_view(url='/doc/help/state/draft-iesg/', permanent=True)), - (r'^help/evaluation/$', RedirectView.as_view(url='https://www.ietf.org/iesg/voting-procedures.html', permanent=True)), - (r'^status/$', RedirectView.as_view(url='/doc/iesg/', permanent=True)), - (r'^status/last-call/$', RedirectView.as_view(url='/doc/iesg/last-call/', permanent=True)), - (r'^rfc0*(?P\d+)/$', RedirectView.as_view(url='/doc/rfc%(rfc_number)s/', permanent=True)), - (r'^(?P[^/]+)/$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)), - (r'^(?P[^/]+)/comment/\d+/$', RedirectView.as_view(url='/doc/%(name)s/history/', permanent=True)), - (r'^$', RedirectView.as_view(url='/doc/', permanent=True)), -) +urlpatterns = [ + url(r'^help/(?:sub)?state/(?:\d+/)?$', RedirectView.as_view(url='/doc/help/state/draft-iesg/', permanent=True)), + url(r'^help/evaluation/$', RedirectView.as_view(url='https://www.ietf.org/iesg/voting-procedures.html', permanent=True)), + url(r'^status/$', RedirectView.as_view(url='/doc/iesg/', permanent=True)), + url(r'^status/last-call/$', RedirectView.as_view(url='/doc/iesg/last-call/', permanent=True)), + url(r'^rfc0*(?P\d+)/$', RedirectView.as_view(url='/doc/rfc%(rfc_number)s/', permanent=True)), + url(r'^(?P[^/]+)/$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)), + url(r'^(?P[^/]+)/comment/\d+/$', RedirectView.as_view(url='/doc/%(name)s/history/', permanent=True)), + url(r'^$', RedirectView.as_view(url='/doc/', permanent=True)), +] diff --git a/ietf/doc/tests_status_change.py b/ietf/doc/tests_status_change.py index 23487a51b..6ae7b2285 100644 --- a/ietf/doc/tests_status_change.py +++ b/ietf/doc/tests_status_change.py @@ -417,7 +417,6 @@ class StatusChangeSubmitTests(TestCase): self.assertEqual(doc.rev,u'00') with open(path) as f: self.assertEqual(f.read(),"Some initial review text\n") - f.close() self.assertTrue( "mid-review-00" in doc.latest_event(NewRevisionDocEvent).desc) def test_subsequent_submission(self): diff --git a/ietf/doc/urls.py b/ietf/doc/urls.py index c8e7a503b..d9fba0082 100644 --- a/ietf/doc/urls.py +++ b/ietf/doc/urls.py @@ -30,7 +30,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from django.conf.urls import patterns, url, include +from django.conf.urls import url, include from django.views.generic import RedirectView from django.conf import settings @@ -42,13 +42,13 @@ session_patterns = [ url(r'^(?P\d+)/remove$', views_doc.remove_sessionpresentation), ] -urlpatterns = patterns('', - (r'^/?$', views_search.search), +urlpatterns = [ + url(r'^$', views_search.search), url(r'^(?P[A-Za-z0-9\._\+\-]+)$', views_search.search_for_name, name="doc_search_for_name"), url(r'^search/$', views_search.search, name="doc_search"), url(r'^in-last-call/$', views_search.drafts_in_last_call, name="drafts_in_last_call"), url(r'^ad/(?P[\w.-]+)/$(?u)', views_search.docs_for_ad, name="docs_for_ad"), - (r'^ad2/(?P[\w.-]+)/$(?u)', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)), + url(r'^ad2/(?P[\w.-]+)/$(?u)', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)), url(r'^rfc-status-changes/$', views_status_change.rfc_status_changes, name='rfc_status_changes'), url(r'^start-rfc-status-change/(?:%(name)s/)?$' % settings.URL_REGEXPS, views_status_change.start_rfc_status_change, name='start_rfc_status_change'), url(r'^iesg/(?P[A-Za-z0-9.-]+/)?$', views_search.drafts_in_iesg_process, name="drafts_in_iesg_process"), @@ -75,8 +75,8 @@ urlpatterns = patterns('', url(r'^%(name)s/ballot/(?P[0-9]+)/$' % settings.URL_REGEXPS, views_doc.document_ballot, name="doc_ballot"), url(r'^%(name)s/ballot/(?P[0-9]+)/position/$' % settings.URL_REGEXPS, views_ballot.edit_position), url(r'^%(name)s/ballot/(?P[0-9]+)/emailposition/$' % settings.URL_REGEXPS, views_ballot.send_ballot_comment, name='doc_send_ballot_comment'), - (r'^%(name)s/(?:%(rev)s/)?doc.json$' % settings.URL_REGEXPS, views_doc.document_json), - (r'^%(name)s/ballotpopup/(?P[0-9]+)/$' % settings.URL_REGEXPS, views_doc.ballot_popup), + url(r'^%(name)s/(?:%(rev)s/)?doc.json$' % settings.URL_REGEXPS, views_doc.document_json), + url(r'^%(name)s/ballotpopup/(?P[0-9]+)/$' % settings.URL_REGEXPS, views_doc.ballot_popup), url(r'^(?P[A-Za-z0-9._+-]+)/reviewrequest/', include("ietf.doc.urls_review")), url(r'^%(name)s/email-aliases/$' % settings.URL_REGEXPS, RedirectView.as_view(pattern_name='doc_email', permanent=False),name='doc_specific_email_aliases'), @@ -120,12 +120,12 @@ urlpatterns = patterns('', url(r'^help/relationships/$', 'ietf.doc.views_help.relationship_help', name="relationship_help"), url(r'^help/relationships/(?P\w+)/$', 'ietf.doc.views_help.relationship_help', name="relationship_subset_help"), - (r'^%(name)s/meetings/?$' % settings.URL_REGEXPS, views_doc.all_presentations), + url(r'^%(name)s/meetings/?$' % settings.URL_REGEXPS, views_doc.all_presentations), - (r'^%(charter)s/' % settings.URL_REGEXPS, include('ietf.doc.urls_charter')), - (r'^%(name)s/conflict-review/' % settings.URL_REGEXPS, include('ietf.doc.urls_conflict_review')), - (r'^%(name)s/status-change/' % settings.URL_REGEXPS, include('ietf.doc.urls_status_change')), - (r'^%(name)s/material/' % settings.URL_REGEXPS, include('ietf.doc.urls_material')), - (r'^%(name)s/session/' % settings.URL_REGEXPS, include('ietf.doc.urls_material')), - (r'^(?P[A-Za-z0-9._+-]+)/session/', include(session_patterns)), -) + url(r'^%(charter)s/' % settings.URL_REGEXPS, include('ietf.doc.urls_charter')), + url(r'^%(name)s/conflict-review/' % settings.URL_REGEXPS, include('ietf.doc.urls_conflict_review')), + url(r'^%(name)s/status-change/' % settings.URL_REGEXPS, include('ietf.doc.urls_status_change')), + url(r'^%(name)s/material/' % settings.URL_REGEXPS, include('ietf.doc.urls_material')), + url(r'^%(name)s/session/' % settings.URL_REGEXPS, include('ietf.doc.urls_material')), + url(r'^(?P[A-Za-z0-9._+-]+)/session/', include(session_patterns)), +] diff --git a/ietf/doc/urls_charter.py b/ietf/doc/urls_charter.py index 4b708c52b..f298b7ced 100644 --- a/ietf/doc/urls_charter.py +++ b/ietf/doc/urls_charter.py @@ -1,9 +1,9 @@ # Copyright The IETF Trust 2011, All Rights Reserved -from django.conf.urls import patterns, url +from django.conf.urls import url from django.conf import settings -urlpatterns = patterns('', +urlpatterns = [ url(r'^state/$', "ietf.doc.views_charter.change_state", name='charter_change_state'), url(r'^title/$', "ietf.doc.views_charter.change_title", name='charter_change_title'), url(r'^(?P