Merged in Django 1.9 upgrade work from ^/personal/henrik/6.41.1-django-1.9

- Legacy-Id: 12764
This commit is contained in:
Henrik Levkowetz 2017-01-31 15:13:01 +00:00
commit de3976bec0
198 changed files with 16072 additions and 1349 deletions

View file

@ -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)

View file

@ -1,7 +1,7 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('',
urlpatterns = [
url(r'^personal/(?P<username>[^/]+)/$', 'ietf.community.views.view_list'),
url(r'^personal/(?P<username>[^/]+)/manage/$', 'ietf.community.views.manage_list'),
url(r'^personal/(?P<username>[^/]+)/trackdocument/(?P<name>[^/]+)/$', 'ietf.community.views.track_document'),
@ -9,5 +9,4 @@ urlpatterns = patterns('',
url(r'^personal/(?P<username>[^/]+)/csv/$', 'ietf.community.views.export_to_csv'),
url(r'^personal/(?P<username>[^/]+)/feed/$', 'ietf.community.views.feed'),
url(r'^personal/(?P<username>[^/]+)/subscription/$', 'ietf.community.views.subscription'),
)
]

View file

@ -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<days>.+)$', views.new_enough),
(r'^new_enough/', views.new_enough),
(r'^expires_soon/(?P<days>.+)$', views.expires_soon),
(r'^expires_soon/', views.expires_soon),
(r'^full_draft/(?P<enabled>.+)$', views.full_draft),
(r'^full_draft/', views.full_draft),
(r'^left_menu/(?P<enabled>.+)$', views.left_menu),
(r'^left_menu/', views.left_menu),
)
urlpatterns = [
url(r'^$', views.preferences),
url(r'^new_enough/(?P<days>.+)$', views.new_enough),
url(r'^new_enough/', views.new_enough),
url(r'^expires_soon/(?P<days>.+)$', views.expires_soon),
url(r'^expires_soon/', views.expires_soon),
url(r'^full_draft/(?P<enabled>.+)$', views.full_draft),
url(r'^full_draft/', views.full_draft),
url(r'^left_menu/(?P<enabled>.+)$', views.left_menu),
url(r'^left_menu/', views.left_menu),
]

View file

@ -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:

View file

@ -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):

View file

@ -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<acronym>[-a-z0-9]+)/$', 'template_list', name='template_list'),
url(r'^(?P<acronym>[-a-z0-9]+)/(?P<template_id>[\d]+)/$', 'template_edit', name='template_edit'),
)
urlpatterns = [
url(r'^(?P<acronym>[-a-z0-9]+)/$', 'ietf.dbtemplate.views.template_list', name='template_list'),
url(r'^(?P<acronym>[-a-z0-9]+)/(?P<template_id>[\d]+)/$', 'ietf.dbtemplate.views.template_edit', name='template_edit'),
]

View file

@ -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):

View file

@ -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<object_id>\d+)/(related/)?$', RedirectView.as_view(url='/doc/', permanent=True)),
(r'^(?P<name>[^/]+)/(related/)?$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)),
(r'^wgid/(?P<id>\d+)/$', lambda request, id: HttpResponsePermanentRedirect("/wg/%s/" % get_object_or_404(Group, id=id).acronym)),
(r'^wg/(?P<acronym>[^/]+)/$', 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<object_id>\d+)/(related/)?$', RedirectView.as_view(url='/doc/', permanent=True)),
url(r'^(?P<name>[^/]+)/(related/)?$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)),
url(r'^wgid/(?P<id>\d+)/$', lambda request, id: HttpResponsePermanentRedirect("/wg/%s/" % get_object_or_404(Group, id=id).acronym)),
url(r'^wg/(?P<acronym>[^/]+)/$', 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)),
]

View file

@ -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<rfc_number>\d+)/$', RedirectView.as_view(url='/doc/rfc%(rfc_number)s/', permanent=True)),
(r'^(?P<name>[^/]+)/$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)),
(r'^(?P<name>[^/]+)/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<rfc_number>\d+)/$', RedirectView.as_view(url='/doc/rfc%(rfc_number)s/', permanent=True)),
url(r'^(?P<name>[^/]+)/$', RedirectView.as_view(url='/doc/%(name)s/', permanent=True)),
url(r'^(?P<name>[^/]+)/comment/\d+/$', RedirectView.as_view(url='/doc/%(name)s/history/', permanent=True)),
url(r'^$', RedirectView.as_view(url='/doc/', permanent=True)),
]

View file

@ -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):

View file

@ -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<session_id>\d+)/remove$', views_doc.remove_sessionpresentation),
]
urlpatterns = patterns('',
(r'^/?$', views_search.search),
urlpatterns = [
url(r'^$', views_search.search),
url(r'^(?P<name>[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<name>[\w.-]+)/$(?u)', views_search.docs_for_ad, name="docs_for_ad"),
(r'^ad2/(?P<name>[\w.-]+)/$(?u)', RedirectView.as_view(url='/doc/ad/%(name)s/', permanent=True)),
url(r'^ad2/(?P<name>[\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<last_call_only>[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<ballot_id>[0-9]+)/$' % settings.URL_REGEXPS, views_doc.document_ballot, name="doc_ballot"),
url(r'^%(name)s/ballot/(?P<ballot_id>[0-9]+)/position/$' % settings.URL_REGEXPS, views_ballot.edit_position),
url(r'^%(name)s/ballot/(?P<ballot_id>[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<ballot_id>[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<ballot_id>[0-9]+)/$' % settings.URL_REGEXPS, views_doc.ballot_popup),
url(r'^(?P<name>[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<subset>\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<name>[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<name>[A-Za-z0-9._+-]+)/session/', include(session_patterns)),
]

View file

@ -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<option>initcharter|recharter|abandon)/$', "ietf.doc.views_charter.change_state", name='charter_startstop_process'),
@ -16,4 +16,4 @@ urlpatterns = patterns('',
url(r'^approve/$', "ietf.doc.views_charter.approve", name='charter_approve'),
url(r'^submit/(?:(?P<option>initcharter|recharter)/)?$', "ietf.doc.views_charter.submit", name='charter_submit'),
url(r'^withmilestones-%(rev)s.txt$' % settings.URL_REGEXPS, "ietf.doc.views_charter.charter_with_milestones_txt", name='charter_with_milestones_txt'),
)
]

View file

@ -1,16 +1,13 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.doc.views_conflict_review',
url(r'^state/$', "change_state", name='conflict_review_change_state'),
url(r'^submit/$', "submit", name='conflict_review_submit'),
url(r'^ad/$', "edit_ad", name='conflict_review_ad'),
url(r'^approve/$', "approve", name='conflict_review_approve'),
url(r'^start_conflict_review/$', "start_review", name='conflict_review_start'),
)
urlpatterns += patterns('ietf.doc.views_doc',
url(r'^telechat/$', "telechat_date", name='conflict_review_telechat_date'),
url(r'^notices/$', "edit_notify", name='conflict_review_notices'),
)
urlpatterns = [
url(r'^state/$', "ietf.doc.views_conflict_review.change_state", name='conflict_review_change_state'),
url(r'^submit/$', "ietf.doc.views_conflict_review.submit", name='conflict_review_submit'),
url(r'^ad/$', "ietf.doc.views_conflict_review.edit_ad", name='conflict_review_ad'),
url(r'^approve/$', "ietf.doc.views_conflict_review.approve", name='conflict_review_approve'),
url(r'^start_conflict_review/$', "ietf.doc.views_conflict_review.start_review", name='conflict_review_start'),
url(r'^telechat/$', "ietf.doc.views_doc.telechat_date", name='conflict_review_telechat_date'),
url(r'^notices/$', "ietf.doc.views_doc.edit_notify", name='conflict_review_notices'),
]

View file

@ -1,6 +1,6 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.doc.views_material',
url(r'^(?P<action>state|title|abstract|revise)/$', "edit_material", name="material_edit"),
)
urlpatterns = [
url(r'^(?P<action>state|title|abstract|revise)/$', "ietf.doc.views_material.edit_material", name="material_edit"),
]

View file

@ -1,7 +1,7 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from ietf.doc import views_review
urlpatterns = patterns('',
urlpatterns = [
url(r'^$', views_review.request_review),
url(r'^(?P<request_id>[0-9]+)/$', views_review.review_request),
url(r'^(?P<request_id>[0-9]+)/close/$', views_review.close_request),
@ -10,5 +10,4 @@ urlpatterns = patterns('',
url(r'^(?P<request_id>[0-9]+)/complete/$', views_review.complete_review),
url(r'^(?P<request_id>[0-9]+)/searchmailarchive/$', views_review.search_mail_archive),
url(r'^(?P<request_id>[0-9]+)/editcomment/$', views_review.edit_comment),
)
]

View file

@ -1,18 +1,15 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.doc.views_status_change',
url(r'^state/$', "change_state", name='status_change_change_state'),
url(r'^submit/$', "submit", name='status_change_submit'),
url(r'^ad/$', "edit_ad", name='status_change_ad'),
url(r'^title/$', "edit_title", name='status_change_title'),
url(r'^approve/$', "approve", name='status_change_approve'),
url(r'^relations/$', "edit_relations", name='status_change_relations'),
url(r'^last-call/$', "last_call", name='status_change_last_call'),
)
urlpatterns += patterns('ietf.doc.views_doc',
url(r'^telechat/$', "telechat_date", name='status_change_telechat_date'),
url(r'^notices/$', "edit_notify", name='status_change_notices'),
)
urlpatterns = [
url(r'^state/$', "ietf.doc.views_status_change.change_state", name='status_change_change_state'),
url(r'^submit/$', "ietf.doc.views_status_change.submit", name='status_change_submit'),
url(r'^ad/$', "ietf.doc.views_status_change.edit_ad", name='status_change_ad'),
url(r'^title/$', "ietf.doc.views_status_change.edit_title", name='status_change_title'),
url(r'^approve/$', "ietf.doc.views_status_change.approve", name='status_change_approve'),
url(r'^relations/$', "ietf.doc.views_status_change.edit_relations", name='status_change_relations'),
url(r'^last-call/$', "ietf.doc.views_status_change.last_call", name='status_change_last_call'),
url(r'^telechat/$', "ietf.doc.views_doc.telechat_date", name='status_change_telechat_date'),
url(r'^notices/$', "ietf.doc.views_doc.edit_notify", name='status_change_notices'),
]

View file

@ -4,10 +4,9 @@
import datetime, json
from django.http import HttpResponseForbidden, HttpResponseRedirect, Http404
from django.shortcuts import render, render_to_response, get_object_or_404, redirect
from django.shortcuts import render, get_object_or_404, redirect
from django.core.urlresolvers import reverse as urlreverse
from django.template.loader import render_to_string
from django.template import RequestContext
from django import forms
from django.conf import settings
@ -91,8 +90,8 @@ def position_label(position_value):
# -------------------------------------------------
class EditPositionForm(forms.Form):
position = forms.ModelChoiceField(queryset=BallotPositionName.objects.all(), widget=forms.RadioSelect, initial="norecord", required=True)
discuss = forms.CharField(required=False, widget=forms.Textarea)
comment = forms.CharField(required=False, widget=forms.Textarea)
discuss = forms.CharField(required=False, widget=forms.Textarea, strip=False)
comment = forms.CharField(required=False, widget=forms.Textarea, strip=False)
def __init__(self, *args, **kwargs):
ballot_type = kwargs.pop("ballot_type")
@ -222,7 +221,7 @@ def edit_position(request, name, ballot_id):
ballot_deferred = doc.active_defer_event()
return render_to_response('doc/ballot/edit_position.html',
return render(request, 'doc/ballot/edit_position.html',
dict(doc=doc,
form=form,
ad=ad,
@ -232,8 +231,7 @@ def edit_position(request, name, ballot_id):
ballot = ballot,
show_discuss_text=old_pos and old_pos.pos.blocking,
blocking_positions=json.dumps(blocking_positions),
),
context_instance=RequestContext(request))
))
@role_required('Area Director','Secretariat')
@ -311,18 +309,17 @@ def send_ballot_comment(request, name, ballot_id):
cc_select_form = CcSelectForm(mailtrigger_slug='ballot_saved',mailtrigger_context={'doc':doc})
return render_to_response('doc/ballot/send_ballot_comment.html',
dict(doc=doc,
subject=subject,
body=body,
frm=frm,
to=addrs.as_strings().to,
ad=ad,
can_send=d or c,
back_url=back_url,
cc_select_form = cc_select_form,
),
context_instance=RequestContext(request))
return render(request, 'doc/ballot/send_ballot_comment.html',
dict(doc=doc,
subject=subject,
body=body,
frm=frm,
to=addrs.as_strings().to,
ad=ad,
can_send=d or c,
back_url=back_url,
cc_select_form = cc_select_form,
))
@role_required('Secretariat')
def clear_ballot(request, name):
@ -337,10 +334,9 @@ def clear_ballot(request, name):
do_undefer_ballot(request,doc)
return redirect("doc_view", name=doc.name)
return render_to_response('doc/ballot/clear_ballot.html',
return render(request, 'doc/ballot/clear_ballot.html',
dict(doc=doc,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
@role_required('Area Director','Secretariat')
def defer_ballot(request, name):
@ -388,11 +384,10 @@ def defer_ballot(request, name):
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/ballot/defer_ballot.html',
return render(request, 'doc/ballot/defer_ballot.html',
dict(doc=doc,
telechat_date=telechat_date,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
@role_required('Area Director','Secretariat')
def undefer_ballot(request, name):
@ -413,14 +408,13 @@ def undefer_ballot(request, name):
do_undefer_ballot(request,doc)
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/ballot/undefer_ballot.html',
return render(request, 'doc/ballot/undefer_ballot.html',
dict(doc=doc,
telechat_date=telechat_date,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
class LastCallTextForm(forms.Form):
last_call_text = forms.CharField(widget=forms.Textarea, required=True)
last_call_text = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_last_call_text(self):
lines = self.cleaned_data["last_call_text"].split("\r\n")
@ -477,9 +471,8 @@ def lastcalltext(request, name):
request_last_call(request, doc)
return render_to_response('doc/draft/last_call_requested.html',
dict(doc=doc),
context_instance=RequestContext(request))
return render(request, 'doc/draft/last_call_requested.html',
dict(doc=doc))
if "regenerate_last_call_text" in request.POST:
e = generate_last_call_announcement(request, doc)
@ -497,18 +490,17 @@ def lastcalltext(request, name):
if not doc.intended_std_level:
need_intended_status = doc.file_tag()
return render_to_response('doc/ballot/lastcalltext.html',
return render(request, 'doc/ballot/lastcalltext.html',
dict(doc=doc,
back_url=doc.get_absolute_url(),
last_call_form=form,
can_request_last_call=can_request_last_call,
can_make_last_call=can_make_last_call,
need_intended_status=need_intended_status,
),
context_instance=RequestContext(request))
))
class BallotWriteupForm(forms.Form):
ballot_writeup = forms.CharField(widget=forms.Textarea, required=True)
ballot_writeup = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_ballot_writeup(self):
return self.cleaned_data["ballot_writeup"].replace("\r", "")
@ -582,27 +574,25 @@ def ballot_writeupnotes(request, name):
e.desc = "Ballot has been issued"
e.save()
return render_to_response('doc/ballot/ballot_issued.html',
return render(request, 'doc/ballot/ballot_issued.html',
dict(doc=doc,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
need_intended_status = ""
if not doc.intended_std_level:
need_intended_status = doc.file_tag()
return render_to_response('doc/ballot/writeupnotes.html',
return render(request, 'doc/ballot/writeupnotes.html',
dict(doc=doc,
back_url=doc.get_absolute_url(),
ballot_issued=bool(doc.latest_event(type="sent_ballot_announcement")),
ballot_writeup_form=form,
need_intended_status=need_intended_status,
),
context_instance=RequestContext(request))
))
class BallotRfcEditorNoteForm(forms.Form):
rfc_editor_note = forms.CharField(widget=forms.Textarea, label="RFC Editor Note", required=True)
rfc_editor_note = forms.CharField(widget=forms.Textarea, label="RFC Editor Note", required=True, strip=False)
def clean_rfc_editor_note(self):
return self.cleaned_data["rfc_editor_note"].replace("\r", "")
@ -646,15 +636,14 @@ def ballot_rfceditornote(request, name):
# make sure form shows a blank RFC Editor Note
form = BallotRfcEditorNoteForm(initial=dict(rfc_editor_note=" "))
return render_to_response('doc/ballot/rfceditornote.html',
return render(request, 'doc/ballot/rfceditornote.html',
dict(doc=doc,
back_url=doc.get_absolute_url(),
ballot_rfceditornote_form=form,
),
context_instance=RequestContext(request))
))
class ApprovalTextForm(forms.Form):
approval_text = forms.CharField(widget=forms.Textarea, required=True)
approval_text = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_approval_text(self):
return self.cleaned_data["approval_text"].replace("\r", "")
@ -701,14 +690,13 @@ def ballot_approvaltext(request, name):
if not doc.intended_std_level:
need_intended_status = doc.file_tag()
return render_to_response('doc/ballot/approvaltext.html',
return render(request, 'doc/ballot/approvaltext.html',
dict(doc=doc,
back_url=doc.get_absolute_url(),
approval_text_form=form,
can_announce=can_announce,
need_intended_status=need_intended_status,
),
context_instance=RequestContext(request))
))
@role_required('Secretariat')
def approve_ballot(request, name):
@ -737,9 +725,7 @@ def approve_ballot(request, name):
ballot_writeup += "\n\n" + e.text
if error_duplicate_rfc_editor_note:
return render_to_response('doc/draft/rfceditor_note_duplicate_error.html',
dict(doc=doc),
context_instance=RequestContext(request))
return render(request, 'doc/draft/rfceditor_note_duplicate_error.html', {'doc': doc})
if "NOT be published" in approval_text:
action = "do_not_publish"
@ -817,11 +803,10 @@ def approve_ballot(request, name):
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/ballot/approve_ballot.html',
return render(request, 'doc/ballot/approve_ballot.html',
dict(doc=doc,
action=action,
announcement=announcement),
context_instance=RequestContext(request))
announcement=announcement))
class MakeLastCallForm(forms.Form):
@ -921,9 +906,8 @@ def make_last_call(request, name):
form = MakeLastCallForm(initial=initial)
return render_to_response(templ,
return render(request, templ,
dict(doc=doc,
form=form,
announcement=announcement,
),
context_instance=RequestContext(request))
))

View file

@ -37,8 +37,8 @@ from ietf.group.views import fill_in_charter_info
class ChangeStateForm(forms.Form):
charter_state = forms.ModelChoiceField(State.objects.filter(used=True, type="charter"), label="Charter state", empty_label=None, required=False)
initial_time = forms.IntegerField(initial=0, label="Review time", help_text="(in weeks)", required=False)
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change state without notifying the Secretariat.", required=False, label=mark_safe("Message to the Secretariat"))
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the charter history.", required=False)
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change state without notifying the Secretariat.", required=False, label=mark_safe("Message to the Secretariat"), strip=False)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the charter history.", required=False, strip=False)
def __init__(self, *args, **kwargs):
self.hide = kwargs.pop('hide', None)
group = kwargs.pop('group')
@ -233,8 +233,8 @@ def change_state(request, name, option=None):
class ChangeTitleForm(forms.Form):
charter_title = forms.CharField(widget=forms.TextInput, label="Charter title", help_text="Enter new charter title.", required=True)
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change the title without notifying the Secretariat.", required=False, label=mark_safe("Message to Secretariat"))
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the charter history.", required=False)
message = forms.CharField(widget=forms.Textarea, help_text="Leave blank to change the title without notifying the Secretariat.", required=False, label=mark_safe("Message to Secretariat"), strip=False)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the charter history.", required=False, strip=False)
def __init__(self, *args, **kwargs):
charter = kwargs.pop('charter')
super(ChangeTitleForm, self).__init__(*args, **kwargs)
@ -335,7 +335,7 @@ def edit_ad(request, name):
class UploadForm(forms.Form):
content = forms.CharField(widget=forms.Textarea, label="Charter text", help_text="Edit the charter text.", required=False)
content = forms.CharField(widget=forms.Textarea, label="Charter text", help_text="Edit the charter text.", required=False, strip=False)
txt = forms.FileField(label=".txt format", help_text="Or upload a .txt file.", required=False)
def clean_content(self):
@ -454,15 +454,15 @@ def submit(request, name, option=None):
})
class ActionAnnouncementTextForm(forms.Form):
announcement_text = forms.CharField(widget=forms.Textarea, required=True)
announcement_text = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_announcement_text(self):
return self.cleaned_data["announcement_text"].replace("\r", "")
class ReviewAnnouncementTextForm(forms.Form):
announcement_text = forms.CharField(widget=forms.Textarea, required=True)
new_work_text = forms.CharField(widget=forms.Textarea, required=True)
announcement_text = forms.CharField(widget=forms.Textarea, required=True, strip=False)
new_work_text = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_announcement_text(self):
return self.cleaned_data["announcement_text"].replace("\r", "")
@ -612,7 +612,7 @@ def action_announcement_text(request, name):
))
class BallotWriteupForm(forms.Form):
ballot_writeup = forms.CharField(widget=forms.Textarea, required=True)
ballot_writeup = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def clean_ballot_writeup(self):
return self.cleaned_data["ballot_writeup"].replace("\r", "")

View file

@ -1,10 +1,9 @@
import datetime, os
from django import forms
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponseRedirect, Http404
from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.template.loader import render_to_string
from django.conf import settings
@ -24,7 +23,7 @@ from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
review_state = forms.ModelChoiceField(State.objects.filter(used=True, type="conflrev"), label="Conflict review state", empty_label=None, required=True)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the review history.", required=False)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the review history.", required=False, strip=False)
@role_required("Area Director", "Secretariat")
def change_state(request, name, option=None):
@ -78,13 +77,12 @@ def change_state(request, name, option=None):
init = dict(review_state=s.pk if s else None)
form = ChangeStateForm(initial=init)
return render_to_response('doc/change_state.html',
return render(request, 'doc/change_state.html',
dict(form=form,
doc=review,
login=login,
help_url=reverse('state_help', kwargs=dict(type="conflict-review")),
),
context_instance=RequestContext(request))
))
def send_conflict_review_started_email(request, review):
addrs = gather_address_lists('conflrev_requested',doc=review).as_strings(compact=False)
@ -127,7 +125,7 @@ def send_conflict_eval_email(request,review):
addrs.cc)
class UploadForm(forms.Form):
content = forms.CharField(widget=forms.Textarea, label="Conflict review response", help_text="Edit the conflict review response.", required=False)
content = forms.CharField(widget=forms.Textarea, label="Conflict review response", help_text="Edit the conflict review response.", required=False, strip=False)
txt = forms.FileField(label=".txt format", help_text="Or upload a .txt file.", required=False)
def clean_content(self):
@ -209,13 +207,12 @@ def submit(request, name):
form = UploadForm(initial=init)
return render_to_response('doc/conflict_review/submit.html',
return render(request, 'doc/conflict_review/submit.html',
{'form': form,
'next_rev': next_rev,
'review' : review,
'conflictdoc' : review.relateddocument_set.get(relationship__slug='conflrev').target.document,
},
context_instance=RequestContext(request))
})
@role_required("Area Director", "Secretariat")
def edit_ad(request, name):
@ -243,12 +240,12 @@ def edit_ad(request, name):
conflictdoc = review.relateddocument_set.get(relationship__slug='conflrev').target.document
titletext = 'the conflict review of %s-%s' % (conflictdoc.canonical_name(),conflictdoc.rev)
return render_to_response('doc/change_ad.html',
return render(request, 'doc/change_ad.html',
{'form': form,
'doc': review,
'titletext': titletext
},
context_instance = RequestContext(request))
)
def default_approval_text(review):
@ -279,7 +276,7 @@ def default_approval_text(review):
class AnnouncementForm(forms.Form):
announcement_text = forms.CharField(widget=forms.Textarea, label="IETF Conflict Review Announcement", help_text="Edit the announcement message.", required=True)
announcement_text = forms.CharField(widget=forms.Textarea, label="IETF Conflict Review Announcement", help_text="Edit the announcement message.", required=True, strip=False)
@role_required("Secretariat")
def approve(request, name):
@ -330,13 +327,12 @@ def approve(request, name):
init = { "announcement_text" : default_approval_text(review) }
form = AnnouncementForm(initial=init)
return render_to_response('doc/conflict_review/approve.html',
return render(request, 'doc/conflict_review/approve.html',
dict(
review = review,
conflictdoc = review.relateddocument_set.get(relationship__slug='conflrev').target.document,
form = form,
),
context_instance=RequestContext(request))
))
class SimpleStartReviewForm(forms.Form):
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
@ -453,11 +449,11 @@ def start_review_as_secretariat(request, name):
}
form = StartReviewForm(initial=init)
return render_to_response('doc/conflict_review/start.html',
return render(request, 'doc/conflict_review/start.html',
{'form': form,
'doc_to_review': doc_to_review,
},
context_instance = RequestContext(request))
)
def start_review_as_stream_owner(request, name):
"""Start the conflict review process using defaults for everything but notify and let the secretariat know"""
@ -487,8 +483,8 @@ def start_review_as_stream_owner(request, name):
}
form = SimpleStartReviewForm(initial=init)
return render_to_response('doc/conflict_review/start.html',
return render(request, 'doc/conflict_review/start.html',
{'form': form,
'doc_to_review': doc_to_review,
},
context_instance = RequestContext(request))
)

View file

@ -35,8 +35,7 @@
import os, datetime, urllib, json, glob, re
from django.http import HttpResponse, Http404 , HttpResponseForbidden
from django.shortcuts import render, render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from django.template.loader import render_to_string
from django.core.urlresolvers import reverse as urlreverse
from django.conf import settings
@ -70,7 +69,7 @@ from ietf.review.utils import no_review_from_teams_on_doc
def render_document_top(request, doc, tab, name):
tabs = []
tabs.append(("Document", "document", urlreverse("doc_view", kwargs=dict(name=name)), True))
tabs.append(("Document", "document", urlreverse("doc_view", kwargs=dict(name=name)), True, None))
ballot = doc.latest_event(BallotDocEvent, type="created_ballot")
if doc.type_id in ("draft","conflrev", "statchg"):
@ -79,10 +78,10 @@ def render_document_top(request, doc, tab, name):
tabs.append(("IESG Review", "ballot", urlreverse("doc_ballot", kwargs=dict(name=name)), ballot, None if ballot else "IESG Review Ballot has not been created yet"))
if doc.type_id == "draft" or (doc.type_id == "charter" and doc.group.type_id == "wg"):
tabs.append(("IESG Writeups", "writeup", urlreverse("doc_writeup", kwargs=dict(name=name)), True))
tabs.append(("IESG Writeups", "writeup", urlreverse("doc_writeup", kwargs=dict(name=name)), True, None))
tabs.append(("Email expansions","email",urlreverse("doc_email", kwargs=dict(name=name)), True))
tabs.append(("History", "history", urlreverse("doc_history", kwargs=dict(name=name)), True))
tabs.append(("Email expansions","email",urlreverse("doc_email", kwargs=dict(name=name)), True, None))
tabs.append(("History", "history", urlreverse("doc_history", kwargs=dict(name=name)), True, None))
if name.startswith("rfc"):
name = "RFC %s" % name[3:]
@ -365,7 +364,7 @@ def document_main(request, name, rev=None):
review_requests = review_requests_to_list_for_docs([doc]).get(doc.pk, [])
no_review_from_teams = no_review_from_teams_on_doc(doc, rev or doc.rev)
return render_to_response("doc/document_draft.html",
return render(request, "doc/document_draft.html",
dict(doc=doc,
group=group,
top=top,
@ -427,8 +426,7 @@ def document_main(request, name, rev=None):
presentations=presentations,
review_requests=review_requests,
no_review_from_teams=no_review_from_teams,
),
context_instance=RequestContext(request))
))
if doc.type_id == "charter":
filename = "%s-%s.txt" % (doc.canonical_name(), doc.rev)
@ -452,7 +450,7 @@ def document_main(request, name, rev=None):
can_manage = can_manage_group_type(request.user, doc.group)
return render_to_response("doc/document_charter.html",
return render(request, "doc/document_charter.html",
dict(doc=doc,
top=top,
chartering=chartering,
@ -466,8 +464,7 @@ def document_main(request, name, rev=None):
group=group,
milestones=milestones,
can_manage=can_manage,
),
context_instance=RequestContext(request))
))
if doc.type_id == "conflrev":
filename = "%s-%s.txt" % (doc.canonical_name(), doc.rev)
@ -483,7 +480,7 @@ def document_main(request, name, rev=None):
if doc.get_state_slug() in ("iesgeval") and doc.active_ballot():
ballot_summary = needed_ballot_positions(doc, doc.active_ballot().active_ad_positions().values())
return render_to_response("doc/document_conflict_review.html",
return render(request, "doc/document_conflict_review.html",
dict(doc=doc,
top=top,
content=content,
@ -494,8 +491,7 @@ def document_main(request, name, rev=None):
conflictdoc=conflictdoc,
ballot_summary=ballot_summary,
approved_states=('appr-reqnopub-pend','appr-reqnopub-sent','appr-noprob-pend','appr-noprob-sent'),
),
context_instance=RequestContext(request))
))
if doc.type_id == "statchg":
filename = "%s-%s.txt" % (doc.canonical_name(), doc.rev)
@ -518,7 +514,7 @@ def document_main(request, name, rev=None):
else:
sorted_relations=None
return render_to_response("doc/document_status_change.html",
return render(request, "doc/document_status_change.html",
dict(doc=doc,
top=top,
content=content,
@ -529,8 +525,7 @@ def document_main(request, name, rev=None):
ballot_summary=ballot_summary,
approved_states=('appr-pend','appr-sent'),
sorted_relations=sorted_relations,
),
context_instance=RequestContext(request))
))
# TODO : Add "recording", and "bluesheets" here when those documents are appropriately
# created and content is made available on disk
@ -564,7 +559,7 @@ def document_main(request, name, rev=None):
other_types.append((t, url))
return render_to_response("doc/document_material.html",
return render(request, "doc/document_material.html",
dict(doc=doc,
top=top,
content=content,
@ -575,8 +570,7 @@ def document_main(request, name, rev=None):
in_group_materials_types = doc.group and doc.group.features.has_materials and doc.type_id in doc.group.features.material_types,
other_types=other_types,
presentations=presentations,
),
context_instance=RequestContext(request))
))
if doc.type_id == "review":
@ -707,14 +701,13 @@ def document_history(request, name):
else:
can_add_comment = has_role(request.user, ("Area Director", "Secretariat", "IRTF Chair"))
return render_to_response("doc/document_history.html",
return render(request, "doc/document_history.html",
dict(doc=doc,
top=top,
diff_revisions=diff_revisions,
events=events,
can_add_comment=can_add_comment,
),
context_instance=RequestContext(request))
))
def document_bibtex(request, name, rev=None):
@ -732,14 +725,14 @@ def document_bibtex(request, name, rev=None):
doc = h
break
return render_to_response("doc/document_bibtex.bib",
return render(request, "doc/document_bibtex.bib",
dict(doc=doc,
replaced_by=replaced_by,
published=published,
rfc=rfc,
latest_revision=latest_revision),
content_type="text/plain; charset=utf-8",
context_instance=RequestContext(request))
)
def document_writeup(request, name):
@ -799,13 +792,12 @@ def document_writeup(request, name):
if not sections:
raise Http404
return render_to_response("doc/document_writeup.html",
return render(request, "doc/document_writeup.html",
dict(doc=doc,
top=top,
sections=sections,
can_edit=has_role(request.user, ("Area Director", "Secretariat")),
),
context_instance=RequestContext(request))
))
def document_shepherd_writeup(request, name):
doc = get_object_or_404(Document, docalias__name=name)
@ -818,17 +810,17 @@ def document_shepherd_writeup(request, name):
can_edit_stream_info = is_authorized_in_doc_stream(request.user, doc)
can_edit_shepherd_writeup = can_edit_stream_info or user_is_person(request.user, doc.shepherd and doc.shepherd.person) or has_role(request.user, ["Area Director"])
return render_to_response("doc/shepherd_writeup.html",
return render(request, "doc/shepherd_writeup.html",
dict(doc=doc,
writeup=writeup_text,
can_edit=can_edit_shepherd_writeup
),
context_instance=RequestContext(request))
)
def document_references(request, name):
doc = get_object_or_404(Document,docalias__name=name)
refs = doc.relations_that_doc(['refnorm','refinfo','refunk','refold'])
return render_to_response("doc/document_references.html",dict(doc=doc,refs=sorted(refs,key=lambda x:x.target.name),),context_instance=RequestContext(request))
return render(request, "doc/document_references.html",dict(doc=doc,refs=sorted(refs,key=lambda x:x.target.name),))
def document_referenced_by(request, name):
doc = get_object_or_404(Document,docalias__name=name)
@ -840,13 +832,12 @@ def document_referenced_by(request, name):
else:
numdocs=None
refs=sorted(refs,key=lambda x:(['refnorm','refinfo','refunk','refold'].index(x.relationship.slug),x.source.canonical_name()))
return render_to_response("doc/document_referenced_by.html",
return render(request, "doc/document_referenced_by.html",
dict(alias_name=name,
doc=doc,
numdocs=numdocs,
refs=refs,
),
context_instance=RequestContext(request))
))
def document_ballot_content(request, doc, ballot_id, editable=True):
"""Render HTML string with content of ballot page."""
@ -903,7 +894,7 @@ def document_ballot_content(request, doc, ballot_id, editable=True):
summary=summary,
all_ballots=all_ballots,
),
context_instance=RequestContext(request))
request=request)
def document_ballot(request, name, ballot_id=None):
doc = get_object_or_404(Document, docalias__name=name)
@ -913,22 +904,20 @@ def document_ballot(request, name, ballot_id=None):
request.session['ballot_edit_return_point'] = request.path_info
return render_to_response("doc/document_ballot.html",
return render(request, "doc/document_ballot.html",
dict(doc=doc,
top=top,
ballot_content=c,
),
context_instance=RequestContext(request))
))
def ballot_popup(request, name, ballot_id):
doc = get_object_or_404(Document, docalias__name=name)
c = document_ballot_content(request, doc, ballot_id=ballot_id, editable=False)
return render_to_response("doc/ballot_popup.html",
return render(request, "doc/ballot_popup.html",
dict(doc=doc,
ballot_content=c,
ballot_id=ballot_id,
),
context_instance=RequestContext(request))
))
def document_json(request, name, rev=None):
@ -982,7 +971,7 @@ def document_json(request, name, rev=None):
return HttpResponse(json.dumps(data, indent=2), content_type='application/json')
class AddCommentForm(forms.Form):
comment = forms.CharField(required=True, widget=forms.Textarea)
comment = forms.CharField(required=True, widget=forms.Textarea, strip=False)
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair', 'RG Chair', 'WG Secretary', 'RG Secretary', 'IANA', 'RFC Editor')
def add_comment(request, name):
@ -1019,10 +1008,9 @@ def add_comment(request, name):
else:
form = AddCommentForm()
return render_to_response('doc/add_comment.html',
return render(request, 'doc/add_comment.html',
dict(doc=doc,
form=form),
context_instance=RequestContext(request))
form=form))
@role_required("Area Director", "Secretariat")
def telechat_date(request, name):
@ -1109,12 +1097,12 @@ def edit_notify(request, name):
titletext = 'the conflict review of %s' % conflictdoc.canonical_name()
else:
titletext = '%s' % doc.canonical_name()
return render_to_response('doc/edit_notify.html',
return render(request, 'doc/edit_notify.html',
{'form': form,
'doc': doc,
'titletext': titletext,
},
context_instance = RequestContext(request))
)
def email_aliases(request,name=''):
doc = get_object_or_404(Document, name=name) if name else None

View file

@ -4,9 +4,8 @@ import datetime
from django import forms
from django.http import HttpResponseRedirect, HttpResponseForbidden, Http404
from django.shortcuts import render_to_response, get_object_or_404, redirect, render
from django.shortcuts import render, get_object_or_404, redirect
from django.template.loader import render_to_string
from django.template import RequestContext
from django.conf import settings
from django.forms.utils import ErrorList
from django.contrib.auth.decorators import login_required
@ -44,7 +43,7 @@ from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
state = forms.ModelChoiceField(State.objects.filter(used=True, type="draft-iesg"), empty_label=None, required=True)
substate = forms.ModelChoiceField(DocTagName.objects.filter(slug__in=IESG_SUBSTATE_TAGS), required=False)
comment = forms.CharField(widget=forms.Textarea, required=False)
comment = forms.CharField(widget=forms.Textarea, required=False, strip=False)
def clean(self):
retclean = self.cleaned_data
@ -131,10 +130,9 @@ def change_state(request, name):
if new_state.slug == "lc-req":
request_last_call(request, doc)
return render_to_response('doc/draft/last_call_requested.html',
return render(request, 'doc/draft/last_call_requested.html',
dict(doc=doc,
url=doc.get_absolute_url()),
context_instance=RequestContext(request))
url=doc.get_absolute_url()))
return HttpResponseRedirect(doc.get_absolute_url())
@ -159,14 +157,13 @@ def change_state(request, name):
to_iesg_eval = State.objects.get(used=True, type="draft-iesg", slug="iesg-eva")
next_states = next_states.exclude(slug="iesg-eva")
return render_to_response('doc/draft/change_state.html',
return render(request, 'doc/draft/change_state.html',
dict(form=form,
doc=doc,
state=state,
prev_state=prev_state,
next_states=next_states,
to_iesg_eval=to_iesg_eval),
context_instance=RequestContext(request))
to_iesg_eval=to_iesg_eval))
class ChangeIanaStateForm(forms.Form):
state = forms.ModelChoiceField(State.objects.all(), required=False)
@ -204,16 +201,15 @@ def change_iana_state(request, name, state_type):
else:
form = ChangeIanaStateForm(state_type, initial=dict(state=prev_state.pk if prev_state else None))
return render_to_response('doc/draft/change_iana_state.html',
return render(request, 'doc/draft/change_iana_state.html',
dict(form=form,
doc=doc),
context_instance=RequestContext(request))
doc=doc))
class ChangeStreamForm(forms.Form):
stream = forms.ModelChoiceField(StreamName.objects.exclude(slug="legacy"), required=False)
comment = forms.CharField(widget=forms.Textarea, required=False)
comment = forms.CharField(widget=forms.Textarea, required=False, strip=False)
@login_required
def change_stream(request, name):
@ -275,11 +271,10 @@ def change_stream(request, name):
stream = doc.stream
form = ChangeStreamForm(initial=dict(stream=stream))
return render_to_response('doc/draft/change_stream.html',
return render(request, 'doc/draft/change_stream.html',
dict(form=form,
doc=doc,
),
context_instance=RequestContext(request))
))
@jsonapi
def doc_ajax_internet_draft(request):
@ -296,7 +291,7 @@ def doc_ajax_internet_draft(request):
class ReplacesForm(forms.Form):
replaces = SearchableDocAliasesField(required=False)
comment = forms.CharField(widget=forms.Textarea, required=False)
comment = forms.CharField(widget=forms.Textarea, required=False, strip=False)
def __init__(self, *args, **kwargs):
self.doc = kwargs.pop('doc')
@ -348,7 +343,7 @@ class SuggestedReplacesForm(forms.Form):
replaces = forms.ModelMultipleChoiceField(queryset=DocAlias.objects.all(),
label="Suggestions", required=False, widget=forms.CheckboxSelectMultiple,
help_text="Select only the documents that are replaced by this document")
comment = forms.CharField(label="Optional comment", widget=forms.Textarea, required=False)
comment = forms.CharField(label="Optional comment", widget=forms.Textarea, required=False, strip=False)
def __init__(self, suggested, *args, **kwargs):
super(SuggestedReplacesForm, self).__init__(*args, **kwargs)
@ -408,7 +403,7 @@ def review_possibly_replaces(request, name):
class ChangeIntentionForm(forms.Form):
intended_std_level = forms.ModelChoiceField(IntendedStdLevelName.objects.filter(used=True), empty_label="(None)", required=True, label="Intended RFC status")
comment = forms.CharField(widget=forms.Textarea, required=False)
comment = forms.CharField(widget=forms.Textarea, required=False, strip=False)
def change_intention(request, name):
"""Change the intended publication status of a Document of type 'draft' , notifying parties
@ -467,11 +462,10 @@ def change_intention(request, name):
intended_std_level = doc.intended_std_level
form = ChangeIntentionForm(initial=dict(intended_std_level=intended_std_level))
return render_to_response('doc/draft/change_intended_status.html',
return render(request, 'doc/draft/change_intended_status.html',
dict(form=form,
doc=doc,
),
context_instance=RequestContext(request))
))
class EditInfoForm(forms.Form):
intended_std_level = forms.ModelChoiceField(IntendedStdLevelName.objects.filter(used=True), empty_label="(None)", required=True, label="Intended RFC status")
@ -479,7 +473,7 @@ class EditInfoForm(forms.Form):
ad = forms.ModelChoiceField(Person.objects.filter(role__name="ad", role__group__state="active",role__group__type='area').order_by('name'), label="Responsible AD", empty_label="(None)", required=True)
create_in_state = forms.ModelChoiceField(State.objects.filter(used=True, type="draft-iesg", slug__in=("pub-req", "watching")), empty_label=None, required=False)
notify = forms.CharField(max_length=255, label="Notice emails", help_text="Separate email addresses with commas.", required=False)
note = forms.CharField(widget=forms.Textarea, label="IESG note", required=False)
note = forms.CharField(widget=forms.Textarea, label="IESG note", required=False, strip=False)
telechat_date = forms.TypedChoiceField(coerce=lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date(), empty_value=None, required=False, widget=forms.Select(attrs={'onchange':'make_bold()'}))
returning_item = forms.BooleanField(required=False)
@ -603,7 +597,7 @@ def to_iesg(request,name):
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/submit_to_iesg.html',
return render(request, 'doc/submit_to_iesg.html',
dict(doc=doc,
warn=warn,
target_state=target_state,
@ -611,8 +605,7 @@ def to_iesg(request,name):
shepherd_writeup=shepherd_writeup,
tags=tags,
notify=notify,
),
context_instance=RequestContext(request))
))
@role_required('Area Director','Secretariat')
def edit_info(request, name):
@ -754,12 +747,11 @@ def edit_info(request, name):
if doc.group.type_id not in ("individ", "area"):
form.standard_fields = [x for x in form.standard_fields if x.name != "area"]
return render_to_response('doc/draft/edit_info.html',
return render(request, 'doc/draft/edit_info.html',
dict(doc=doc,
form=form,
user=request.user,
ballot_issued=doc.latest_event(type="sent_ballot_announcement")),
context_instance=RequestContext(request))
ballot_issued=doc.latest_event(type="sent_ballot_announcement")))
@role_required('Area Director','Secretariat')
def request_resurrect(request, name):
@ -780,10 +772,9 @@ def request_resurrect(request, name):
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/draft/request_resurrect.html',
return render(request, 'doc/draft/request_resurrect.html',
dict(doc=doc,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
@role_required('Secretariat')
def resurrect(request, name):
@ -814,14 +805,13 @@ def resurrect(request, name):
return HttpResponseRedirect(doc.get_absolute_url())
return render_to_response('doc/draft/resurrect.html',
return render(request, 'doc/draft/resurrect.html',
dict(doc=doc,
resurrect_requested_by=resurrect_requested_by,
back_url=doc.get_absolute_url()),
context_instance=RequestContext(request))
back_url=doc.get_absolute_url()))
class IESGNoteForm(forms.Form):
note = forms.CharField(widget=forms.Textarea, label="IESG note", required=False)
note = forms.CharField(widget=forms.Textarea, label="IESG note", required=False, strip=False)
def clean_note(self):
# not munging the database content to use html line breaks --
@ -861,14 +851,13 @@ def edit_iesg_note(request, name):
else:
form = IESGNoteForm(initial=initial)
return render_to_response('doc/draft/edit_iesg_note.html',
return render(request, 'doc/draft/edit_iesg_note.html',
dict(doc=doc,
form=form,
),
context_instance=RequestContext(request))
))
class ShepherdWriteupUploadForm(forms.Form):
content = forms.CharField(widget=forms.Textarea, label="Shepherd writeup", help_text="Edit the shepherd writeup.", required=False)
content = forms.CharField(widget=forms.Textarea, label="Shepherd writeup", help_text="Edit the shepherd writeup.", required=False, strip=False)
txt = forms.FileField(label=".txt format", help_text="Or upload a .txt file.", required=False)
def clean_content(self):
@ -941,11 +930,10 @@ def edit_shepherd_writeup(request, name):
)
form = ShepherdWriteupUploadForm(initial=init)
return render_to_response('doc/draft/change_shepherd_writeup.html',
return render(request, 'doc/draft/change_shepherd_writeup.html',
{'form': form,
'doc' : doc,
},
context_instance=RequestContext(request))
})
class ShepherdForm(forms.Form):
shepherd = SearchableEmailField(required=False, only_users=True)
@ -1078,11 +1066,11 @@ def edit_ad(request, name):
init = { "ad" : doc.ad_id }
form = AdForm(initial=init)
return render_to_response('doc/draft/change_ad.html',
{'form': form,
'doc': doc,
},
context_instance = RequestContext(request))
return render(request, 'doc/draft/change_ad.html',
{'form': form,
'doc': doc,
},
)
class ConsensusForm(forms.Form):
consensus = forms.ChoiceField(choices=(("Unknown", "Unknown"), ("Yes", "Yes"), ("No", "No")),
@ -1119,15 +1107,15 @@ def edit_consensus(request, name):
else:
form = ConsensusForm(initial=dict(consensus=nice_consensus(prev_consensus)))
return render_to_response('doc/draft/change_consensus.html',
return render(request, 'doc/draft/change_consensus.html',
{'form': form,
'doc': doc,
},
context_instance = RequestContext(request))
)
class PublicationForm(forms.Form):
subject = forms.CharField(max_length=200, required=True)
body = forms.CharField(widget=forms.Textarea, required=True)
body = forms.CharField(widget=forms.Textarea, required=True, strip=False)
def request_publication(request, name):
"""Request publication by RFC Editor for a document which hasn't
@ -1157,11 +1145,10 @@ def request_publication(request, name):
import ietf.sync.rfceditor
response, error = ietf.sync.rfceditor.post_approved_draft(settings.RFC_EDITOR_SYNC_NOTIFICATION_URL, doc.name)
if error:
return render_to_response('doc/draft/rfceditor_post_approved_draft_failed.html',
return render(request, 'doc/draft/rfceditor_post_approved_draft_failed.html',
dict(name=doc.name,
response=response,
error=error),
context_instance=RequestContext(request))
error=error))
m.subject = form.cleaned_data["subject"]
m.body = form.cleaned_data["body"]
@ -1208,7 +1195,7 @@ def request_publication(request, name):
form = PublicationForm(initial=dict(subject=subject,
body=body))
return render_to_response('doc/draft/request_publication.html',
return render(request, 'doc/draft/request_publication.html',
dict(form=form,
doc=doc,
message=m,
@ -1217,12 +1204,12 @@ def request_publication(request, name):
True if (doc.stream_id and doc.stream_id=='ietf')
else (consensus_event != None and consensus_event.consensus != None)),
),
context_instance = RequestContext(request))
)
class AdoptDraftForm(forms.Form):
group = forms.ModelChoiceField(queryset=Group.objects.filter(type__in=["wg", "rg"], state="active").order_by("-type", "acronym"), required=True, empty_label=None)
newstate = forms.ModelChoiceField(queryset=State.objects.filter(type__in=['draft-stream-ietf','draft-stream-irtf'],slug__in=['wg-cand', 'c-adopt', 'adopt-wg', 'info', 'wg-doc', 'candidat','active']),required=True,label="State")
comment = forms.CharField(widget=forms.Textarea, required=False, label="Comment", help_text="Optional comment explaining the reasons for the adoption.")
comment = forms.CharField(widget=forms.Textarea, required=False, label="Comment", help_text="Optional comment explaining the reasons for the adoption.", strip=False)
weeks = forms.IntegerField(required=False, label="Expected weeks in adoption state")
def __init__(self, *args, **kwargs):
@ -1338,16 +1325,15 @@ def adopt_draft(request, name):
else:
form = AdoptDraftForm(user=request.user)
return render_to_response('doc/draft/adopt_draft.html',
return render(request, 'doc/draft/adopt_draft.html',
{'doc': doc,
'form': form,
},
context_instance=RequestContext(request))
})
class ChangeStreamStateForm(forms.Form):
new_state = forms.ModelChoiceField(queryset=State.objects.filter(used=True), label='State' )
weeks = forms.IntegerField(label='Expected weeks in state',required=False)
comment = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional comment for the document history.")
comment = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional comment for the document history.", strip=False)
tags = forms.ModelMultipleChoiceField(queryset=DocTagName.objects.filter(used=True), widget=forms.CheckboxSelectMultiple, required=False)
def __init__(self, *args, **kwargs):
@ -1483,11 +1469,10 @@ def change_stream_state(request, name, state_type):
milestones = doc.groupmilestone_set.all()
return render_to_response("doc/draft/change_stream_state.html",
return render(request, "doc/draft/change_stream_state.html",
{"doc": doc,
"form": form,
"milestones": milestones,
"state_type": state_type,
"next_states": next_states,
},
context_instance=RequestContext(request))
})

View file

@ -1,5 +1,4 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404
from django.http import Http404
from ietf.doc.models import State, StateType, IESG_SUBSTATE_TAGS
@ -45,14 +44,14 @@ def state_help(request, type):
possible = get_tags_for_stream_id(state_type.slug.replace("draft-stream-", ""))
tags = DocTagName.objects.filter(slug__in=possible)
return render_to_response("doc/state_help.html", {
"title": title,
"state_type": state_type,
"states": states,
"has_next_states": has_next_states,
"tags": tags,
},
context_instance=RequestContext(request))
return render(request, "doc/state_help.html",
{
"title": title,
"state_type": state_type,
"states": states,
"has_next_states": has_next_states,
"tags": tags,
} )
def relationship_help(request,subset=None):
subsets = { "reference": ['refnorm','refinfo','refunk','refold'],
@ -63,7 +62,4 @@ def relationship_help(request,subset=None):
rels = DocRelationshipName.objects.filter(used=True)
if subset:
rels = rels.filter(slug__in=subsets[subset])
return render_to_response("doc/relationship_help.html", {
"relations": rels
},
context_instance=RequestContext(request))
return render(request, "doc/relationship_help.html", { "relations": rels } )

View file

@ -31,7 +31,7 @@ def choose_material_type(request, acronym):
class UploadMaterialForm(forms.Form):
title = forms.CharField(max_length=Document._meta.get_field("title").max_length)
name = forms.CharField(max_length=Document._meta.get_field("name").max_length)
abstract = forms.CharField(max_length=Document._meta.get_field("abstract").max_length,widget=forms.Textarea)
abstract = forms.CharField(max_length=Document._meta.get_field("abstract").max_length,widget=forms.Textarea, strip=False)
state = forms.ModelChoiceField(State.objects.all(), empty_label=None)
material = forms.FileField(label='File')

View file

@ -286,7 +286,7 @@ def assign_reviewer(request, name, request_id):
})
class RejectReviewerAssignmentForm(forms.Form):
message_to_secretary = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional explanation of rejection, will be emailed to team secretary if filled in")
message_to_secretary = forms.CharField(widget=forms.Textarea, required=False, help_text="Optional explanation of rejection, will be emailed to team secretary if filled in", strip=False)
@login_required
def reject_reviewer_assignment(request, name, request_id):
@ -356,7 +356,7 @@ class CompleteReviewForm(forms.Form):
review_url = forms.URLField(label="Link to message", required=False)
review_file = forms.FileField(label="Text file to upload", required=False)
review_content = forms.CharField(widget=forms.Textarea, required=False)
review_content = forms.CharField(widget=forms.Textarea, required=False, strip=False)
completion_date = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={ "autoclose": "1" }, initial=datetime.date.today, help_text="Date of announcement of the results of this review")
completion_time = forms.TimeField(widget=forms.HiddenInput, initial=datetime.time.min)
cc = MultiEmailField(required=False, help_text="Email addresses to send to in addition to the review team list")
@ -623,7 +623,7 @@ def search_mail_archive(request, name, request_id):
return JsonResponse(res)
class EditReviewRequestCommentForm(forms.ModelForm):
comment = forms.CharField(widget=forms.Textarea)
comment = forms.CharField(widget=forms.Textarea, strip=False)
class Meta:
fields = ['comment',]
model = ReviewRequest

View file

@ -8,8 +8,7 @@ from django.core.cache import cache
from django.core.urlresolvers import reverse as urlreverse
from django.db.models.aggregates import Count
from django.http import JsonResponse, HttpResponseBadRequest
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render
from django.views.decorators.cache import cache_page
import debug # pyflakes:ignore
@ -113,13 +112,13 @@ def make_title(queryargs):
return title
def chart_newrevisiondocevent(request):
return render_to_response("doc/stats/highstock.html", {
return render(request, "doc/stats/highstock.html", {
"title": "Document Statistics",
"confurl": urlreverse("ietf.doc.views_stats.chart_conf_newrevisiondocevent"),
"dataurl": urlreverse("ietf.doc.views_stats.chart_data_newrevisiondocevent"),
"queryargs": request.GET.urlencode(),
},
context_instance=RequestContext(request))
}
)
#@cache_page(60*15)
def chart_data_newrevisiondocevent(request):

View file

@ -1,10 +1,9 @@
import datetime, os, re
from django import forms
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.shortcuts import render, get_object_or_404, redirect
from django.http import Http404, HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.template import RequestContext
from django.template.loader import render_to_string
from django.conf import settings
@ -25,7 +24,7 @@ from ietf.mailtrigger.utils import gather_address_lists
class ChangeStateForm(forms.Form):
new_state = forms.ModelChoiceField(State.objects.filter(type="statchg", used=True), label="Status Change Evaluation State", empty_label=None, required=True)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the review history.", required=False)
comment = forms.CharField(widget=forms.Textarea, help_text="Optional comment for the review history.", required=False, strip=False)
@role_required("Area Director", "Secretariat")
@ -74,11 +73,10 @@ def change_state(request, name, option=None):
if new_state.slug == "lc-req":
request_last_call(request, status_change)
return render_to_response('doc/draft/last_call_requested.html',
return render(request, 'doc/draft/last_call_requested.html',
dict(doc=status_change,
url = status_change.get_absolute_url(),
),
context_instance=RequestContext(request))
))
return redirect('doc_view', name=status_change.name)
else:
@ -89,13 +87,12 @@ def change_state(request, name, option=None):
)
form = ChangeStateForm(initial=init)
return render_to_response('doc/change_state.html',
return render(request, 'doc/change_state.html',
dict(form=form,
doc=status_change,
login=login,
help_url=reverse('state_help', kwargs=dict(type="status-change")),
),
context_instance=RequestContext(request))
))
def send_status_change_eval_email(request,doc):
msg = render_to_string("doc/eval_email.txt",
@ -110,7 +107,7 @@ def send_status_change_eval_email(request,doc):
send_mail_preformatted(request,msg,override=override)
class UploadForm(forms.Form):
content = forms.CharField(widget=forms.Textarea, label="Status change text", help_text="Edit the status change text.", required=False)
content = forms.CharField(widget=forms.Textarea, label="Status change text", help_text="Edit the status change text.", required=False, strip=False)
txt = forms.FileField(label=".txt format", help_text="Or upload a .txt file.", required=False)
def clean_content(self):
@ -192,12 +189,11 @@ def submit(request, name):
form = UploadForm(initial=init)
return render_to_response('doc/status_change/submit.html',
return render(request, 'doc/status_change/submit.html',
{'form': form,
'next_rev': next_rev,
'doc' : doc,
},
context_instance=RequestContext(request))
})
class ChangeTitleForm(forms.Form):
title = forms.CharField(max_length=255, label="Title", required=True)
@ -227,12 +223,12 @@ def edit_title(request, name):
form = ChangeTitleForm(initial=init)
titletext = '%s-%s.txt' % (status_change.canonical_name(),status_change.rev)
return render_to_response('doc/change_title.html',
return render(request, 'doc/change_title.html',
{'form': form,
'doc': status_change,
'titletext' : titletext,
},
context_instance = RequestContext(request))
)
@role_required("Area Director", "Secretariat")
def edit_ad(request, name):
@ -258,12 +254,12 @@ def edit_ad(request, name):
form = AdForm(initial=init)
titletext = '%s-%s.txt' % (status_change.canonical_name(),status_change.rev)
return render_to_response('doc/change_ad.html',
return render(request, 'doc/change_ad.html',
{'form': form,
'doc': status_change,
'titletext' : titletext,
},
context_instance = RequestContext(request))
)
def newstatus(relateddoc):
@ -308,7 +304,7 @@ def default_approval_text(status_change,relateddoc):
from django.forms.formsets import formset_factory
class AnnouncementForm(forms.Form):
announcement_text = forms.CharField(widget=forms.Textarea, label="Status Change Announcement", help_text="Edit the announcement message.", required=True)
announcement_text = forms.CharField(widget=forms.Textarea, label="Status Change Announcement", help_text="Edit the announcement message.", required=True, strip=False)
label = None
def __init__(self, *args, **kwargs):
@ -379,12 +375,11 @@ def approve(request, name):
for form in formset.forms:
form.fields['announcement_text'].label=form.label
return render_to_response('doc/status_change/approve.html',
return render(request, 'doc/status_change/approve.html',
dict(
doc = status_change,
formset = formset,
),
context_instance=RequestContext(request))
))
def clean_helper(form, formtype):
cleaned_data = super(formtype, form).clean()
@ -494,10 +489,10 @@ def rfc_status_changes(request):
docs=Document.objects.filter(type__slug='statchg')
doclist=[x for x in docs]
doclist.sort(key=lambda obj: obj.get_state().order)
return render_to_response('doc/status_change/status_changes.html',
return render(request, 'doc/status_change/status_changes.html',
{'docs' : doclist,
},
context_instance = RequestContext(request))
)
@role_required("Area Director","Secretariat")
def start_rfc_status_change(request,name):
@ -552,11 +547,11 @@ def start_rfc_status_change(request,name):
init['relations'] = relations
form = StartStatusChangeForm(initial=init)
return render_to_response('doc/status_change/start.html',
return render(request, 'doc/status_change/start.html',
{'form': form,
'relation_slugs': relation_slugs,
},
context_instance = RequestContext(request))
)
@role_required("Area Director", "Secretariat")
def edit_relations(request, name):
@ -600,13 +595,13 @@ def edit_relations(request, name):
}
form = EditStatusChangeForm(initial=init)
return render_to_response('doc/status_change/edit_relations.html',
return render(request, 'doc/status_change/edit_relations.html',
{
'doc': status_change,
'form': form,
'relation_slugs': relation_slugs,
},
context_instance = RequestContext(request))
)
def generate_last_call_text(request, doc):
@ -683,21 +678,21 @@ def last_call(request, name):
request_last_call(request, status_change)
return render_to_response('doc/draft/last_call_requested.html',
dict(doc=status_change,
url = status_change.get_absolute_url(),
),
context_instance=RequestContext(request))
return render(request, 'doc/draft/last_call_requested.html',
dict(doc=status_change,
url = status_change.get_absolute_url(),
)
)
if "regenerate_last_call_text" in request.POST:
e = generate_last_call_text(request,status_change)
form = LastCallTextForm(initial=dict(last_call_text=e.text))
return render_to_response('doc/status_change/last_call.html',
return render(request, 'doc/status_change/last_call.html',
dict(doc=status_change,
back_url = status_change.get_absolute_url(),
last_call_event = last_call_event,
last_call_form = form,
),
context_instance = RequestContext(request))
)

View file

@ -1,4 +1,3 @@
from django.conf.urls import patterns
from django.views.generic import RedirectView
from django.conf import settings
@ -8,16 +7,16 @@ from ietf.iesg.feeds import IESGAgendaFeed
from ietf.ipr.feeds import LatestIprDisclosuresFeed
from ietf.liaisons.feeds import LiaisonStatementsFeed
from ietf.meeting.feeds import LatestMeetingMaterialFeed
from ietf.utils.urls import url
urlpatterns = patterns(
'',
(r'^comments/(?P<remainder>.*)/$', RedirectView.as_view(url='/feed/document-changes/%(remainder)s/', permanent=True)),
(r'^document-changes/%(name)s/$' % settings.URL_REGEXPS, DocumentChangesFeed()),
(r'^last-call/$', InLastCallFeed()),
(r'^group-changes/%(acronym)s/$' % settings.URL_REGEXPS, GroupChangesFeed()),
(r'^iesg-agenda/$', IESGAgendaFeed()),
(r'^ipr/$', LatestIprDisclosuresFeed()),
(r'^liaison/(?P<kind>recent|from|to|subject)/(?:(?P<search>[^/]+)/)?$', LiaisonStatementsFeed()),
(r'^wg-proceedings/$', LatestMeetingMaterialFeed()),
(r'^rfc/$', RfcFeed())
)
urlpatterns = [
url(r'^comments/(?P<remainder>.*)/$', RedirectView.as_view(url='/feed/document-changes/%(remainder)s/', permanent=True)),
url(r'^document-changes/%(name)s/$' % settings.URL_REGEXPS, DocumentChangesFeed()),
url(r'^last-call/$', InLastCallFeed()),
url(r'^group-changes/%(acronym)s/$' % settings.URL_REGEXPS, GroupChangesFeed()),
url(r'^iesg-agenda/$', IESGAgendaFeed()),
url(r'^ipr/$', LatestIprDisclosuresFeed()),
url(r'^liaison/(?P<kind>recent|from|to|subject)/(?:(?P<search>[^/]+)/)?$', LiaisonStatementsFeed()),
url(r'^wg-proceedings/$', LatestMeetingMaterialFeed()),
url(r'^rfc/$', RfcFeed())
]

View file

@ -1,12 +1,11 @@
from functools import update_wrapper
from django import template
from django.contrib import admin
from django.contrib.admin.utils import unquote
from django.core.exceptions import PermissionDenied
from django.core.management import load_command_class
from django.http import Http404
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.utils.encoding import force_unicode
from django.utils.html import escape
from django.utils.translation import ugettext as _
@ -42,7 +41,7 @@ class GroupAdmin(admin.ModelAdmin):
# SDO reminder
def get_urls(self):
from django.conf.urls import patterns, url
from django.conf.urls import url
def wrap(view):
def wrapper(*args, **kwargs):
@ -51,10 +50,10 @@ class GroupAdmin(admin.ModelAdmin):
info = self.model._meta.app_label, self.model._meta.model_name
urls = patterns('',
urls = [
url(r'^reminder/$', wrap(self.send_reminder), name='%s_%s_reminder' % info),
url(r'^(.+)/reminder/$', wrap(self.send_one_reminder), name='%s_%s_one_reminder' % info),
)
]
urls += super(GroupAdmin, self).get_urls()
return urls
@ -76,10 +75,8 @@ class GroupAdmin(admin.ModelAdmin):
'output': output,
'sdo': sdo,
}
return render_to_response('admin/group/group/send_sdo_reminder.html',
context,
context_instance = template.RequestContext(request, current_app=self.admin_site.name),
)
return render(request, 'admin/group/group/send_sdo_reminder.html', context )
def send_one_reminder(self, request, object_id):
model = self.model

View file

@ -1,19 +1,18 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from django.conf.urls import patterns, include
from django.conf.urls import url, include
from django.conf import settings
urlpatterns = patterns('',
(r'^$', 'ietf.group.views.active_groups'),
(r'^groupmenu.json', 'ietf.group.views_ajax.group_menu_data', None, "group_menu_data"),
(r'^%(acronym)s.json$' % settings.URL_REGEXPS, 'ietf.group.views_ajax.group_json'),
(r'^chartering/$', 'ietf.group.views.chartering_groups'),
(r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.views_edit.edit', {'action': "charter"}, "group_create"),
(r'^concluded/$', 'ietf.group.views.concluded_groups'),
(r'^email-aliases/$', 'ietf.group.views.email_aliases'),
(r'^all-status/$', 'ietf.group.views.all_status'),
(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'ietf.group.views.group_home', None, "group_home"),
(r'^%(acronym)s/' % settings.URL_REGEXPS, include('ietf.group.urls_info_details')),
)
urlpatterns = [
url(r'^$', 'ietf.group.views.active_groups'),
url(r'^groupmenu.json', 'ietf.group.views_ajax.group_menu_data', None, "group_menu_data"),
url(r'^%(acronym)s.json$' % settings.URL_REGEXPS, 'ietf.group.views_ajax.group_json'),
url(r'^chartering/$', 'ietf.group.views.chartering_groups'),
url(r'^chartering/create/(?P<group_type>(wg|rg))/$', 'ietf.group.views_edit.edit', {'action': "charter"}, "group_create"),
url(r'^concluded/$', 'ietf.group.views.concluded_groups'),
url(r'^email-aliases/$', 'ietf.group.views.email_aliases'),
url(r'^all-status/$', 'ietf.group.views.all_status'),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'ietf.group.views.group_home', None, "group_home"),
url(r'^%(acronym)s/' % settings.URL_REGEXPS, include('ietf.group.urls_info_details')),
]

View file

@ -1,25 +1,25 @@
# Copyright The IETF Trust 2008, All Rights Reserved
from django.conf.urls import patterns, include
from django.conf.urls import url, include
from django.views.generic import RedirectView
from django.conf import settings
from ietf.group import views, views_edit
urlpatterns = patterns('',
(r'^$', views.active_groups),
(r'^summary.txt', RedirectView.as_view(url='/wg/1wg-summary.txt', permanent=True)),
(r'^summary-by-area.txt', RedirectView.as_view(url='/wg/1wg-summary.txt', permanent=True)),
(r'^summary-by-acronym.txt', RedirectView.as_view(url='/wg/1wg-summary-by-acronym.txt', permanent=True)),
(r'^1wg-summary.txt', views.wg_summary_area),
(r'^1wg-summary-by-acronym.txt', views.wg_summary_acronym),
(r'^1wg-charters.txt', views.wg_charters),
(r'^1wg-charters-by-acronym.txt', views.wg_charters_by_acronym),
(r'^chartering/$', RedirectView.as_view(url='/group/chartering/', permanent=True)),
(r'^chartering/create/$', RedirectView.as_view(url='/group/chartering/create/%(group_type)s/', permanent=True)),
(r'^bofs/$', views.bofs),
(r'^email-aliases/$', 'ietf.group.views.email_aliases'),
(r'^bofs/create/$', views_edit.edit, {'action': "create", }, "bof_create"),
(r'^photos/$', views.chair_photos),
(r'^%(acronym)s/' % settings.URL_REGEXPS, include('ietf.group.urls_info_details')),
)
urlpatterns = [
url(r'^$', views.active_groups),
url(r'^summary.txt', RedirectView.as_view(url='/wg/1wg-summary.txt', permanent=True)),
url(r'^summary-by-area.txt', RedirectView.as_view(url='/wg/1wg-summary.txt', permanent=True)),
url(r'^summary-by-acronym.txt', RedirectView.as_view(url='/wg/1wg-summary-by-acronym.txt', permanent=True)),
url(r'^1wg-summary.txt', views.wg_summary_area),
url(r'^1wg-summary-by-acronym.txt', views.wg_summary_acronym),
url(r'^1wg-charters.txt', views.wg_charters),
url(r'^1wg-charters-by-acronym.txt', views.wg_charters_by_acronym),
url(r'^chartering/$', RedirectView.as_view(url='/group/chartering/', permanent=True)),
url(r'^chartering/create/$', RedirectView.as_view(url='/group/chartering/create/%(group_type)s/', permanent=True)),
url(r'^bofs/$', views.bofs),
url(r'^email-aliases/$', 'ietf.group.views.email_aliases'),
url(r'^bofs/create/$', views_edit.edit, {'action': "create", }, "bof_create"),
url(r'^photos/$', views.chair_photos),
url(r'^%(acronym)s/' % settings.URL_REGEXPS, include('ietf.group.urls_info_details')),
]

View file

@ -1,40 +1,40 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.views.generic import RedirectView
from ietf.group import views, views_review
urlpatterns = patterns('',
(r'^$', 'ietf.group.views.group_home', None, "group_home"),
(r'^documents/txt/$', 'ietf.group.views.group_documents_txt'),
(r'^documents/$', 'ietf.group.views.group_documents', None, "group_docs"),
(r'^documents/manage/$', 'ietf.community.views.manage_list'),
(r'^documents/csv/$', 'ietf.community.views.export_to_csv'),
(r'^documents/feed/$', 'ietf.community.views.feed'),
(r'^documents/subscription/$', 'ietf.community.views.subscription'),
(r'^charter/$', 'ietf.group.views.group_about', None, 'group_charter'),
(r'^about/$', 'ietf.group.views.group_about', None, 'group_about'),
(r'^about/status/$', 'ietf.group.views.group_about_status'),
(r'^about/status/edit/$', 'ietf.group.views.group_about_status_edit'),
(r'^about/status/meeting/(?P<num>\d+)/$', 'ietf.group.views.group_about_status_meeting'),
(r'^history/$','ietf.group.views.history'),
(r'^email/$', 'ietf.group.views.email'),
(r'^deps/(?P<output_type>[\w-]+)/$', 'ietf.group.views.dependencies'),
(r'^meetings/$', 'ietf.group.views.meetings'),
(r'^edit/$', 'ietf.group.views_edit.edit', {'action': "edit"}, "group_edit"),
(r'^conclude/$', 'ietf.group.views_edit.conclude'),
(r'^milestones/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "current"}, "group_edit_milestones"),
(r'^milestones/charter/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "charter"}, "group_edit_charter_milestones"),
(r'^milestones/charter/reset/$', 'ietf.group.milestones.reset_charter_milestones', None, "group_reset_charter_milestones"),
(r'^workflow/$', 'ietf.group.views_edit.customize_workflow'),
(r'^materials/$', 'ietf.group.views.materials', None, "group_materials"),
(r'^materials/new/$', 'ietf.doc.views_material.choose_material_type'),
(r'^materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
(r'^archives/$', 'ietf.group.views.derived_archives'),
(r'^photos/$', views.group_photos),
(r'^reviews/$', views_review.review_requests),
(r'^reviews/manage/(?P<assignment_status>assigned|unassigned)/$', views_review.manage_review_requests),
(r'^reviews/email-assignments/$', views_review.email_open_review_assignments),
(r'^reviewers/$', views_review.reviewer_overview),
(r'^reviewers/(?P<reviewer_email>[\w%+-.@]+)/settings/$', views_review.change_reviewer_settings),
(r'^secretarysettings/$', views_review.change_review_secretary_settings),
urlpatterns = [
url(r'^$', 'ietf.group.views.group_home', None, "group_home"),
url(r'^documents/txt/$', 'ietf.group.views.group_documents_txt'),
url(r'^documents/$', 'ietf.group.views.group_documents', None, "group_docs"),
url(r'^documents/manage/$', 'ietf.community.views.manage_list'),
url(r'^documents/csv/$', 'ietf.community.views.export_to_csv'),
url(r'^documents/feed/$', 'ietf.community.views.feed'),
url(r'^documents/subscription/$', 'ietf.community.views.subscription'),
url(r'^charter/$', 'ietf.group.views.group_about', None, 'group_charter'),
url(r'^about/$', 'ietf.group.views.group_about', None, 'group_about'),
url(r'^about/status/$', 'ietf.group.views.group_about_status'),
url(r'^about/status/edit/$', 'ietf.group.views.group_about_status_edit'),
url(r'^about/status/meeting/(?P<num>\d+)/$', 'ietf.group.views.group_about_status_meeting'),
url(r'^history/$','ietf.group.views.history'),
url(r'^email/$', 'ietf.group.views.email'),
url(r'^deps/(?P<output_type>[\w-]+)/$', 'ietf.group.views.dependencies'),
url(r'^meetings/$', 'ietf.group.views.meetings'),
url(r'^edit/$', 'ietf.group.views_edit.edit', {'action': "edit"}, "group_edit"),
url(r'^conclude/$', 'ietf.group.views_edit.conclude'),
url(r'^milestones/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "current"}, "group_edit_milestones"),
url(r'^milestones/charter/$', 'ietf.group.milestones.edit_milestones', {'milestone_set': "charter"}, "group_edit_charter_milestones"),
url(r'^milestones/charter/reset/$', 'ietf.group.milestones.reset_charter_milestones', None, "group_reset_charter_milestones"),
url(r'^workflow/$', 'ietf.group.views_edit.customize_workflow'),
url(r'^materials/$', 'ietf.group.views.materials', None, "group_materials"),
url(r'^materials/new/$', 'ietf.doc.views_material.choose_material_type'),
url(r'^materials/new/(?P<doc_type>[\w-]+)/$', 'ietf.doc.views_material.edit_material', { 'action': "new" }, "group_new_material"),
url(r'^archives/$', 'ietf.group.views.derived_archives'),
url(r'^photos/$', views.group_photos),
url(r'^reviews/$', views_review.review_requests),
url(r'^reviews/manage/(?P<assignment_status>assigned|unassigned)/$', views_review.manage_review_requests),
url(r'^reviews/email-assignments/$', views_review.email_open_review_assignments),
url(r'^reviewers/$', views_review.reviewer_overview),
url(r'^reviewers/(?P<reviewer_email>[\w%+-.@]+)/settings/$', views_review.change_reviewer_settings),
url(r'^secretarysettings/$', views_review.change_review_secretary_settings),
url(r'^email-aliases/$', RedirectView.as_view(pattern_name='ietf.group.views.email',permanent=False),name='old_group_email_aliases'),
)
]

View file

@ -1,12 +1,12 @@
# Copyright The IETF Trust 2008, All Rights Reserved
from django.conf.urls import patterns
from django.conf.urls import url
from django.conf import settings
import views_stream
urlpatterns = patterns('',
(r'^$', views_stream.streams),
(r'^%(acronym)s/$' % settings.URL_REGEXPS, views_stream.stream_documents, None),
(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, views_stream.stream_edit),
)
urlpatterns = [
url(r'^$', views_stream.streams),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, views_stream.stream_documents, None),
url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, views_stream.stream_edit),
]

View file

@ -492,7 +492,7 @@ def group_about_status_meeting(request, acronym, num, group_type=None):
)
class StatusUpdateForm(forms.Form):
content = forms.CharField(widget=forms.Textarea, label='Status update', help_text = 'Edit the status update', required=False)
content = forms.CharField(widget=forms.Textarea, label='Status update', help_text = 'Edit the status update', required=False, strip=False)
txt = forms.FileField(label='.txt format', help_text='Or upload a .txt file', required=False)
def clean_content(self):

View file

@ -394,7 +394,7 @@ def edit(request, group_type=None, acronym=None, action="edit"):
class ConcludeForm(forms.Form):
instructions = forms.CharField(widget=forms.Textarea(attrs={'rows': 30}), required=True)
instructions = forms.CharField(widget=forms.Textarea(attrs={'rows': 30}), required=True, strip=False)
@login_required
def conclude(request, acronym, group_type=None):

View file

@ -347,7 +347,7 @@ class EmailOpenAssignmentsForm(forms.Form):
cc = MultiEmailField(required=False)
reply_to = MultiEmailField(required=False)
subject = forms.CharField()
body = forms.CharField(widget=forms.Textarea)
body = forms.CharField(widget=forms.Textarea, strip=False)
@login_required
def email_open_review_assignments(request, acronym, group_type=None):

View file

@ -1,7 +1,6 @@
# Copyright The IETF Trust 2008, All Rights Reserved
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from django.http import Http404, HttpResponseForbidden
from django import forms
@ -19,7 +18,7 @@ import debug # pyflakes:ignore
def streams(request):
streams = [ s.slug for s in StreamName.objects.all().exclude(slug__in=['ietf', 'legacy']) ]
streams = Group.objects.filter(acronym__in=streams)
return render_to_response('group/index.html', {'streams':streams}, context_instance=RequestContext(request))
return render(request, 'group/index.html', {'streams':streams})
def stream_documents(request, acronym):
streams = [ s.slug for s in StreamName.objects.all().exclude(slug__in=['ietf', 'legacy']) ]
@ -31,7 +30,7 @@ def stream_documents(request, acronym):
qs = Document.objects.filter(states__type="draft", states__slug__in=["active", "rfc"], stream=acronym)
docs, meta = prepare_document_table(request, qs)
return render_to_response('group/stream_documents.html', {'stream':stream, 'docs':docs, 'meta':meta, 'editable':editable }, context_instance=RequestContext(request))
return render(request, 'group/stream_documents.html', {'stream':stream, 'docs':docs, 'meta':meta, 'editable':editable } )
class StreamEditForm(forms.Form):
delegates = SearchableEmailsField(required=False, only_users=True)
@ -69,10 +68,11 @@ def stream_edit(request, acronym):
else:
form = StreamEditForm(initial=dict(delegates=Email.objects.filter(role__group=group, role__name="delegate")))
return render_to_response('group/stream_edit.html',
{'group': group,
'chairs': chairs,
'form': form,
},
context_instance=RequestContext(request))
return render(request, 'group/stream_edit.html',
{
'group': group,
'chairs': chairs,
'form': form,
},
)

View file

@ -1,8 +1,8 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('',
urlpatterns = [
url(r'^state/(?P<doc>[-\w]+)/(?P<type>[-\w]+)/?$', 'ietf.help.views.state'),
url(r'^state/(?P<doc>[-\w]+)/?$', 'ietf.help.views.state'),
url(r'^state/?$', 'ietf.help.views.state_index'),
)
]

View file

@ -2,8 +2,7 @@
import os
from django.template import RequestContext
from django.shortcuts import get_object_or_404, render_to_response
from django.shortcuts import get_object_or_404, render
import debug # pyflakes:ignore
@ -20,8 +19,7 @@ def state_index(request):
groups = StateType.objects.filter(slug__startswith=type.slug)
type.stategroups = [ g.slug[len(type.slug)+1:] for g in groups if not g == type ] or ""
return render_to_response('help/state_index.html', {"types": types},
context_instance=RequestContext(request))
return render(request, 'help/state_index.html', {"types": types})
def state(request, doc, type=None):
if type:
@ -31,8 +29,7 @@ def state(request, doc, type=None):
slug = "%s-%s" % (doc,type) if type else doc
statetype = get_object_or_404(StateType, slug=slug)
states = State.objects.filter(used=True, type=statetype).order_by('order')
return render_to_response('help/states.html', {"doc": doc, "type": statetype, "states":states},
context_instance=RequestContext(request))
return render(request, 'help/states.html', {"doc": doc, "type": statetype, "states":states} )
def environment(request):
if request.is_secure():
@ -40,5 +37,4 @@ def environment(request):
else:
os.environ['SCHEME'] = "http"
os.environ["URL"] = request.build_absolute_uri(".")
return render_to_response('help/environment.html', {"env": os.environ},
context_instance=RequestContext(request))
return render(request, 'help/environment.html', {"env": os.environ} )

View file

@ -32,27 +32,27 @@
# (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
from django.conf.urls import url
from django.views.generic import RedirectView
from django.conf import settings
urlpatterns = patterns('',
(r'^telechat/.*$', RedirectView.as_view(url='https://www.ietf.org/iesg/minutes.html', permanent=True)),
(r'^ann/(?:ind|new|prev)/$', RedirectView.as_view(url="/iesg/decisions/", permanent=True)),
(r'^telechatdates/$', RedirectView.as_view(url='/admin/iesg/telechatdate/', permanent=True)),
urlpatterns = [
url(r'^telechat/.*$', RedirectView.as_view(url='https://www.ietf.org/iesg/minutes.html', permanent=True)),
url(r'^ann/(?:ind|new|prev)/$', RedirectView.as_view(url="/iesg/decisions/", permanent=True)),
url(r'^telechatdates/$', RedirectView.as_view(url='/admin/iesg/telechatdate/', permanent=True)),
(r'^decisions/(?:(?P<year>[0-9]{4})/)?$', "ietf.iesg.views.review_decisions"),
(r'^agenda/(?:%(date)s/)?$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda"),
(r'^agenda/(?:%(date)s/)?agenda.txt$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_txt"),
(r'^agenda/(?:%(date)s/)?agenda.json$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_json"),
(r'^agenda/(?:%(date)s/)?scribe_template.html$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_scribe_template"),
(r'^agenda/(?:%(date)s/)?moderator_package.html$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_moderator_package"),
(r'^agenda/(?:%(date)s/)?agenda_package.txt$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_package"),
url(r'^decisions/(?:(?P<year>[0-9]{4})/)?$', "ietf.iesg.views.review_decisions"),
url(r'^agenda/(?:%(date)s/)?$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda"),
url(r'^agenda/(?:%(date)s/)?agenda.txt$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_txt"),
url(r'^agenda/(?:%(date)s/)?agenda.json$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_json"),
url(r'^agenda/(?:%(date)s/)?scribe_template.html$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_scribe_template"),
url(r'^agenda/(?:%(date)s/)?moderator_package.html$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_moderator_package"),
url(r'^agenda/(?:%(date)s/)?agenda_package.txt$' % settings.URL_REGEXPS, "ietf.iesg.views.agenda_package"),
(r'^agenda/documents.txt$', "ietf.iesg.views.agenda_documents_txt"),
(r'^agenda/documents/$', "ietf.iesg.views.agenda_documents"),
(r'^agenda/telechat-(?:%(date)s-)?docs.tgz' % settings.URL_REGEXPS, "ietf.iesg.views.telechat_docs_tarfile"),
(r'^discusses/$', "ietf.iesg.views.discusses"),
(r'^milestones/$', "ietf.iesg.views.milestones_needing_review"),
(r'^photos/$', "ietf.iesg.views.photos"),
)
url(r'^agenda/documents.txt$', "ietf.iesg.views.agenda_documents_txt"),
url(r'^agenda/documents/$', "ietf.iesg.views.agenda_documents"),
url(r'^agenda/telechat-(?:%(date)s-)?docs.tgz' % settings.URL_REGEXPS, "ietf.iesg.views.telechat_docs_tarfile"),
url(r'^discusses/$', "ietf.iesg.views.discusses"),
url(r'^milestones/$', "ietf.iesg.views.milestones_needing_review"),
url(r'^photos/$', "ietf.iesg.views.photos"),
]

View file

@ -47,8 +47,7 @@ from django import forms
from django.conf import settings
from django.db import models
from django.http import HttpResponse
from django.shortcuts import render_to_response, render, redirect
from django.template import RequestContext
from django.shortcuts import render, redirect
from django.contrib.sites.models import Site
@ -82,12 +81,12 @@ def review_decisions(request, year=None):
timeframe = u"%s" % year if year else u"the past 6 months"
return render_to_response('iesg/review_decisions.html',
return render(request, 'iesg/review_decisions.html',
dict(events=events,
years=years,
year=year,
timeframe=timeframe),
context_instance=RequestContext(request))
)
def agenda_json(request, date=None):
data = agenda_data(date)
@ -188,19 +187,19 @@ def agenda(request, date=None):
data["sections"]["1.3"]["title"] = data["sections"]["1.3"]["title"].replace("minutes", '<a href="https://www.ietf.org/iesg/internal/minutes.txt">Minutes</a>')
request.session['ballot_edit_return_point'] = request.path_info
return render_to_response("iesg/agenda.html", {
return render(request, "iesg/agenda.html", {
"date": data["date"],
"sections": sorted(data["sections"].iteritems()),
"settings": settings,
}, context_instance=RequestContext(request))
} )
def agenda_txt(request, date=None):
data = agenda_data(date)
return render_to_response("iesg/agenda.txt", {
return render(request, "iesg/agenda.txt", {
"date": data["date"],
"sections": sorted(data["sections"].iteritems()),
"domain": Site.objects.get_current().domain,
}, context_instance=RequestContext(request), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
}, content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
def agenda_scribe_template(request, date=None):
data = agenda_data(date)
@ -210,12 +209,12 @@ def agenda_scribe_template(request, date=None):
if "docs" in section:
# why are we here including documents that have no discuss/comment?
appendix_docs.extend(section["docs"])
return render_to_response("iesg/scribe_template.html", {
return render(request, "iesg/scribe_template.html", {
"date": data["date"],
"sections": sections,
"appendix_docs": appendix_docs,
"domain": Site.objects.get_current().domain,
}, context_instance=RequestContext(request) )
} )
@role_required('Area Director', 'Secretariat')
def agenda_moderator_package(request, date=None):
@ -261,21 +260,21 @@ def agenda_moderator_package(request, date=None):
data["sections"]["7"]["ads"] = sorted(Person.objects.filter(role__name="ad", role__group__state="active", role__group__type="area"),
key=lambda p: p.name_parts()[3])
return render_to_response("iesg/moderator_package.html", {
return render(request, "iesg/moderator_package.html", {
"date": data["date"],
"sections": flattened_sections,
}, context_instance=RequestContext(request))
} )
@role_required('Area Director', 'Secretariat')
def agenda_package(request, date=None):
data = agenda_data(date)
return render_to_response("iesg/agenda_package.txt", {
return render(request, "iesg/agenda_package.txt", {
"date": data["date"],
"sections": sorted(data["sections"].iteritems()),
"roll_call": data["sections"]["1.1"]["text"],
"minutes": data["sections"]["1.3"]["text"],
"management_items": [(num, section) for num, section in data["sections"].iteritems() if "6" < num < "7"],
}, context_instance=RequestContext(request), content_type='text/plain')
}, content_type='text/plain')
def agenda_documents_txt(request):
@ -469,10 +468,8 @@ def milestones_needing_review(request):
for g, milestones in groups.iteritems():
g.milestones_needing_review = sorted(milestones, key=lambda m: m.due)
return render_to_response('iesg/milestones_needing_review.html',
dict(ads=sorted(ad_list, key=lambda ad: ad.plain_name()),
),
context_instance=RequestContext(request))
return render(request, 'iesg/milestones_needing_review.html',
dict(ads=sorted(ad_list, key=lambda ad: ad.plain_name()),))
def photos(request):
roles = sorted(Role.objects.filter(group__type='area', group__state='active', name_id='ad'),key=lambda x: "" if x.group.acronym=="gen" else x.group.acronym)

View file

@ -1,25 +1,25 @@
# Copyright The IETF Trust 2007, 2009, All Rights Reserved
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.contrib.auth.views import login, logout
from ietf.ietfauth.views import add_account_whitelist
urlpatterns = patterns('ietf.ietfauth.views',
url(r'^$', 'index'),
# url(r'^login/$', 'ietf_login'),
urlpatterns = [
url(r'^$', 'ietf.ietfauth.views.index'),
# url(r'^login/$', 'ietf.ietfauth.views.ietf_login'),
url(r'^login/$', login),
url(r'^logout/$', logout),
# url(r'^loggedin/$', 'ietf_loggedin'),
# url(r'^loggedout/$', 'logged_out'),
url(r'^profile/$', 'profile'),
# (r'^login/(?P<user>[a-z0-9.@]+)/(?P<passwd>.+)$', 'url_login'),
url(r'^testemail/$', 'test_email'),
url(r'^create/$', 'create_account'),
url(r'^create/confirm/(?P<auth>[^/]+)/$', 'confirm_account'),
url(r'^reset/$', 'password_reset'),
url(r'^reset/confirm/(?P<auth>[^/]+)/$', 'confirm_password_reset'),
url(r'^confirmnewemail/(?P<auth>[^/]+)/$', 'confirm_new_email'),
(r'whitelist/add/?$', add_account_whitelist),
url(r'^review/$', 'review_overview'),
)
# url(r'^loggedin/$', 'ietf.ietfauth.views.ietf_loggedin'),
# url(r'^loggedout/$', 'ietf.ietfauth.views.logged_out'),
url(r'^profile/$', 'ietf.ietfauth.views.profile'),
# (r'^login/(?P<user>[a-z0-9.@]+)/(?P<passwd>.+)$', 'ietf.ietfauth.views.url_login'),
url(r'^testemail/$', 'ietf.ietfauth.views.test_email'),
url(r'^create/$', 'ietf.ietfauth.views.create_account'),
url(r'^create/confirm/(?P<auth>[^/]+)/$', 'ietf.ietfauth.views.confirm_account'),
url(r'^reset/$', 'ietf.ietfauth.views.password_reset'),
url(r'^reset/confirm/(?P<auth>[^/]+)/$', 'ietf.ietfauth.views.confirm_password_reset'),
url(r'^confirmnewemail/(?P<auth>[^/]+)/$', 'ietf.ietfauth.views.confirm_new_email'),
url(r'whitelist/add/?$', add_account_whitelist),
url(r'^review/$', 'ietf.ietfauth.views.review_overview'),
]

View file

@ -46,14 +46,14 @@ class MessageModelChoiceField(forms.ModelChoiceField):
# Forms
# ----------------------------------------------------------------
class AddCommentForm(forms.Form):
comment = forms.CharField(required=True, widget=forms.Textarea)
comment = forms.CharField(required=True, widget=forms.Textarea, strip=False)
private = forms.BooleanField(label="Private comment", required=False,help_text="If this box is checked the comment will not appear in the disclosure's public history view.")
class AddEmailForm(forms.Form):
direction = forms.ChoiceField(choices=(("incoming", "Incoming"), ("outgoing", "Outgoing")),
widget=forms.RadioSelect)
in_reply_to = MessageModelChoiceField(queryset=Message.objects,label="In Reply To",required=False)
message = forms.CharField(required=True, widget=forms.Textarea)
message = forms.CharField(required=True, widget=forms.Textarea, strip=False)
def __init__(self, *args, **kwargs):
self.ipr = kwargs.pop('ipr', None)
@ -107,16 +107,16 @@ class GenericDisclosureForm(forms.Form):
otherwise create a GenericIprDisclosure object."""
compliant = forms.BooleanField(label="This disclosure complies with RFC 3979", required=False)
holder_legal_name = forms.CharField(max_length=255)
notes = forms.CharField(label="Additional notes", max_length=255,widget=forms.Textarea,required=False)
notes = forms.CharField(label="Additional notes", max_length=255,widget=forms.Textarea,required=False, strip=False)
other_designations = forms.CharField(label="Designations for other contributions", max_length=255,required=False)
holder_contact_name = forms.CharField(label="Name", max_length=255)
holder_contact_email = forms.EmailField(label="Email")
holder_contact_info = forms.CharField(label="Other Info (address, phone, etc.)", max_length=255,widget=forms.Textarea,required=False)
holder_contact_info = forms.CharField(label="Other Info (address, phone, etc.)", max_length=255,widget=forms.Textarea,required=False, strip=False)
submitter_name = forms.CharField(max_length=255,required=False)
submitter_email = forms.EmailField(required=False)
patent_info = forms.CharField(max_length=255,widget=forms.Textarea, required=False, help_text="Patent, Serial, Publication, Registration, or Application/File number(s), Date(s) granted or applied for, Country, and any additional notes.")
patent_info = forms.CharField(max_length=255,widget=forms.Textarea, required=False, help_text="Patent, Serial, Publication, Registration, or Application/File number(s), Date(s) granted or applied for, Country, and any additional notes.", strip=False)
has_patent_pending = forms.BooleanField(required=False)
statement = forms.CharField(max_length=255,widget=forms.Textarea,required=False)
statement = forms.CharField(max_length=255,widget=forms.Textarea,required=False, strip=False)
updates = SearchableIprDisclosuresField(required=False, help_text="If this disclosure <strong>updates</strong> other disclosures identify here which ones. Leave this field blank if this disclosure does not update any prior disclosures. <strong>Note</strong>: Updates to IPR disclosures must only be made by authorized representatives of the original submitters. Updates will automatically be forwarded to the current Patent Holder's Contact and to the Submitter of the original IPR disclosure.")
same_as_ii_above = forms.BooleanField(label="Same as in section II above", required=False)
@ -262,7 +262,7 @@ class NonDocSpecificIprDisclosureForm(IprDisclosureFormBase):
class NotifyForm(forms.Form):
type = forms.CharField(widget=forms.HiddenInput)
text = forms.CharField(widget=forms.Textarea)
text = forms.CharField(widget=forms.Textarea, strip=False)
class ThirdPartyIprDisclosureForm(IprDisclosureFormBase):
class Meta:
@ -298,5 +298,5 @@ class SearchForm(forms.Form):
class StateForm(forms.Form):
state = forms.ModelChoiceField(queryset=IprDisclosureStateName.objects,label="New State",empty_label=None)
comment = forms.CharField(required=False, widget=forms.Textarea, help_text="You may add a comment to be included in the disclosure history.")
comment = forms.CharField(required=False, widget=forms.Textarea, help_text="You may add a comment to be included in the disclosure history.", strip=False)
private = forms.BooleanField(label="Private comment", required=False, help_text="If this box is checked the comment will not appear in the disclosure's public history view.")

View file

@ -1,5 +1,4 @@
import sys
from optparse import make_option
from django.core.management.base import BaseCommand, CommandError
@ -9,8 +8,9 @@ import debug # pyflakes:ignore
class Command(BaseCommand):
help = (u"Process incoming email responses to ipr mail")
option_list = BaseCommand.option_list + (
make_option('--email-file', dest='email', help='File containing email (default: stdin)'),)
def add_arguments(self, parser):
parser.add_argument('--email-file', dest='email', help='File containing email (default: stdin)')
def handle(self, *args, **options):
email = options.get('email', None)

View file

@ -1,28 +1,28 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.views.generic import RedirectView
from django.core.urlresolvers import reverse_lazy
urlpatterns = patterns('ietf.ipr.views',
url(r'^$', 'showlist', name='ipr_showlist'),
(r'^about/$', 'about'),
url(r'^admin/$', RedirectView.as_view(url=reverse_lazy('ipr_admin',kwargs={'state':'pending'}), permanent=True),name="ipr_admin_main"),
url(r'^admin/(?P<state>pending|removed|parked)/$', 'admin', name='ipr_admin'),
url(r'^ajax/search/$', 'ajax_search', name='ipr_ajax_search'),
url(r'^by-draft/$', 'by_draft_txt'),
url(r'^by-draft-recursive/$', 'by_draft_recursive_txt'),
url(r'^(?P<id>\d+)/$', 'show', name='ipr_show'),
url(r'^(?P<id>\d+)/addcomment/$', 'add_comment', name='ipr_add_comment'),
url(r'^(?P<id>\d+)/addemail/$', 'add_email', name='ipr_add_email'),
url(r'^(?P<id>\d+)/edit/$', 'edit', name='ipr_edit'),
url(r'^(?P<id>\d+)/email/$', 'email', name='ipr_email'),
url(r'^(?P<id>\d+)/history/$', 'history', name='ipr_history'),
url(r'^(?P<id>\d+)/notify/(?P<type>update|posted)/$', 'notify', name='ipr_notify'),
url(r'^(?P<id>\d+)/post/$', 'post', name='ipr_post'),
url(r'^(?P<id>\d+)/state/$', 'state', name='ipr_state'),
(r'^update/$', RedirectView.as_view(url=reverse_lazy('ipr_showlist'), permanent=True)),
url(r'^update/(?P<id>\d+)/$', 'update', name='ipr_update'),
url(r'^new-(?P<type>(specific|generic|third-party))/$', 'new', name='ipr_new'),
url(r'^search/$', 'search', name="ipr_search"),
)
urlpatterns = [
url(r'^$', 'ietf.ipr.views.showlist', name='ipr_showlist'),
url(r'^about/$', 'ietf.ipr.views.about'),
url(r'^admin/$', RedirectView.as_view(url=reverse_lazy('ipr_admin',kwargs={'state':'pending'}), permanent=True),name="ipr_admin_main"),
url(r'^admin/(?P<state>pending|removed|parked)/$', 'ietf.ipr.views.admin', name='ipr_admin'),
url(r'^ajax/search/$', 'ietf.ipr.views.ajax_search', name='ipr_ajax_search'),
url(r'^by-draft/$', 'ietf.ipr.views.by_draft_txt'),
url(r'^by-draft-recursive/$', 'ietf.ipr.views.by_draft_recursive_txt'),
url(r'^(?P<id>\d+)/$', 'ietf.ipr.views.show', name='ipr_show'),
url(r'^(?P<id>\d+)/addcomment/$', 'ietf.ipr.views.add_comment', name='ipr_add_comment'),
url(r'^(?P<id>\d+)/addemail/$', 'ietf.ipr.views.add_email', name='ipr_add_email'),
url(r'^(?P<id>\d+)/edit/$', 'ietf.ipr.views.edit', name='ipr_edit'),
url(r'^(?P<id>\d+)/email/$', 'ietf.ipr.views.email', name='ipr_email'),
url(r'^(?P<id>\d+)/history/$', 'ietf.ipr.views.history', name='ipr_history'),
url(r'^(?P<id>\d+)/notify/(?P<type>update|posted)/$', 'ietf.ipr.views.notify', name='ipr_notify'),
url(r'^(?P<id>\d+)/post/$', 'ietf.ipr.views.post', name='ipr_post'),
url(r'^(?P<id>\d+)/state/$', 'ietf.ipr.views.state', name='ipr_state'),
url(r'^update/$', RedirectView.as_view(url=reverse_lazy('ipr_showlist'), permanent=True)),
url(r'^update/(?P<id>\d+)/$', 'ietf.ipr.views.update', name='ipr_update'),
url(r'^new-(?P<type>(specific|generic|third-party))/$', 'ietf.ipr.views.new', name='ipr_new'),
url(r'^search/$', 'ietf.ipr.views.search', name="ipr_search"),
]

View file

@ -118,7 +118,7 @@ def validate_emails(value):
# Form Classes
# -------------------------------------------------
class AddCommentForm(forms.Form):
comment = forms.CharField(required=True, widget=forms.Textarea)
comment = forms.CharField(required=True, widget=forms.Textarea, strip=False)
private = forms.BooleanField(label="Private comment", required=False,help_text="If this box is checked the comment will not appear in the statement's public history view.")
class RadioRenderer(RadioFieldRenderer):
@ -210,7 +210,7 @@ class LiaisonModelForm(BetterModelForm):
'''
from_groups = forms.ModelMultipleChoiceField(queryset=Group.objects.all(),label=u'Groups',required=False)
from_contact = forms.EmailField()
to_contacts = forms.CharField(label="Contacts", widget=forms.Textarea(attrs={'rows':'3', }))
to_contacts = forms.CharField(label="Contacts", widget=forms.Textarea(attrs={'rows':'3', }), strip=False)
to_groups = forms.ModelMultipleChoiceField(queryset=Group.objects,label=u'Groups',required=False)
deadline = DatepickerDateField(date_format="yyyy-mm-dd", picker_settings={"autoclose": "1" }, label='Deadline', required=True)
related_to = SearchableLiaisonStatementsField(label=u'Related Liaison Statement', required=False)

View file

@ -1,4 +1,3 @@
from optparse import make_option
from django.core.management.base import BaseCommand
@ -8,10 +7,10 @@ from ietf.liaisons.mails import send_sdo_reminder
class Command(BaseCommand):
help = (u"Send a remind to each SDO Liaison Manager to update the list of persons authorized to send liaison statements on behalf of his SDO")
option_list = BaseCommand.option_list + (
make_option('-s', '--sdo-pk', dest='sdo_pk',
help='Send the reminder to the SDO with this primary key. If not provided reminder will be sent to all SDOs'),
)
def add_arguments(self, parser):
parser.add_argument('-s', '--sdo-pk', dest='sdo_pk',
help='Send the reminder to the SDO with this primary key. If not provided reminder will be sent to all SDOs')
def handle(self, *args, **options):
sdo_pk = options.get('sdo_pk', None)

View file

@ -1,38 +1,38 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.views.generic import RedirectView, TemplateView
urlpatterns = patterns('',
(r'^help/$', TemplateView.as_view(template_name='liaisons/help.html')),
urlpatterns = [
url(r'^help/$', TemplateView.as_view(template_name='liaisons/help.html')),
url(r'^help/fields/$', TemplateView.as_view(template_name='liaisons/field_help.html'), name='liaisons_field_help'),
(r'^help/from_ietf/$', TemplateView.as_view(template_name='liaisons/guide_from_ietf.html')),
(r'^help/to_ietf/$', TemplateView.as_view(template_name='liaisons/guide_to_ietf.html')),
(r'^managers/$', RedirectView.as_view(url='https://www.ietf.org/liaison/managers.html', permanent=True)),
)
url(r'^help/from_ietf/$', TemplateView.as_view(template_name='liaisons/guide_from_ietf.html')),
url(r'^help/to_ietf/$', TemplateView.as_view(template_name='liaisons/guide_to_ietf.html')),
url(r'^managers/$', RedirectView.as_view(url='https://www.ietf.org/liaison/managers.html', permanent=True)),
]
# AJAX views
urlpatterns += patterns('ietf.liaisons.views',
(r'^ajax/get_info/$', 'ajax_get_liaison_info'),
(r'^ajax/select2search/$', 'ajax_select2_search_liaison_statements'),
)
urlpatterns += [
url(r'^ajax/get_info/$', 'ietf.liaisons.views.ajax_get_liaison_info'),
url(r'^ajax/select2search/$', 'ietf.liaisons.views.ajax_select2_search_liaison_statements'),
]
# Views
urlpatterns += patterns('ietf.liaisons.views',
(r'^$', 'liaison_list'),
(r'^(?P<state>(posted|pending|dead))/', 'liaison_list'),
(r'^(?P<object_id>\d+)/$', 'liaison_detail'),
(r'^(?P<object_id>\d+)/addcomment/$', 'add_comment'),
(r'^(?P<object_id>\d+)/edit/$', 'liaison_edit'),
(r'^(?P<object_id>\d+)/edit-attachment/(?P<doc_id>[A-Za-z0-9._+-]+)$', 'liaison_edit_attachment'),
(r'^(?P<object_id>\d+)/delete-attachment/(?P<attach_id>[A-Za-z0-9._+-]+)$', 'liaison_delete_attachment'),
(r'^(?P<object_id>\d+)/history/$', 'liaison_history'),
(r'^(?P<object_id>\d+)/reply/$', 'liaison_reply'),
(r'^(?P<object_id>\d+)/resend/$', 'liaison_resend'),
(r'^add/(?P<type>(incoming|outgoing))/$', 'liaison_add'),
urlpatterns += [
url(r'^$', 'ietf.liaisons.views.liaison_list'),
url(r'^(?P<state>(posted|pending|dead))/', 'ietf.liaisons.views.liaison_list'),
url(r'^(?P<object_id>\d+)/$', 'ietf.liaisons.views.liaison_detail'),
url(r'^(?P<object_id>\d+)/addcomment/$', 'ietf.liaisons.views.add_comment'),
url(r'^(?P<object_id>\d+)/edit/$', 'ietf.liaisons.views.liaison_edit'),
url(r'^(?P<object_id>\d+)/edit-attachment/(?P<doc_id>[A-Za-z0-9._+-]+)$', 'ietf.liaisons.views.liaison_edit_attachment'),
url(r'^(?P<object_id>\d+)/delete-attachment/(?P<attach_id>[A-Za-z0-9._+-]+)$', 'ietf.liaisons.views.liaison_delete_attachment'),
url(r'^(?P<object_id>\d+)/history/$', 'ietf.liaisons.views.liaison_history'),
url(r'^(?P<object_id>\d+)/reply/$', 'ietf.liaisons.views.liaison_reply'),
url(r'^(?P<object_id>\d+)/resend/$', 'ietf.liaisons.views.liaison_resend'),
url(r'^add/(?P<type>(incoming|outgoing))/$', 'ietf.liaisons.views.liaison_add'),
# Redirects for backwards compatibility
(r'^add/$', 'redirect_add'),
(r'^for_approval/$', 'redirect_for_approval'),
(r'^for_approval/(?P<object_id>\d+)/$', 'redirect_for_approval'),
)
url(r'^add/$', 'ietf.liaisons.views.redirect_add'),
url(r'^for_approval/$', 'ietf.liaisons.views.redirect_for_approval'),
url(r'^for_approval/(?P<object_id>\d+)/$', 'ietf.liaisons.views.redirect_for_approval'),
]

View file

@ -314,7 +314,7 @@ def add_comment(request, object_id):
else:
form = AddCommentForm()
return render(request, 'liaisons/add_comment.html',dict(liaison=statement,form=form))
return render(request, 'liaisons/add_comment.html', dict(liaison=statement,form=form) )
@can_submit_liaison_required
def liaison_add(request, type=None, **kwargs):

View file

@ -1,11 +1,11 @@
# 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
urlpatterns = patterns('',
(r'^wg/$', 'ietf.mailinglists.views.groups'),
(r'^nonwg/$', RedirectView.as_view(url='https://www.ietf.org/list/nonwg.html', permanent=True)),
(r'^nonwg/update/$', RedirectView.as_view(url='https://www.ietf.org/list/nonwg.html', permanent=True)),
(r'^request/$', RedirectView.as_view(url='https://www.ietf.org/list/request.html', permanent=True)),
)
urlpatterns = [
url(r'^wg/$', 'ietf.mailinglists.views.groups'),
url(r'^nonwg/$', RedirectView.as_view(url='https://www.ietf.org/list/nonwg.html', permanent=True)),
url(r'^nonwg/update/$', RedirectView.as_view(url='https://www.ietf.org/list/nonwg.html', permanent=True)),
url(r'^request/$', RedirectView.as_view(url='https://www.ietf.org/list/request.html', permanent=True)),
]

View file

@ -1,12 +1,10 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from ietf.group.models import Group
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render
def groups(request):
groups = Group.objects.filter(type__in=("wg", "rg"), list_archive__startswith='http').order_by("acronym")
return render_to_response("mailinglists/group_archives.html", { "groups": groups },
context_instance=RequestContext(request))
return render(request, "mailinglists/group_archives.html", { "groups": groups } )

View file

@ -1,11 +1,11 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.views.generic import RedirectView
from django.core.urlresolvers import reverse_lazy
urlpatterns = patterns('ietf.mailtrigger.views',
urlpatterns = [
url(r'^$', RedirectView.as_view(url=reverse_lazy('mailtrigger_show_triggers'), permanent=True)),
url(r'^name/$', 'show_triggers', name='mailtrigger_show_triggers' ),
url(r'^name/(?P<mailtrigger_slug>[-\w]+)/$', 'show_triggers' ),
url(r'^recipient/$', 'show_recipients' ),
url(r'^recipient/(?P<recipient_slug>[-\w]+)/$', 'show_recipients' ),
)
url(r'^name/$', 'ietf.mailtrigger.views.show_triggers', name='mailtrigger_show_triggers' ),
url(r'^name/(?P<mailtrigger_slug>[-\w]+)/$', 'ietf.mailtrigger.views.show_triggers' ),
url(r'^recipient/$', 'ietf.mailtrigger.views.show_recipients' ),
url(r'^recipient/(?P<recipient_slug>[-\w]+)/$', 'ietf.mailtrigger.views.show_recipients' ),
]

View file

@ -139,7 +139,7 @@ class InterimSessionModelForm(forms.ModelForm):
requested_duration = DurationField(required=True)
end_time = forms.TimeField(required=False)
remote_instructions = forms.CharField(max_length=1024, required=True)
agenda = forms.CharField(required=False, widget=forms.Textarea)
agenda = forms.CharField(required=False, widget=forms.Textarea, strip=False)
agenda_note = forms.CharField(max_length=255, required=False)
class Meta:
@ -236,7 +236,7 @@ class InterimAnnounceForm(forms.ModelForm):
class InterimCancelForm(forms.Form):
group = forms.CharField(max_length=255, required=False)
date = forms.DateField(required=False)
comments = forms.CharField(required=False, widget=forms.Textarea(attrs={'placeholder': 'enter optional comments here'}))
comments = forms.CharField(required=False, widget=forms.Textarea(attrs={'placeholder': 'enter optional comments here'}), strip=False)
def __init__(self, *args, **kwargs):
super(InterimCancelForm, self).__init__(*args, **kwargs)

View file

@ -8,7 +8,6 @@ https://docs.djangoproject.com/en/dev/howto/custom-management-commands/
"""
from django.core.management.base import BaseCommand
from optparse import make_option
#import cProfile, pstats, io
import sys
from ietf.meeting.models import Schedule, Meeting
@ -26,33 +25,33 @@ class Command(BaseCommand):
seed = None
recordsteps = False
option_list = BaseCommand.option_list + (
make_option('--profile',
def add_arguments(self, parser):
parser.add_argument('--profile',
action='store_true',
dest='profile',
default=False,
help='Enable verbose mode'),
make_option('--recordsteps',
help='Enable verbose mode')
parser.add_argument('--recordsteps',
action='store_true',
dest='recordsteps',
default=False,
help='Enable recording progress to table'),
make_option('--verbose',
help='Enable recording progress to table')
parser.add_argument('--verbose',
action='count',
dest='verbose',
default=False,
help='Enable verbose mode'),
make_option('--maxstep',
action="store", type="int",
dest='maxstep',
default=20000,
help='Maximum number of steps'),
make_option('--seed',
action="store", type="int",
dest='seed',
default=None,
help='Seed to use for calculation'),
)
help='Enable verbose mode')
parser.add_argument('--maxstep',
action="store", type=int,
dest='maxstep',
default=20000,
help='Maximum number of steps')
parser.add_argument('--seed',
action="store", type=int,
dest='seed',
default=None,
help='Seed to use for calculation')
def handle(self, *labels, **options):
self.verbose = options.get('verbose', 1)

View file

@ -1,17 +1,17 @@
from django.core.management.base import BaseCommand, CommandError
from django.core import serializers
from optparse import make_option
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--format', default='json', dest='format',
help='Specifies the output serialization format for fixtures.'),
make_option('--indent', default=None, dest='indent', type='int',
help='Specifies the indent level to use when pretty-printing output'),
# make_option('--schedulename', action='store', dest='schedulename', default=False,
def add_arguments(self, parser):
parser.add_argument('--format', default='json', dest='format',
help='Specifies the output serialization format for fixtures.')
parser.add_argument('--indent', default=None, dest='indent', type='int',
help='Specifies the indent level to use when pretty-printing output')
# parser.add_argument('--schedulename', action='store', dest='schedulename', default=False,
# help='Tells Django to stop running the test suite after first failed test.')
)
help = 'Saves the scheduled information for a named schedule in JSON format'
args = 'meetingname [owner] schedname'

View file

@ -100,21 +100,25 @@ def make_meeting_test_data(meeting=None):
doc = DocumentFactory.create(name='agenda-42-mars', type_id='agenda', title="Agenda",
external_url="agenda-42-mars.txt", group=mars, rev='00', states=[('draft','active')])
mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev)) #
pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev)
mars_session.sessionpresentation_set.add(pres) #
doc = DocumentFactory.create(name='minutes-42-mars', type_id='minutes', title="Minutes",
external_url="minutes-42-mars.txt", group=mars, rev='00', states=[('minutes','active')])
mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev)
mars_session.sessionpresentation_set.add(pres)
doc = DocumentFactory.create(name='slides-42-mars-1-active', type_id='slides', title="Slideshow",
external_url="slides-42-mars.txt", group=mars, rev='00',
states=[('slides','active'), ('reuse_policy', 'single')])
mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev)
mars_session.sessionpresentation_set.add(pres)
doc = DocumentFactory.create(name='slides-42-mars-2-deleted', type_id='slides',
title="Bad Slideshow", external_url="slides-42-mars-2-deleted.txt", group=mars, rev='00',
states=[('slides','deleted'), ('reuse_policy', 'single')])
mars_session.sessionpresentation_set.add(SessionPresentation(session=mars_session,document=doc,rev=doc.rev))
pres = SessionPresentation.objects.create(session=mars_session,document=doc,rev=doc.rev)
mars_session.sessionpresentation_set.add(pres)
# Future Interim Meetings
date = datetime.date.today() + datetime.timedelta(days=365)

View file

@ -1,5 +1,4 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404
from ietf.message.models import Message
@ -9,6 +8,4 @@ def message(request, message_id, group_type):
message = get_object_or_404(possible_messages, id=message_id)
return render_to_response("message/message.html",
dict(message=message),
context_instance=RequestContext(request))
return render(request, "message/message.html", {"message":message } )

View file

@ -1,8 +1,7 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from django.db import connection
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render
from django.http import HttpResponsePermanentRedirect
from ietf.utils.log import log
from ietf.utils.mail import log_smtp_exception
@ -21,8 +20,8 @@ class SMTPExceptionMiddleware(object):
def process_exception(self, request, exception):
if isinstance(exception, smtplib.SMTPException):
(extype, value, tb) = log_smtp_exception(exception)
return render_to_response('email_failed.html', {'exception': extype, 'args': value, 'traceback': "".join(tb)},
context_instance=RequestContext(request))
return render(request, 'email_failed.html',
{'exception': extype, 'args': value, 'traceback': "".join(tb)} )
return None
class RedirectTrailingPeriod(object):

View file

@ -3,8 +3,7 @@ from django import forms
from formtools.preview import FormPreview, AUTO_ID
from django.shortcuts import get_object_or_404, redirect
from django.utils.decorators import method_decorator
from django.shortcuts import render_to_response
from django.template.context import RequestContext
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.utils.html import mark_safe
@ -118,14 +117,16 @@ class EditMembersFormPreview(FormPreview):
def preview_get(self, request):
"Displays the form"
f = self.form(auto_id=self.get_auto_id(), initial=self.get_initial(request))
return render_to_response(self.form_template,
{'form': f,
'stage_field': self.unused_name('stage'),
'state': self.state,
'year': self.year,
'nomcom': self.nomcom,
'selected': 'edit_members'},
context_instance=RequestContext(request))
return render(request, self.form_template,
{
'form': f,
'stage_field': self.unused_name('stage'),
'state': self.state,
'year': self.year,
'nomcom': self.nomcom,
'selected': 'edit_members',
}
)
def get_initial(self, request):
members = self.group.role_set.filter(name__slug='member')
@ -163,9 +164,9 @@ class EditMembersFormPreview(FormPreview):
self.process_preview(request, f, context)
context['hash_field'] = self.unused_name('hash')
context['hash_value'] = self.security_hash(request, f)
return render_to_response(self.preview_template, context, context_instance=RequestContext(request))
return render(request, self.preview_template, context )
else:
return render_to_response(self.form_template, context, context_instance=RequestContext(request))
return render(request, self.form_template, context )
def post_post(self, request):
"Validates the POST data. If valid, calls done(). Else, redisplays form."
@ -178,7 +179,7 @@ class EditMembersFormPreview(FormPreview):
self.process_preview(request, f, context)
return self.done(request, f.cleaned_data)
else:
return render_to_response(self.form_template, context, context_instance=RequestContext(request))
return render(request, self.form_template, context )
def done(self, request, cleaned_data):
members_info = self.state['members_info']
@ -338,7 +339,7 @@ class MergePersonForm(forms.Form):
class NominateForm(forms.ModelForm):
searched_email = SearchableEmailField(only_users=False)
qualifications = forms.CharField(label="Candidate's qualifications for the position",
widget=forms.Textarea())
widget=forms.Textarea(), strip=False)
confirmation = forms.BooleanField(label='Email comments back to me as confirmation.',
help_text="If you want to get a confirmation mail containing your feedback in cleartext, please check the 'email comments back to me as confirmation'.",
required=False)
@ -439,7 +440,7 @@ class NominateForm(forms.ModelForm):
class NominateNewPersonForm(forms.ModelForm):
qualifications = forms.CharField(label="Candidate's qualifications for the position",
widget=forms.Textarea())
widget=forms.Textarea(), strip=False)
confirmation = forms.BooleanField(label='Email comments back to me as confirmation.',
help_text="If you want to get a confirmation mail containing your feedback in cleartext, please check the 'email comments back to me as confirmation'.",
required=False)
@ -550,9 +551,7 @@ class NominateNewPersonForm(forms.ModelForm):
class FeedbackForm(forms.ModelForm):
nominator_email = forms.CharField(label='Commenter email',required=False)
comments = forms.CharField(label='Comments',
widget=forms.Textarea())
comments = forms.CharField(label='Comments', widget=forms.Textarea(), strip=False)
confirmation = forms.BooleanField(label='Email comments back to me as confirmation (if selected, your comments will be emailed to you in cleartext when you press Save).',
required=False)
@ -633,7 +632,7 @@ class FeedbackForm(forms.ModelForm):
class FeedbackEmailForm(forms.Form):
email_text = forms.CharField(label='Email text', widget=forms.Textarea())
email_text = forms.CharField(label='Email text', widget=forms.Textarea(), strip=False)
def __init__(self, *args, **kwargs):
self.nomcom = kwargs.pop('nomcom', None)
@ -645,7 +644,7 @@ class FeedbackEmailForm(forms.Form):
class QuestionnaireForm(forms.ModelForm):
comments = forms.CharField(label='Questionnaire response from this candidate',
widget=forms.Textarea())
widget=forms.Textarea(), strip=False)
def __init__(self, *args, **kwargs):
self.nomcom = kwargs.pop('nomcom', None)
self.user = kwargs.pop('user', None)
@ -675,7 +674,7 @@ class QuestionnaireForm(forms.ModelForm):
fields = ( 'comments', )
class NomComTemplateForm(DBTemplateForm):
content = forms.CharField(label="Text", widget=forms.Textarea(attrs={'cols': '120', 'rows':'40', }))
content = forms.CharField(label="Text", widget=forms.Textarea(attrs={'cols': '120', 'rows':'40', }), strip=False)
class PositionForm(forms.ModelForm):
@ -694,7 +693,7 @@ class PositionForm(forms.ModelForm):
class PrivateKeyForm(forms.Form):
key = forms.CharField(label='Private key', widget=forms.Textarea(), required=False)
key = forms.CharField(label='Private key', widget=forms.Textarea(), required=False, strip=False)
def clean_key(self):
key = self.cleaned_data.get('key', None)
@ -882,5 +881,5 @@ class EditNomineeForm(forms.ModelForm):
fields = ('nominee_email',)
class NominationResponseCommentForm(forms.Form):
comments = forms.CharField(widget=forms.Textarea,required=False,help_text="Any comments provided will be encrytped and will only be visible to the NomCom.")
comments = forms.CharField(widget=forms.Textarea,required=False,help_text="Any comments provided will be encrytped and will only be visible to the NomCom.", strip=False)

View file

@ -1,5 +1,4 @@
import sys
from optparse import make_option
from django.core.management.base import BaseCommand, CommandError
@ -12,9 +11,10 @@ import debug # pyflakes:ignore
class Command(BaseCommand):
help = (u"Receive nomcom email, encrypt and save it.")
option_list = BaseCommand.option_list + (
make_option('--nomcom-year', dest='year', help='NomCom year'),
make_option('--email-file', dest='email', help='File containing email (default: stdin)'),)
def add_arguments(self, parser):
parser.add_argument('--nomcom-year', dest='year', help='NomCom year')
parser.add_argument('--email-file', dest='email', help='File containing email (default: stdin)')
def handle(self, *args, **options):
email = options.get('email', None)

View file

@ -1,7 +1,7 @@
from django.conf.urls import patterns
from django.conf.urls import url
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^nomcom/$', RedirectView.as_view(url="/nomcom/ann/", permanent=True)),
(r'^nomcom/(?P<message_id>\d+)/$', RedirectView.as_view(url="/nomcom/ann/%(message_id)s/", permanent=True)),
)
urlpatterns = [
url(r'^nomcom/$', RedirectView.as_view(url="/nomcom/ann/", permanent=True)),
url(r'^nomcom/(?P<message_id>\d+)/$', RedirectView.as_view(url="/nomcom/ann/%(message_id)s/", permanent=True)),
]

View file

@ -1,48 +1,45 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from ietf.nomcom.forms import EditMembersForm, EditMembersFormPreview
from ietf.nomcom import views
urlpatterns = patterns('ietf.nomcom.views',
url(r'^$', 'index'),
url(r'^ann/$', 'announcements'),
url(r'^(?P<year>\d{4})/private/$', 'private_index', name='nomcom_private_index'),
url(r'^(?P<year>\d{4})/private/key/$', 'private_key', name='nomcom_private_key'),
url(r'^(?P<year>\d{4})/private/help/$', 'configuration_help', name='nomcom_chair_help'),
url(r'^(?P<year>\d{4})/private/nominate/$', 'private_nominate', name='nomcom_private_nominate'),
url(r'^(?P<year>\d{4})/private/nominate/newperson$', 'private_nominate_newperson', name='nomcom_private_nominate_newperson'),
url(r'^(?P<year>\d{4})/private/feedback/$', 'private_feedback', name='nomcom_private_feedback'),
url(r'^(?P<year>\d{4})/private/feedback-email/$', 'private_feedback_email', name='nomcom_private_feedback_email'),
url(r'^(?P<year>\d{4})/private/questionnaire-response/$', 'private_questionnaire', name='nomcom_private_questionnaire'),
url(r'^(?P<year>\d{4})/private/view-feedback/$', 'view_feedback', name='nomcom_view_feedback'),
url(r'^(?P<year>\d{4})/private/view-feedback/unrelated/$', 'view_feedback_unrelated', name='nomcom_view_feedback_unrelated'),
url(r'^(?P<year>\d{4})/private/view-feedback/pending/$', 'view_feedback_pending', name='nomcom_view_feedback_pending'),
url(r'^(?P<year>\d{4})/private/view-feedback/nominee/(?P<nominee_id>\d+)$', 'view_feedback_nominee', name='nomcom_view_feedback_nominee'),
url(r'^(?P<year>\d{4})/private/edit/nominee/(?P<nominee_id>\d+)$', 'edit_nominee', name='nomcom_edit_nominee'),
urlpatterns = [
url(r'^$', 'ietf.nomcom.views.index'),
url(r'^ann/$', 'ietf.nomcom.views.announcements'),
url(r'^(?P<year>\d{4})/private/$', 'ietf.nomcom.views.private_index', name='nomcom_private_index'),
url(r'^(?P<year>\d{4})/private/key/$', 'ietf.nomcom.views.private_key', name='nomcom_private_key'),
url(r'^(?P<year>\d{4})/private/help/$', 'ietf.nomcom.views.configuration_help', name='nomcom_chair_help'),
url(r'^(?P<year>\d{4})/private/nominate/$', 'ietf.nomcom.views.private_nominate', name='nomcom_private_nominate'),
url(r'^(?P<year>\d{4})/private/nominate/newperson$', 'ietf.nomcom.views.private_nominate_newperson', name='nomcom_private_nominate_newperson'),
url(r'^(?P<year>\d{4})/private/feedback/$', 'ietf.nomcom.views.private_feedback', name='nomcom_private_feedback'),
url(r'^(?P<year>\d{4})/private/feedback-email/$', 'ietf.nomcom.views.private_feedback_email', name='nomcom_private_feedback_email'),
url(r'^(?P<year>\d{4})/private/questionnaire-response/$', 'ietf.nomcom.views.private_questionnaire', name='nomcom_private_questionnaire'),
url(r'^(?P<year>\d{4})/private/view-feedback/$', 'ietf.nomcom.views.view_feedback', name='nomcom_view_feedback'),
url(r'^(?P<year>\d{4})/private/view-feedback/unrelated/$', 'ietf.nomcom.views.view_feedback_unrelated', name='nomcom_view_feedback_unrelated'),
url(r'^(?P<year>\d{4})/private/view-feedback/pending/$', 'ietf.nomcom.views.view_feedback_pending', name='nomcom_view_feedback_pending'),
url(r'^(?P<year>\d{4})/private/view-feedback/nominee/(?P<nominee_id>\d+)$', 'ietf.nomcom.views.view_feedback_nominee', name='nomcom_view_feedback_nominee'),
url(r'^(?P<year>\d{4})/private/edit/nominee/(?P<nominee_id>\d+)$', 'ietf.nomcom.views.edit_nominee', name='nomcom_edit_nominee'),
url(r'^(?P<year>\d{4})/private/merge-nominee/?$', views.private_merge_nominee),
url(r'^(?P<year>\d{4})/private/merge-person/?$', views.private_merge_person),
# url(r'^(?P<year>\d{4})/private/send-reminder-mail/$', RedirectView.as_view(url=reverse_lazy('nomcom_send_reminder_mail',kwargs={'year':year,'type':'accept'}))),
url(r'^(?P<year>\d{4})/private/send-reminder-mail/(?P<type>\w+)/$', 'send_reminder_mail', name='nomcom_send_reminder_mail'),
url(r'^(?P<year>\d{4})/private/send-reminder-mail/(?P<type>\w+)/$', 'ietf.nomcom.views.send_reminder_mail', name='nomcom_send_reminder_mail'),
url(r'^(?P<year>\d{4})/private/edit-members/$', EditMembersFormPreview(EditMembersForm), name='nomcom_edit_members'),
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', 'edit_nomcom', name='nomcom_edit_nomcom'),
url(r'^(?P<year>\d{4})/private/chair/templates/$', 'list_templates', name='nomcom_list_templates'),
url(r'^(?P<year>\d{4})/private/chair/templates/(?P<template_id>\d+)/$', 'edit_template', name='nomcom_edit_template'),
url(r'^(?P<year>\d{4})/private/chair/position/$', 'list_positions', name='nomcom_list_positions'),
url(r'^(?P<year>\d{4})/private/chair/position/add/$', 'edit_position', name='nomcom_add_position'),
url(r'^(?P<year>\d{4})/private/chair/position/(?P<position_id>\d+)/$', 'edit_position', name='nomcom_edit_position'),
url(r'^(?P<year>\d{4})/private/chair/position/(?P<position_id>\d+)/remove/$', 'remove_position', name='nomcom_remove_position'),
url(r'^(?P<year>\d{4})/$', 'year_index', name='nomcom_year_index'),
url(r'^(?P<year>\d{4})/requirements/$', 'requirements', name='nomcom_requirements'),
url(r'^(?P<year>\d{4})/expertise/$', 'requirements', name='nomcom_requirements'),
url(r'^(?P<year>\d{4})/questionnaires/$', 'questionnaires', name='nomcom_questionnaires'),
url(r'^(?P<year>\d{4})/feedback/$', 'public_feedback', name='nomcom_public_feedback'),
url(r'^(?P<year>\d{4})/nominate/$', 'public_nominate', name='nomcom_public_nominate'),
url(r'^(?P<year>\d{4})/nominate/newperson$', 'public_nominate_newperson', name='nomcom_public_nominate_newperson'),
url(r'^(?P<year>\d{4})/process-nomination-status/(?P<nominee_position_id>\d+)/(?P<state>[\w]+)/(?P<date>[\d]+)/(?P<hash>[a-f0-9]+)/$', 'process_nomination_status', name='nomcom_process_nomination_status'),
)
url(r'^(?P<year>\d{4})/private/edit-nomcom/$', 'ietf.nomcom.views.edit_nomcom', name='nomcom_edit_nomcom'),
url(r'^(?P<year>\d{4})/private/chair/templates/$', 'ietf.nomcom.views.list_templates', name='nomcom_list_templates'),
url(r'^(?P<year>\d{4})/private/chair/templates/(?P<template_id>\d+)/$', 'ietf.nomcom.views.edit_template', name='nomcom_edit_template'),
url(r'^(?P<year>\d{4})/private/chair/position/$', 'ietf.nomcom.views.list_positions', name='nomcom_list_positions'),
url(r'^(?P<year>\d{4})/private/chair/position/add/$', 'ietf.nomcom.views.edit_position', name='nomcom_add_position'),
url(r'^(?P<year>\d{4})/private/chair/position/(?P<position_id>\d+)/$', 'ietf.nomcom.views.edit_position', name='nomcom_edit_position'),
url(r'^(?P<year>\d{4})/private/chair/position/(?P<position_id>\d+)/remove/$', 'ietf.nomcom.views.remove_position', name='nomcom_remove_position'),
url(r'^(?P<year>\d{4})/$', 'ietf.nomcom.views.year_index', name='nomcom_year_index'),
url(r'^(?P<year>\d{4})/requirements/$', 'ietf.nomcom.views.requirements', name='nomcom_requirements'),
url(r'^(?P<year>\d{4})/expertise/$', 'ietf.nomcom.views.requirements', name='nomcom_requirements'),
url(r'^(?P<year>\d{4})/questionnaires/$', 'ietf.nomcom.views.questionnaires', name='nomcom_questionnaires'),
url(r'^(?P<year>\d{4})/feedback/$', 'ietf.nomcom.views.public_feedback', name='nomcom_public_feedback'),
url(r'^(?P<year>\d{4})/nominate/$', 'ietf.nomcom.views.public_nominate', name='nomcom_public_nominate'),
url(r'^(?P<year>\d{4})/nominate/newperson$', 'ietf.nomcom.views.public_nominate_newperson', name='nomcom_public_nominate_newperson'),
url(r'^(?P<year>\d{4})/process-nomination-status/(?P<nominee_position_id>\d+)/(?P<state>[\w]+)/(?P<date>[\d]+)/(?P<hash>[a-f0-9]+)/$', 'ietf.nomcom.views.process_nomination_status', name='nomcom_process_nomination_status'),
# use the generic view from message
urlpatterns += patterns('',
url(r'^ann/(?P<message_id>\d+)/$', 'ietf.message.views.message', {'group_type': "nomcom" }, "nomcom_announcement"),
)
]

View file

@ -8,8 +8,7 @@ from django.contrib.auth.models import AnonymousUser
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.http import Http404, HttpResponseRedirect, HttpResponseForbidden
from django.shortcuts import render_to_response, get_object_or_404, render, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from django.template.loader import render_to_string
from django.db.models import Count
from django.forms.models import modelformset_factory, inlineformset_factory
@ -53,19 +52,19 @@ def index(request):
nomcom.ann_url = "/nomcom/ann/#%4d" % year
else:
nomcom.ann_url = None
return render_to_response('nomcom/index.html',
{'nomcom_list': nomcom_list,}, RequestContext(request))
return render(request, 'nomcom/index.html',
{'nomcom_list': nomcom_list,})
def year_index(request, year):
nomcom = get_nomcom_by_year(year)
home_template = '/nomcom/%s/%s' % (nomcom.group.acronym, HOME_TEMPLATE)
template = render_to_string(home_template, {})
return render_to_response('nomcom/year_index.html',
return render(request, 'nomcom/year_index.html',
{'nomcom': nomcom,
'year': year,
'selected': 'index',
'template': template}, RequestContext(request))
'template': template})
def announcements(request):
address_re = re.compile("<.*>")
@ -98,10 +97,12 @@ def announcements(request):
regimes.sort(key=lambda x: x["group"].start_year, reverse=True)
return render_to_response("nomcom/announcements.html",
{ 'curr_chair' : regimes[0]["chair"] if regimes else None,
'regimes' : regimes },
context_instance=RequestContext(request))
return render(request, "nomcom/announcements.html",
{
'curr_chair' : regimes[0]["chair"] if regimes else None,
'regimes' : regimes,
},
)
@role_required("Nomcom")
def private_key(request, year):
@ -120,12 +121,12 @@ def private_key(request, year):
return HttpResponseRedirect(back_url)
else:
form = PrivateKeyForm()
return render_to_response('nomcom/private_key.html',
return render(request, 'nomcom/private_key.html',
{'nomcom': nomcom,
'year': year,
'back_url': back_url,
'form': form,
'selected': 'private_key'}, RequestContext(request))
'selected': 'private_key'})
@role_required("Nomcom")
@ -182,7 +183,7 @@ def private_index(request, year):
s[state['slug']] = all_nominee_positions.filter(position__name=s['position__name'],
state=state['slug']).count()
return render_to_response('nomcom/private_index.html',
return render(request, 'nomcom/private_index.html',
{'nomcom': nomcom,
'year': year,
'nominee_positions': nominee_positions,
@ -193,7 +194,7 @@ def private_index(request, year):
'selected_position': selected_position and int(selected_position) or None,
'selected': 'index',
'is_chair': is_chair,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -251,7 +252,7 @@ def send_reminder_mail(request, year, type):
else:
messages.warning(request, "Please, select at least one nominee")
return render_to_response('nomcom/send_reminder_mail.html',
return render(request, 'nomcom/send_reminder_mail.html',
{'nomcom': nomcom,
'year': year,
'nominees': annotated_nominees,
@ -260,7 +261,7 @@ def send_reminder_mail(request, year, type):
'reminder_description': reminder_description,
'state_description': state_description,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -279,13 +280,13 @@ def private_merge_person(request, year):
else:
form = MergePersonForm(nomcom=nomcom)
return render_to_response('nomcom/private_merge_person.html',
return render(request, 'nomcom/private_merge_person.html',
{'nomcom': nomcom,
'year': year,
'form': form,
'selected': 'merge_person',
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -304,32 +305,32 @@ def private_merge_nominee(request, year):
else:
form = MergeNomineeForm(nomcom=nomcom)
return render_to_response('nomcom/private_merge_nominee.html',
return render(request, 'nomcom/private_merge_nominee.html',
{'nomcom': nomcom,
'year': year,
'form': form,
'selected': 'merge_nominee',
'is_chair_task' : True,
}, RequestContext(request))
})
def requirements(request, year):
nomcom = get_nomcom_by_year(year)
positions = nomcom.position_set.all()
return render_to_response('nomcom/requirements.html',
return render(request, 'nomcom/requirements.html',
{'nomcom': nomcom,
'positions': positions,
'year': year,
'selected': 'requirements'}, RequestContext(request))
'selected': 'requirements'})
def questionnaires(request, year):
nomcom = get_nomcom_by_year(year)
positions = nomcom.position_set.all()
return render_to_response('nomcom/questionnaires.html',
return render(request, 'nomcom/questionnaires.html',
{'nomcom': nomcom,
'positions': positions,
'year': year,
'selected': 'questionnaires'}, RequestContext(request))
'selected': 'questionnaires'})
@login_required
@ -361,17 +362,17 @@ def nominate(request, year, public, newperson):
if not has_publickey:
messages.warning(request, "This Nomcom is not yet accepting nominations")
return render_to_response(template,
return render(request, template,
{'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
'selected': 'nominate'})
if nomcom.group.state_id == 'conclude':
messages.warning(request, "Nominations to this Nomcom are closed.")
return render_to_response(template,
return render(request, template,
{'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
'selected': 'nominate'})
if request.method == 'POST':
if newperson:
@ -391,11 +392,11 @@ def nominate(request, year, public, newperson):
else:
form = NominateForm(nomcom=nomcom, user=request.user, public=public)
return render_to_response(template,
return render(request, template,
{'form': form,
'nomcom': nomcom,
'year': year,
'selected': 'nominate'}, RequestContext(request))
'selected': 'nominate'})
@login_required
def public_feedback(request, year):
@ -485,12 +486,12 @@ def private_feedback_email(request, year):
nomcom_ready = True
if not nomcom_ready:
return render_to_response(template,
return render(request, template,
{'nomcom': nomcom,
'year': year,
'selected': 'feedback_email',
'is_chair_task' : True,
}, RequestContext(request))
})
form = FeedbackEmailForm(nomcom=nomcom)
@ -502,11 +503,11 @@ def private_feedback_email(request, year):
form = FeedbackEmailForm(nomcom=nomcom)
messages.success(request, 'The feedback email has been registered.')
return render_to_response(template,
return render(request, template,
{'form': form,
'nomcom': nomcom,
'year': year,
'selected': 'feedback_email'}, RequestContext(request))
'selected': 'feedback_email'})
@role_required("Nomcom Chair", "Nomcom Advisor")
def private_questionnaire(request, year):
@ -525,12 +526,12 @@ def private_questionnaire(request, year):
nomcom_ready = True
if not nomcom_ready:
return render_to_response(template,
return render(request, template,
{'nomcom': nomcom,
'year': year,
'selected': 'questionnaire',
'is_chair_task' : True,
}, RequestContext(request))
})
if request.method == 'POST':
form = QuestionnaireForm(data=request.POST,
@ -543,12 +544,12 @@ def private_questionnaire(request, year):
else:
form = QuestionnaireForm(nomcom=nomcom, user=request.user)
return render_to_response(template,
return render(request, template,
{'form': form,
'questionnaire_response': questionnaire_response,
'nomcom': nomcom,
'year': year,
'selected': 'questionnaire'}, RequestContext(request))
'selected': 'questionnaire'})
def process_nomination_status(request, year, nominee_position_id, state, date, hash):
@ -596,14 +597,14 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
messages.success(request, 'Your nomination on %s has been set as %s' % (nominee_position.position.name, state.name))
else:
form = NominationResponseCommentForm()
return render_to_response('nomcom/process_nomination_status.html',
return render(request, 'nomcom/process_nomination_status.html',
{'nomcom': nomcom,
'year': year,
'nominee_position': nominee_position,
'state': state,
'need_confirmation': need_confirmation,
'selected': 'feedback',
'form': form }, RequestContext(request))
'form': form })
@role_required("Nomcom")
@ -650,7 +651,7 @@ def view_feedback(request, year):
nominees_feedback.append( {'nominee':nominee, 'feedback':nominee_feedback} )
independent_feedback = [ft.feedback_set.get_by_nomcom(nomcom).count() for ft in independent_feedback_types]
return render_to_response('nomcom/view_feedback.html',
return render(request, 'nomcom/view_feedback.html',
{'year': year,
'selected': 'view_feedback',
'nominees': nominees,
@ -658,7 +659,7 @@ def view_feedback(request, year):
'independent_feedback_types': independent_feedback_types,
'independent_feedback': independent_feedback,
'nominees_feedback': nominees_feedback,
'nomcom': nomcom}, RequestContext(request))
'nomcom': nomcom})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -747,7 +748,7 @@ def view_feedback_pending(request, year):
slug = rest[0]
rest = rest[1]
type_dict[slug] = t
return render_to_response('nomcom/view_feedback_pending.html',
return render(request, 'nomcom/view_feedback_pending.html',
{'year': year,
'selected': 'feedback_pending',
'formset': formset,
@ -757,7 +758,7 @@ def view_feedback_pending(request, year):
'types': FeedbackTypeName.objects.all().order_by('pk'),
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom")
@ -769,11 +770,11 @@ def view_feedback_unrelated(request, year):
feedback_types.append({'ft': ft,
'feedback': ft.feedback_set.get_by_nomcom(nomcom)})
return render_to_response('nomcom/view_feedback_unrelated.html',
return render(request, 'nomcom/view_feedback_unrelated.html',
{'year': year,
'selected': 'view_feedback',
'feedback_types': feedback_types,
'nomcom': nomcom}, RequestContext(request))
'nomcom': nomcom})
@role_required("Nomcom")
@ -790,13 +791,13 @@ def view_feedback_nominee(request, year, nominee_id):
else:
FeedbackLastSeen.objects.create(reviewer=request.user.person,nominee=nominee)
return render_to_response('nomcom/view_feedback_nominee.html',
return render(request, 'nomcom/view_feedback_nominee.html',
{'year': year,
'selected': 'view_feedback',
'nominee': nominee,
'feedback_types': feedback_types,
'last_seen_time' : last_seen_time,
'nomcom': nomcom}, RequestContext(request))
'nomcom': nomcom})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -814,14 +815,14 @@ def edit_nominee(request, year, nominee_id):
else:
form = EditNomineeForm(instance=nominee)
return render_to_response('nomcom/edit_nominee.html',
return render(request, 'nomcom/edit_nominee.html',
{'year': year,
'selected': 'index',
'nominee': nominee,
'form': form,
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -854,14 +855,14 @@ def edit_nomcom(request, year):
formset = ReminderDateInlineFormSet(instance=nomcom)
form = EditNomcomForm(instance=nomcom)
return render_to_response('nomcom/edit_nomcom.html',
return render(request, 'nomcom/edit_nomcom.html',
{'form': form,
'formset': formset,
'nomcom': nomcom,
'year': year,
'selected': 'edit_nomcom',
'is_chair_task' : True,
}, RequestContext(request))
})
@ -871,14 +872,14 @@ def list_templates(request, year):
positions = nomcom.position_set.all()
template_list = DBTemplate.objects.filter(group=nomcom.group).exclude(path__contains='/position/')
return render_to_response('nomcom/list_templates.html',
return render(request, 'nomcom/list_templates.html',
{'template_list': template_list,
'positions': positions,
'year': year,
'selected': 'edit_templates',
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -910,13 +911,13 @@ def list_positions(request, year):
nomcom = get_nomcom_by_year(year)
positions = nomcom.position_set.order_by('-is_open')
return render_to_response('nomcom/list_positions.html',
return render(request, 'nomcom/list_positions.html',
{'positions': positions,
'year': year,
'selected': 'edit_positions',
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -932,12 +933,12 @@ def remove_position(request, year, position_id):
if request.POST.get('remove', None):
position.delete()
return redirect('nomcom_list_positions', year=year)
return render_to_response('nomcom/remove_position.html',
return render(request, 'nomcom/remove_position.html',
{'year': year,
'position': position,
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
@ -963,13 +964,13 @@ def edit_position(request, year, position_id=None):
else:
form = PositionForm(instance=position, nomcom=nomcom)
return render_to_response('nomcom/edit_position.html',
return render(request, 'nomcom/edit_position.html',
{'form': form,
'position': position,
'year': year,
'nomcom': nomcom,
'is_chair_task' : True,
}, RequestContext(request))
})
@role_required("Nomcom Chair", "Nomcom Advisor")
def configuration_help(request, year):

View file

@ -1,8 +1,8 @@
from django.conf.urls import patterns
from django.conf.urls import url
from ietf.person import views, ajax
urlpatterns = patterns('',
(r'^search/(?P<model_name>(person|email))/$', "ietf.person.views.ajax_select2_search", None, 'ajax_select2_search_person_email'),
(r'^(?P<personid>[a-z0-9]+).json$', ajax.person_json),
(ur'^(?P<email_or_name>[-\w\s\']+)', views.profile),
)
urlpatterns = [
url(r'^search/(?P<model_name>(person|email))/$', "ietf.person.views.ajax_select2_search", None, 'ajax_select2_search_person_email'),
url(r'^(?P<personid>[a-z0-9]+).json$', ajax.person_json),
url(ur'^(?P<email_or_name>[-\w\s\']+)', views.profile),
]

View file

@ -33,6 +33,8 @@
from ietf.utils.test_utils import split_url, TestCase
import debug # pyflakes:ignore
REDIRECT_TESTS = {
# announcements
@ -87,6 +89,8 @@ REDIRECT_TESTS = {
}
class RedirectsTests(TestCase):
fixtures = ["initial_data.xml", ]
def test_redirects(self):
for src, dst in REDIRECT_TESTS.items():
baseurl, args = split_url(src)

View file

@ -1,7 +1,7 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from django.conf.urls import patterns
from django.conf.urls import url
urlpatterns = patterns('',
(r'^(?P<script>.*?\.cgi)(/.*)?$', 'ietf.redirects.views.redirect'),
)
urlpatterns = [
url(r'^(?P<script>.*?\.cgi)(/.*)?$', 'ietf.redirects.views.redirect'),
]

View file

@ -4,6 +4,8 @@ from django.http import HttpResponsePermanentRedirect, Http404, BadHeaderError
from django.shortcuts import get_object_or_404
import re
import debug # pyflakes:ignore
from ietf.redirects.models import Redirect, Command
def redirect(request, path="", script=""):

View file

@ -1,11 +1,10 @@
from django.conf.urls import patterns
from django.conf.urls import url
from django.views.generic import TemplateView
urlpatterns = patterns('',
(r'^$', 'ietf.release.views.release'),
(r'^(?P<version>[0-9.]+.*)/$', 'ietf.release.views.release'),
(r'^about/?$', TemplateView.as_view(template_name='release/about.html')),
(r'^todo/?$', TemplateView.as_view(template_name='release/todo.html')),
)
urlpatterns = [
url(r'^$', 'ietf.release.views.release'),
url(r'^(?P<version>[0-9.]+.*)/$', 'ietf.release.views.release'),
url(r'^about/?$', TemplateView.as_view(template_name='release/about.html')),
url(r'^todo/?$', TemplateView.as_view(template_name='release/todo.html')),
]

View file

@ -4,8 +4,7 @@ import json
import datetime
import gzip
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.conf import settings
from django.http import HttpResponse
@ -60,7 +59,7 @@ def release(request, version=None):
if "coverage" in coverage[key]:
coverage[key]["percentage"] = coverage[key]["coverage"] * 100
return render_to_response('release/release.html',
return render(request, 'release/release.html',
{
'releases': log_entries,
'version': version,
@ -68,7 +67,7 @@ def release(request, version=None):
'coverage': coverage,
'code_coverage_url': code_coverage_url,
'code_coverage_time': code_coverage_time,
},
context_instance=RequestContext(request))
} )

View file

@ -1,6 +1,6 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.announcement.views',
url(r'^$', 'main', name='announcement'),
url(r'^confirm/$', 'confirm', name='announcement_confirm'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.announcement.views.main', name='announcement'),
url(r'^confirm/$', 'ietf.secr.announcement.views.confirm', name='announcement_confirm'),
]

View file

@ -1,8 +1,7 @@
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseForbidden
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.shortcuts import render, redirect
from ietf.group.models import Role
from ietf.ietfauth.utils import has_role
@ -68,10 +67,7 @@ def main(request):
return redirect('announcement_confirm')
return render_to_response('announcement/main.html', {
'form': form},
RequestContext(request, {}),
)
return render(request, 'announcement/main.html', { 'form': form} )
@login_required
@check_for_cancel('../')
@ -107,8 +103,7 @@ def confirm(request):
else:
to = data['to']
return render_to_response('announcement/confirm.html', {
return render(request, 'announcement/confirm.html', {
'message': data,
'to': to},
RequestContext(request, {}),
)

View file

@ -145,7 +145,7 @@ class AddAreaModelForm(forms.ModelForm):
# name = forms.CharField(max_length=80,required=True)
# status = forms.IntegerField(widget=forms.Select(choices=STATE_CHOICES),required=True)
# start_date = forms.DateField()
# comments = forms.CharField(widget=forms.Textarea(attrs={'rows':'1'}),required=False)
# comments = forms.CharField(widget=forms.Textarea(attrs={'rows':'1'}),required=False, strip=False)
#
# def clean_acronym(self):
# # get name, strip leading and trailing spaces

View file

@ -1,12 +1,12 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.areas.views',
url(r'^$', 'list_areas', name='areas'),
url(r'^add/$', 'add', name='areas_add'),
url(r'^getemails', 'getemails', name='areas_emails'),
url(r'^getpeople', 'getpeople', name='areas_getpeople'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/$', 'view', name='areas_view'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/$', 'edit', name='areas_edit'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/people/$', 'people', name='areas_people'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/people/modify/$', 'modify', name='areas_modify'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.areas.views.list_areas', name='areas'),
url(r'^add/$', 'ietf.secr.areas.views.add', name='areas_add'),
url(r'^getemails', 'ietf.secr.areas.views.getemails', name='areas_emails'),
url(r'^getpeople', 'ietf.secr.areas.views.getpeople', name='areas_getpeople'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/$', 'ietf.secr.areas.views.view', name='areas_view'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/edit/$', 'ietf.secr.areas.views.edit', name='areas_edit'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/people/$', 'ietf.secr.areas.views.people', name='areas_people'),
url(r'^(?P<name>[A-Za-z0-9.-]+)/people/modify/$', 'ietf.secr.areas.views.modify', name='areas_modify'),
]

View file

@ -5,8 +5,7 @@ from django.contrib import messages
from django.forms.formsets import formset_factory
from django.forms.models import inlineformset_factory
from django.http import HttpResponse
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.group.models import Group, GroupEvent, GroupURL, Role, ChangeStateGroupEvent
from ietf.group.utils import save_group_in_history
@ -90,10 +89,9 @@ def add(request):
area_form = AddAreaModelForm()
awp_formset = AWPFormSet(prefix='awp')
return render_to_response('areas/add.html', {
return render(request, 'areas/add.html', {
'area_form': area_form,
'awp_formset': awp_formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -153,12 +151,11 @@ def edit(request, name):
form = AreaForm(instance=area)
awp_formset = AWPFormSet(instance=area)
return render_to_response('areas/edit.html', {
return render(request, 'areas/edit.html', {
'area': area,
'form': form,
'awp_formset': awp_formset,
},
RequestContext(request,{}),
)
@role_required('Secretariat')
@ -178,10 +175,7 @@ def list_areas(request):
results = Group.objects.filter(type="area").order_by('name')
return render_to_response('areas/list.html', {
'results': results},
RequestContext(request, {}),
)
return render(request, 'areas/list.html', { 'results': results} )
@role_required('Secretariat')
def people(request, name):
@ -226,11 +220,10 @@ def people(request, name):
form = AreaDirectorForm()
directors = area.role_set.filter(name__slug__in=('ad','pre-ad'))
return render_to_response('areas/people.html', {
return render(request, 'areas/people.html', {
'area': area,
'form': form,
'directors': directors},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -310,8 +303,7 @@ def view(request, name):
pass
directors = area.role_set.filter(name__slug__in=('ad','pre-ad'))
return render_to_response('areas/view.html', {
return render(request, 'areas/view.html', {
'area': area,
'directors': directors},
RequestContext(request, {}),
)

View file

@ -1,5 +1,5 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.console.views',
url(r'^$', 'main', name='console'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.console.views.main', name='console'),
]

View file

@ -1,6 +1,5 @@
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.shortcuts import render
from ietf.doc.models import DocEvent
from ietf.ietfauth.utils import role_required
@ -13,7 +12,6 @@ def main(request):
latest_docevent = DocEvent.objects.all().order_by('-time')[0]
return render_to_response('console/main.html', {
return render(request, 'console/main.html', {
'latest_docevent': latest_docevent},
RequestContext(request, {}),
)

View file

@ -214,7 +214,7 @@ class EmailForm(forms.Form):
to = forms.CharField(max_length=255)
cc = forms.CharField(required=False)
subject = forms.CharField(max_length=255)
body = forms.CharField(widget=forms.Textarea())
body = forms.CharField(widget=forms.Textarea(), strip=False)
class ExtendForm(forms.Form):
expiration_date = forms.DateField()

View file

@ -1,25 +1,24 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.drafts.views',
url(r'^$', 'search', name='drafts'),
url(r'^add/$', 'add', name='drafts_add'),
url(r'^approvals/$', 'approvals', name='drafts_approvals'),
url(r'^dates/$', 'dates', name='drafts_dates'),
url(r'^nudge-report/$', 'nudge_report', name='drafts_nudge_report'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/$', 'view', name='drafts_view'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/abstract/$', 'abstract', name='drafts_abstract'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/announce/$', 'announce', name='drafts_announce'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/authors/$', 'authors', name='drafts_authors'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/author_delete/(?P<oid>\d{1,6})$',
'author_delete', name='drafts_author_delete'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/confirm/$', 'confirm', name='drafts_confirm'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/edit/$', 'edit', name='drafts_edit'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/extend/$', 'extend', name='drafts_extend'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/email/$', 'email', name='drafts_email'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/makerfc/$', 'makerfc', name='drafts_makerfc'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/replace/$', 'replace', name='drafts_replace'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/resurrect/$', 'resurrect', name='drafts_resurrect'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/revision/$', 'revision', name='drafts_revision'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/update/$', 'update', name='drafts_update'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/withdraw/$', 'withdraw', name='drafts_withdraw'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.drafts.views.search', name='drafts'),
url(r'^add/$', 'ietf.secr.drafts.views.add', name='drafts_add'),
url(r'^approvals/$', 'ietf.secr.drafts.views.approvals', name='drafts_approvals'),
url(r'^dates/$', 'ietf.secr.drafts.views.dates', name='drafts_dates'),
url(r'^nudge-report/$', 'ietf.secr.drafts.views.nudge_report', name='drafts_nudge_report'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/$', 'ietf.secr.drafts.views.view', name='drafts_view'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/abstract/$', 'ietf.secr.drafts.views.abstract', name='drafts_abstract'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/announce/$', 'ietf.secr.drafts.views.announce', name='drafts_announce'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/authors/$', 'ietf.secr.drafts.views.authors', name='drafts_authors'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/author_delete/(?P<oid>\d{1,6})$', 'ietf.secr.drafts.views.author_delete', name='drafts_author_delete'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/confirm/$', 'ietf.secr.drafts.views.confirm', name='drafts_confirm'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/edit/$', 'ietf.secr.drafts.views.edit', name='drafts_edit'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/extend/$', 'ietf.secr.drafts.views.extend', name='drafts_extend'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/email/$', 'ietf.secr.drafts.views.email', name='drafts_email'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/makerfc/$', 'ietf.secr.drafts.views.makerfc', name='drafts_makerfc'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/replace/$', 'ietf.secr.drafts.views.replace', name='drafts_replace'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/resurrect/$', 'ietf.secr.drafts.views.resurrect', name='drafts_resurrect'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/revision/$', 'ietf.secr.drafts.views.revision', name='drafts_revision'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/update/$', 'ietf.secr.drafts.views.update', name='drafts_update'),
url(r'^(?P<id>[A-Za-z0-9._\-\+]+)/withdraw/$', 'ietf.secr.drafts.views.withdraw', name='drafts_withdraw'),
]

View file

@ -7,8 +7,7 @@ from django.conf import settings
from django.contrib import messages
from django.db.models import Max
from django.forms.formsets import formset_factory
from django.shortcuts import render_to_response, get_object_or_404, redirect, render
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.doc.models import Document, DocumentAuthor, DocAlias, DocRelationshipName, RelatedDocument, State
from ietf.doc.models import DocEvent, NewRevisionDocEvent
@ -402,9 +401,8 @@ def abstract(request, id):
'''
draft = get_object_or_404(Document, name=id)
return render_to_response('drafts/abstract.html', {
return render(request, 'drafts/abstract.html', {
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -492,10 +490,9 @@ def add(request):
form = AddModelForm()
upload_form = UploadForm()
return render_to_response('drafts/add.html', {
return render(request, 'drafts/add.html', {
'form': form,
'upload_form': upload_form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -532,10 +529,9 @@ def approvals(request):
approved = Preapproval.objects.all().order_by('name')
form = None
return render_to_response('drafts/approvals.html', {
return render(request, 'drafts/approvals.html', {
'form': form,
'approved': approved},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -589,10 +585,9 @@ def authors(request, id):
else:
form = AuthorForm()
return render_to_response('drafts/authors.html', {
return render(request, 'drafts/authors.html', {
'draft': draft,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -638,12 +633,11 @@ def confirm(request, id):
email = request.session.get('email','')
action = request.session.get('action','')
return render_to_response('drafts/confirm.html', {
return render(request, 'drafts/confirm.html', {
'details': details,
'email': email,
'action': action,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -661,9 +655,8 @@ def dates(request):
'''
meeting = get_meeting()
return render_to_response('drafts/dates.html', {
return render(request, 'drafts/dates.html', {
'meeting':meeting},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -748,17 +741,16 @@ def email(request, id):
type=request.session['action'],
input=request.session.get('data', None)))
except Exception, e:
return render_to_response('drafts/error.html', { 'error': e},)
return render(request, 'drafts/error.html', { 'error': e},)
# for "revision" action skip email page and go directly to confirm
if request.session['action'] == 'revision':
request.session['email'] = form.initial
return redirect('drafts_confirm', id=id)
return render_to_response('drafts/email.html', {
return render(request, 'drafts/email.html', {
'form': form,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -787,10 +779,9 @@ def extend(request, id):
else:
form = ExtendForm(initial={'revision_date':datetime.date.today().isoformat()})
return render_to_response('drafts/extend.html', {
return render(request, 'drafts/extend.html', {
'form': form,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -863,11 +854,10 @@ def makerfc(request, id):
form = RfcModelForm(instance=draft)
obs_formset = ObsFormset(prefix='obs')
return render_to_response('drafts/makerfc.html', {
return render(request, 'drafts/makerfc.html', {
'form': form,
'obs_formset': obs_formset,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -879,9 +869,8 @@ def nudge_report(request):
docs = Document.objects.filter(type='draft',states__slug='active')
docs = docs.filter(states=12,tags='need-rev')
return render_to_response('drafts/report_nudge.html', {
return render(request, 'drafts/report_nudge.html', {
'docs': docs},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -910,10 +899,9 @@ def replace(request, id):
else:
form = ReplaceForm(draft=draft)
return render_to_response('drafts/replace.html', {
return render(request, 'drafts/replace.html', {
'form': form,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -960,11 +948,10 @@ def revision(request, id):
form = RevisionModelForm(instance=draft,initial={'revision_date':datetime.date.today().isoformat()})
upload_form = UploadForm(draft=draft)
return render_to_response('drafts/revision.html', {
return render(request, 'drafts/revision.html', {
'form': form,
'upload_form': upload_form,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -1033,10 +1020,9 @@ def search(request):
active_state = State.objects.get(type='draft',slug='active')
form = SearchForm(initial={'state':active_state.pk})
return render_to_response('drafts/search.html', {
return render(request, 'drafts/search.html', {
'results': results,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -1074,11 +1060,10 @@ def update(request, id):
form = RevisionModelForm(instance=draft,initial={'revision_date':datetime.date.today().isoformat()})
upload_form = UploadForm(draft=draft)
return render_to_response('drafts/revision.html', {
return render(request, 'drafts/revision.html', {
'form': form,
'upload_form':upload_form,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -1133,13 +1118,12 @@ def view(request, id):
except AttributeError:
pass
return render_to_response('drafts/view.html', {
return render(request, 'drafts/view.html', {
'is_active': is_active,
'is_expired': is_expired,
'is_withdrawn': is_withdrawn,
'is_development': is_development,
'draft': draft},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -1168,9 +1152,8 @@ def withdraw(request, id):
else:
form = WithdrawForm()
return render_to_response('drafts/withdraw.html', {
return render(request, 'drafts/withdraw.html', {
'draft': draft,
'form': form},
RequestContext(request, {}),
)

View file

@ -38,7 +38,7 @@ def get_person(name):
# ---------------------------------------------
class DescriptionForm (forms.Form):
description = forms.CharField(widget=forms.Textarea(attrs={'rows':'20'}),required=True)
description = forms.CharField(widget=forms.Textarea(attrs={'rows':'20'}),required=True, strip=False)
class GroupMilestoneForm(forms.ModelForm):
class Meta:

View file

@ -1,17 +1,17 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.conf import settings
urlpatterns = patterns('ietf.secr.groups.views',
url(r'^$', 'search', name='groups'),
url(r'^add/$', 'add', name='groups_add'),
url(r'^blue-dot-report/$', 'blue_dot', name='groups_blue_dot'),
url(r'^search/$', 'search', name='groups_search'),
#(r'^ajax/get_ads/$', 'get_ads'),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'view', name='groups_view'),
url(r'^%(acronym)s/delete/(?P<id>\d{1,6})/$' % settings.URL_REGEXPS, 'delete_role', name='groups_delete_role'),
url(r'^%(acronym)s/charter/$' % settings.URL_REGEXPS, 'charter', name='groups_charter'),
url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, 'edit', name='groups_edit'),
url(r'^%(acronym)s/gm/$' % settings.URL_REGEXPS, 'view_gm', name='groups_view_gm'),
url(r'^%(acronym)s/gm/edit/$' % settings.URL_REGEXPS, 'edit_gm', name='groups_edit_gm'),
url(r'^%(acronym)s/people/$' % settings.URL_REGEXPS, 'people', name='groups_people'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.groups.views.search', name='groups'),
url(r'^add/$', 'ietf.secr.groups.views.add', name='groups_add'),
url(r'^blue-dot-report/$', 'ietf.secr.groups.views.blue_dot', name='groups_blue_dot'),
url(r'^search/$', 'ietf.secr.groups.views.search', name='groups_search'),
#(r'^ajax/get_ads/$', 'ietf.secr.groups.views.get_ads'),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.view', name='groups_view'),
url(r'^%(acronym)s/delete/(?P<id>\d{1,6})/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.delete_role', name='groups_delete_role'),
url(r'^%(acronym)s/charter/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.charter', name='groups_charter'),
url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.edit', name='groups_edit'),
url(r'^%(acronym)s/gm/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.view_gm', name='groups_view_gm'),
url(r'^%(acronym)s/gm/edit/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.edit_gm', name='groups_edit_gm'),
url(r'^%(acronym)s/people/$' % settings.URL_REGEXPS, 'ietf.secr.groups.views.people', name='groups_people'),
]

View file

@ -1,8 +1,7 @@
from django.contrib import messages
from django.conf import settings
from django.forms.models import inlineformset_factory
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.group.models import Group, GroupMilestone, ChangeStateGroupEvent, GroupEvent, GroupURL, Role
from ietf.group.utils import save_group_in_history, get_charter_text, setup_default_community_list_for_group
@ -120,10 +119,9 @@ def add(request):
form = GroupModelForm(initial={'state':'active','type':'wg'})
awp_formset = AWPFormSet(prefix='awp')
return render_to_response('groups/add.html', {
return render(request, 'groups/add.html', {
'form': form,
'awp_formset': awp_formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -147,9 +145,8 @@ def blue_dot(request):
# sort the list
sorted_chairs = sorted(chairs, key = lambda a: a['name'])
return render_to_response('groups/blue_dot_report.txt', {
'chairs':sorted_chairs},
RequestContext(request, {}), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET,
return render(request, 'groups/blue_dot_report.txt', { 'chairs':sorted_chairs },
content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET,
)
@role_required('Secretariat')
@ -174,10 +171,9 @@ def charter(request, acronym):
else:
charter_text = ''
return render_to_response('groups/charter.html', {
return render(request, 'groups/charter.html', {
'group': group,
'charter_text': charter_text},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -273,11 +269,10 @@ def edit(request, acronym):
messages.warning(request, "WARNING: don't use this tool to change group names. Use Datatracker when possible.")
return render_to_response('groups/edit.html', {
return render(request, 'groups/edit.html', {
'group': group,
'awp_formset': awp_formset,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -311,10 +306,9 @@ def edit_gm(request, acronym):
else:
formset = GMFormset(instance=group, prefix='goalmilestone')
return render_to_response('groups/edit_gm.html', {
return render(request, 'groups/edit_gm.html', {
'group': group,
'formset': formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -355,10 +349,9 @@ def people(request, acronym):
else:
form = RoleForm(initial={'name':'chair'},group=group)
return render_to_response('groups/people.html', {
return render(request, 'groups/people.html', {
'form':form,
'group':group},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -434,10 +427,9 @@ def search(request):
for result in results:
add_legacy_fields(result)
return render_to_response('groups/search.html', {
return render(request, 'groups/search.html', {
'results': results,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -459,10 +451,7 @@ def view(request, acronym):
add_legacy_fields(group)
return render_to_response('groups/view.html', {
'group': group},
RequestContext(request, {}),
)
return render(request, 'groups/view.html', { 'group': group } )
@role_required('Secretariat')
def view_gm(request, acronym):
@ -481,7 +470,4 @@ def view_gm(request, acronym):
group = get_object_or_404(Group, acronym=acronym)
return render_to_response('groups/view_gm.html', {
'group': group},
RequestContext(request, {}),
)
return render(request, 'groups/view_gm.html', { 'group': group } )

View file

@ -1,8 +1,6 @@
import json
from django.http import HttpResponse
from django.template import RequestContext
from django.shortcuts import render_to_response
def template(template):
def decorator(fn):
@ -13,10 +11,7 @@ def template(template):
return context_data
else:
# For any other type of data try to populate a template
return render_to_response(template,
context_data,
context_instance=RequestContext(request)
)
return render(request, template, context_data)
return render
return decorator
@ -27,7 +22,3 @@ def jsonapi(fn):
content_type='application/json')
return to_json
def render(template, data, request):
return render_to_response(template,
data,
context_instance=RequestContext(request))

View file

@ -1,25 +1,25 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.meetings.views',
url(r'^$', 'main', name='meetings'),
url(r'^add/$', 'add', name='meetings_add'),
url(r'^ajax/get-times/(?P<meeting_id>\d{1,6})/(?P<day>\d)/$', 'ajax_get_times', name='meetings_ajax_get_times'),
url(r'^blue_sheet/$', 'blue_sheet_redirect', name='meetings_blue_sheet_redirect'),
url(r'^(?P<meeting_id>\d{1,6})/$', 'view', name='meetings_view'),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/$', 'blue_sheet', name='meetings_blue_sheet'),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/generate/$', 'blue_sheet_generate', name='meetings_blue_sheet_generate'),
url(r'^(?P<meeting_id>\d{1,6})/edit/$', 'edit_meeting', name='meetings_edit_meeting'),
url(r'^(?P<meeting_id>\d{1,6})/notifications/$', 'notifications', name='meetings_notifications'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', 'select', name='meetings_select'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/$', 'non_session', name='meetings_non_session'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/edit/(?P<slot_id>\d{1,6})/$', 'non_session_edit', name='meetings_non_session_edit'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/delete/(?P<slot_id>\d{1,6})/$', 'non_session_delete', name='meetings_non_session_delete'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/rooms/$', 'rooms', name='meetings_rooms'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/select/$', 'select_group', name='meetings_select_group'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/$', 'times', name='meetings_times'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/delete/(?P<time>[0-9\:]+)/$', 'times_delete', name='meetings_times_delete'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/edit/(?P<time>[0-9\:]+)/$', 'times_edit', name='meetings_times_edit'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/unschedule/(?P<session_id>\d{1,6})/$', 'unschedule', name='meetings_unschedule'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/(?P<acronym>[-a-z0-9]+)/schedule/$', 'schedule', name='meetings_schedule'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<acronym>[-a-z0-9]+)/remove/$', 'remove_session', name='meetings_remove_session'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.meetings.views.main', name='meetings'),
url(r'^add/$', 'ietf.secr.meetings.views.add', name='meetings_add'),
url(r'^ajax/get-times/(?P<meeting_id>\d{1,6})/(?P<day>\d)/$', 'ietf.secr.meetings.views.ajax_get_times', name='meetings_ajax_get_times'),
url(r'^blue_sheet/$', 'ietf.secr.meetings.views.blue_sheet_redirect', name='meetings_blue_sheet_redirect'),
url(r'^(?P<meeting_id>\d{1,6})/$', 'ietf.secr.meetings.views.view', name='meetings_view'),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/$', 'ietf.secr.meetings.views.blue_sheet', name='meetings_blue_sheet'),
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/generate/$', 'ietf.secr.meetings.views.blue_sheet_generate', name='meetings_blue_sheet_generate'),
url(r'^(?P<meeting_id>\d{1,6})/edit/$', 'ietf.secr.meetings.views.edit_meeting', name='meetings_edit_meeting'),
url(r'^(?P<meeting_id>\d{1,6})/notifications/$', 'ietf.secr.meetings.views.notifications', name='meetings_notifications'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', 'ietf.secr.meetings.views.select', name='meetings_select'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/$', 'ietf.secr.meetings.views.non_session', name='meetings_non_session'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/edit/(?P<slot_id>\d{1,6})/$', 'ietf.secr.meetings.views.non_session_edit', name='meetings_non_session_edit'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/delete/(?P<slot_id>\d{1,6})/$', 'ietf.secr.meetings.views.non_session_delete', name='meetings_non_session_delete'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/rooms/$', 'ietf.secr.meetings.views.rooms', name='meetings_rooms'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/select/$', 'ietf.secr.meetings.views.select_group', name='meetings_select_group'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/$', 'ietf.secr.meetings.views.times', name='meetings_times'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/delete/(?P<time>[0-9\:]+)/$', 'ietf.secr.meetings.views.times_delete', name='meetings_times_delete'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/edit/(?P<time>[0-9\:]+)/$', 'ietf.secr.meetings.views.times_edit', name='meetings_times_edit'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/unschedule/(?P<session_id>\d{1,6})/$', 'ietf.secr.meetings.views.unschedule', name='meetings_unschedule'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/(?P<acronym>[-a-z0-9]+)/schedule/$', 'ietf.secr.meetings.views.schedule', name='meetings_schedule'),
url(r'^(?P<meeting_id>\d{1,6})/(?P<acronym>[-a-z0-9]+)/remove/$', 'ietf.secr.meetings.views.remove_session', name='meetings_remove_session'),
]

View file

@ -10,8 +10,7 @@ from django.db.models import Max
from django.forms.formsets import formset_factory
from django.forms.models import inlineformset_factory
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from django.utils.functional import curry
from ietf.ietfauth.utils import role_required
@ -324,9 +323,8 @@ def add(request):
max_number = Meeting.objects.filter(type='ietf').aggregate(Max('number'))['number__max']
form = MeetingModelForm(initial={'number':int(max_number) + 1})
return render_to_response('meetings/add.html', {
return render(request, 'meetings/add.html', {
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -354,13 +352,12 @@ def blue_sheet(request, meeting_id):
else:
form = UploadBlueSheetForm()
return render_to_response('meetings/blue_sheet.html', {
return render(request, 'meetings/blue_sheet.html', {
'meeting': meeting,
'url': url,
'form': form,
'last_run': last_run,
'uploaded_files': uploaded_files},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -423,10 +420,9 @@ def edit_meeting(request, meeting_id):
else:
form = MeetingModelForm(instance=meeting)
return render_to_response('meetings/edit_meeting.html', {
return render(request, 'meetings/edit_meeting.html', {
'meeting': meeting,
'form' : form, },
RequestContext(request,{}),
)
@role_required('Secretariat')
@ -442,10 +438,9 @@ def main(request):
choices = [ (str(x.number),str(x.number)) for x in meetings ]
form = GroupSelectForm(choices=choices)
return render_to_response('meetings/main.html', {
return render(request, 'meetings/main.html', {
'form': form,
'meetings': meetings},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -511,12 +506,11 @@ def non_session(request, meeting_id, schedule_name):
if TimeSlot.objects.filter(meeting=meeting,type='other',location__isnull=True):
messages.warning(request, 'There are non-session items which do not have a room assigned')
return render_to_response('meetings/non_session.html', {
return render(request, 'meetings/non_session.html', {
'slots': slots,
'form': form,
'meeting': meeting,
'schedule': schedule},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -585,12 +579,11 @@ def non_session_edit(request, meeting_id, schedule_name, slot_id):
'short':session.short}
form = NonSessionEditForm(meeting=meeting,session=session,initial=initial)
return render_to_response('meetings/non_session_edit.html', {
return render(request, 'meetings/non_session_edit.html', {
'meeting': meeting,
'form': form,
'schedule': schedule,
'slot': slot},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -622,11 +615,10 @@ def notifications(request, meeting_id):
messages.success(request, "Notifications Sent")
return redirect('meetings_view', meeting_id=meeting.number)
return render_to_response('meetings/notifications.html', {
return render(request, 'meetings/notifications.html', {
'meeting': meeting,
'groups': sorted(groups, key=lambda a: a.acronym),
'last_notice': last_notice },
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -691,11 +683,10 @@ def rooms(request, meeting_id, schedule_name):
else:
formset = RoomFormset(instance=meeting, prefix='room')
return render_to_response('meetings/rooms.html', {
return render(request, 'meetings/rooms.html', {
'meeting': meeting,
'schedule': schedule,
'formset': formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -802,14 +793,13 @@ def schedule(request, meeting_id, schedule_name, acronym):
else:
formset = NewSessionFormset(initial=initial)
return render_to_response('meetings/schedule.html', {
return render(request, 'meetings/schedule.html', {
'group': group,
'meeting': meeting,
'schedule': schedule,
'show_request': True,
'session': legacy_session,
'formset': formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -820,10 +810,9 @@ def select(request, meeting_id, schedule_name):
meeting = get_object_or_404(Meeting, number=meeting_id)
schedule = get_object_or_404(Schedule, meeting=meeting, name=schedule_name)
return render_to_response('meetings/select.html', {
return render(request, 'meetings/select.html', {
'meeting': meeting,
'schedule': schedule},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -862,14 +851,13 @@ def select_group(request, meeting_id, schedule_name):
irtfs = filter(lambda a: a.type_id=='rg' and a.state_id in ('active','proposed'), unscheduled_groups)
irtf_form = GroupSelectForm(choices=build_choices(irtfs))
return render_to_response('meetings/select_group.html', {
return render(request, 'meetings/select_group.html', {
'group_form': group_form,
'bof_form': bof_form,
'irtf_form': irtf_form,
'scheduled_groups': scheduled_groups,
'meeting': meeting,
'schedule': schedule},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -929,12 +917,11 @@ def times(request, meeting_id, schedule_name):
else:
form = TimeSlotForm()
return render_to_response('meetings/times.html', {
return render(request, 'meetings/times.html', {
'form': form,
'meeting': meeting,
'schedule': schedule,
'times': times},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -985,11 +972,10 @@ def times_edit(request, meeting_id, schedule_name, time):
'name':timeslots.first().name}
form = TimeSlotForm(initial=initial)
return render_to_response('meetings/times_edit.html', {
return render(request, 'meetings/times_edit.html', {
'meeting': meeting,
'schedule': schedule,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -1039,7 +1025,6 @@ def view(request, meeting_id):
'''
meeting = get_object_or_404(Meeting, number=meeting_id)
return render_to_response('meetings/view.html', {
return render(request, 'meetings/view.html', {
'meeting': meeting},
RequestContext(request, {}),
)

View file

@ -91,7 +91,8 @@ def create_recording(session,url):
rev=doc.rev,
desc='New revision available',
time=doc.time)
session.sessionpresentation_set.add(SessionPresentation(session=session,document=doc,rev=doc.rev))
pres = SessionPresentation.objects.create(session=session,document=doc,rev=doc.rev)
session.sessionpresentation_set.add(pres)
def mycomp(timeslot):
'''

View file

@ -1,16 +1,16 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.conf import settings
from ietf.meeting.views import OldUploadRedirect
urlpatterns = patterns('ietf.secr.proceedings.views',
url(r'^$', 'main', name='proceedings'),
url(r'^ajax/generate-proceedings/(?P<meeting_num>\d{1,3})/$', 'ajax_generate_proceedings', name='proceedings_ajax_generate_proceedings'),
urlpatterns = [
url(r'^$', 'ietf.secr.proceedings.views.main', name='proceedings'),
url(r'^ajax/generate-proceedings/(?P<meeting_num>\d{1,3})/$', 'ietf.secr.proceedings.views.ajax_generate_proceedings', name='proceedings_ajax_generate_proceedings'),
# special offline URL for testing proceedings build
url(r'^process-pdfs/(?P<meeting_num>\d{1,3})/$', 'process_pdfs', name='proceedings_process_pdfs'),
url(r'^progress-report/(?P<meeting_num>\d{1,3})/$', 'progress_report', name='proceedings_progress_report'),
url(r'^(?P<meeting_num>\d{1,3})/$', 'select', name='proceedings_select'),
url(r'^(?P<meeting_num>\d{1,3})/recording/$', 'recording', name='proceedings_recording'),
url(r'^(?P<meeting_num>\d{1,3})/recording/edit/(?P<name>[A-Za-z0-9_\-\+]+)$', 'recording_edit', name='proceedings_recording_edit'),
url(r'^process-pdfs/(?P<meeting_num>\d{1,3})/$', 'ietf.secr.proceedings.views.process_pdfs', name='proceedings_process_pdfs'),
url(r'^progress-report/(?P<meeting_num>\d{1,3})/$', 'ietf.secr.proceedings.views.progress_report', name='proceedings_progress_report'),
url(r'^(?P<meeting_num>\d{1,3})/$', 'ietf.secr.proceedings.views.select', name='proceedings_select'),
url(r'^(?P<meeting_num>\d{1,3})/recording/$', 'ietf.secr.proceedings.views.recording', name='proceedings_recording'),
url(r'^(?P<meeting_num>\d{1,3})/recording/edit/(?P<name>[A-Za-z0-9_\-\+]+)$', 'ietf.secr.proceedings.views.recording_edit', name='proceedings_recording_edit'),
url(r'^(?P<num>\d{1,3}|interim-\d{4}-[A-Za-z0-9_\-\+]+)/%(acronym)s/$' % settings.URL_REGEXPS,
OldUploadRedirect.as_view(permanent=True)),
)
]

View file

@ -10,8 +10,7 @@ from django.contrib import messages
from django.core.urlresolvers import reverse
from django.db.models import Max
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.secr.utils.decorators import sec_only
from ietf.secr.utils.group import get_my_groups
@ -180,11 +179,10 @@ def ajax_generate_proceedings(request, meeting_num):
path = os.path.join(settings.SECR_PROCEEDINGS_DIR,meeting.number,'index.html')
last_run = datetime.datetime.fromtimestamp(os.path.getmtime(path))
return render_to_response('includes/proceedings_functions.html',{
return render(request, 'includes/proceedings_functions.html',{
'meeting':meeting,
'last_run':last_run,
'proceedings_url':proceedings_url},
RequestContext(request,{}),
)
# --------------------------------------------------
@ -223,11 +221,10 @@ def main(request):
# we today's date to see if we're past the submissio cutoff
today = datetime.date.today()
return render_to_response('proceedings/main.html',{
return render(request, 'proceedings/main.html',{
'meetings': meetings,
'interim_meetings': interim_meetings,
'today': today},
RequestContext(request,{}),
)
@sec_only
@ -311,12 +308,11 @@ def recording(request, meeting_num):
else:
form = RecordingForm(meeting=meeting)
return render_to_response('proceedings/recording.html',{
return render(request, 'proceedings/recording.html',{
'meeting':meeting,
'form':form,
'sessions':sessions,
'unmatched_recordings': get_unmatched_recordings(meeting)},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -350,11 +346,10 @@ def recording_edit(request, meeting_num, name):
else:
form = RecordingEditForm(instance=recording)
return render_to_response('proceedings/recording_edit.html',{
return render(request, 'proceedings/recording_edit.html',{
'meeting':meeting,
'form':form,
'recording':recording},
RequestContext(request, {}),
)
# TODO - should probably rename this since it's not selecting groups anymore
@ -382,11 +377,10 @@ def select(request, meeting_num):
pptx = Document.objects.filter(session__meeting=meeting,type='slides',external_url__endswith='.pptx').exclude(states__slug='deleted')
ppt_count = ppt.count() + pptx.count()
return render_to_response('proceedings/select.html', {
return render(request, 'proceedings/select.html', {
'meeting': meeting,
'last_run': last_run,
'proceedings_url': proceedings_url,
'ppt_count': ppt_count},
RequestContext(request,{}),
)

View file

@ -1,8 +1,8 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.conf import settings
urlpatterns = patterns('ietf.secr.roles.views',
url(r'^$', 'main', name='roles'),
url(r'^ajax/get-roles/%(acronym)s/$' % settings.URL_REGEXPS, 'ajax_get_roles', name='roles_ajax_get_roles'),
url(r'^%(acronym)s/delete/(?P<id>\d{1,6})/$' % settings.URL_REGEXPS, 'delete_role', name='roles_delete_role'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.roles.views.main', name='roles'),
url(r'^ajax/get-roles/%(acronym)s/$' % settings.URL_REGEXPS, 'ietf.secr.roles.views.ajax_get_roles', name='roles_ajax_get_roles'),
url(r'^%(acronym)s/delete/(?P<id>\d{1,6})/$' % settings.URL_REGEXPS, 'ietf.secr.roles.views.delete_role', name='roles_delete_role'),
]

View file

@ -1,8 +1,7 @@
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404
from ietf.group.models import Group, Role
from ietf.group.utils import save_group_in_history
@ -34,10 +33,9 @@ def ajax_get_roles(request, acronym):
'''
group = get_object_or_404(Group, acronym=acronym)
return render_to_response('roles/roles.html', {
return render(request, 'roles/roles.html', {
'group': group,
'roles': group.role_set.all()},
RequestContext(request, {}),
)
# --------------------------------------------------
# STANDARD VIEW FUNCTIONS
@ -105,8 +103,7 @@ def main(request):
if 'group' in request.GET:
group_form = GroupSelectForm(choices=choices,initial={'group':request.GET['group']})
return render_to_response('roles/main.html', {
return render(request, 'roles/main.html', {
'group_form': group_form,
'role_form': role_form},
RequestContext(request, {}),
)

View file

@ -1,10 +1,10 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.rolodex.views',
url(r'^$', 'search', name='rolodex'),
url(r'^add/$', 'add', name='rolodex_add'),
url(r'^add-proceed/$', 'add_proceed', name='rolodex_add_proceed'),
url(r'^(?P<id>\d{1,6})/edit/$', 'edit', name='rolodex_edit'),
#url(r'^(?P<id>\d{1,6})/delete/$', 'delete', name='rolodex_delete'),
url(r'^(?P<id>\d{1,6})/$', 'view', name='rolodex_view'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.rolodex.views.search', name='rolodex'),
url(r'^add/$', 'ietf.secr.rolodex.views.add', name='rolodex_add'),
url(r'^add-proceed/$', 'ietf.secr.rolodex.views.add_proceed', name='rolodex_add_proceed'),
url(r'^(?P<id>\d{1,6})/edit/$', 'ietf.secr.rolodex.views.edit', name='rolodex_edit'),
#url(r'^(?P<id>\d{1,6})/delete/$', 'ietf.secr.rolodex.views.delete', name='rolodex_delete'),
url(r'^(?P<id>\d{1,6})/$', 'ietf.secr.rolodex.views.view', name='rolodex_view'),
]

View file

@ -3,8 +3,7 @@ from django.contrib.auth.models import User
from django.db import IntegrityError
from django.forms.models import inlineformset_factory
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.ietfauth.utils import role_required
from ietf.person.models import Person, Email, Alias
@ -47,11 +46,10 @@ def add(request):
else:
form = NameForm()
return render_to_response('rolodex/add.html', {
return render(request, 'rolodex/add.html', {
'form': form,
'results': results,
'name': name},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -103,10 +101,9 @@ def add_proceed(request):
else:
form = NewPersonForm(initial={'name':name,'ascii':name})
return render_to_response('rolodex/add_proceed.html', {
return render(request, 'rolodex/add_proceed.html', {
'name': name,
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -138,10 +135,7 @@ def delete(request, id):
messages.warning(request, 'This feature is disabled')
return redirect('rolodex')
return render_to_response('rolodex/delete.html', {
'person': person},
RequestContext(request, {}),
)
return render(request, 'rolodex/delete.html', { 'person': person}, )
@role_required('Secretariat')
def edit(request, id):
@ -194,11 +188,10 @@ def edit(request, id):
# initialize formsets
email_formset = EmailFormset(instance=person, prefix='email')
return render_to_response('rolodex/edit.html', {
return render(request, 'rolodex/edit.html', {
'person': person,
'person_form': person_form,
'email_formset': email_formset},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -249,11 +242,10 @@ def search(request):
else:
form = SearchForm()
return render_to_response('rolodex/search.html', {
return render(request, 'rolodex/search.html', {
'results' : results,
'form': form,
'not_found': not_found},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -276,9 +268,8 @@ def view(request, id):
person.emails = person.email_set.filter(active=True)
roles = person.role_set.all().order_by('name__name','group__acronym')
return render_to_response('rolodex/view.html', {
return render(request, 'rolodex/view.html', {
'person': person,
'roles': roles},
RequestContext(request, {}),
)

View file

@ -135,5 +135,5 @@ class SessionForm(forms.Form):
return data
class ToolStatusForm(forms.Form):
message = forms.CharField(widget=forms.Textarea(attrs={'rows':'3','cols':'80'}))
message = forms.CharField(widget=forms.Textarea(attrs={'rows':'3','cols':'80'}), strip=False)

View file

@ -1,16 +1,16 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.conf import settings
urlpatterns = patterns('ietf.secr.sreq.views',
url(r'^$', 'main', name='sessions'),
url(r'^status/$', 'tool_status', name='sessions_tool_status'),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'view', name='sessions_view'),
url(r'^(?P<num>[A-Za-z0-9_\-\+]+)/%(acronym)s/view/$' % settings.URL_REGEXPS, 'view', name='sessions_view'),
url(r'^%(acronym)s/approve/$' % settings.URL_REGEXPS, 'approve', name='sessions_approve'),
url(r'^%(acronym)s/cancel/$' % settings.URL_REGEXPS, 'cancel', name='sessions_cancel'),
url(r'^%(acronym)s/confirm/$' % settings.URL_REGEXPS, 'confirm', name='sessions_confirm'),
url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, 'edit', name='sessions_edit'),
url(r'^%(acronym)s/new/$' % settings.URL_REGEXPS, 'new', name='sessions_new'),
url(r'^%(acronym)s/no_session/$' % settings.URL_REGEXPS, 'no_session', name='sessions_no_session'),
url(r'^(?P<num>[A-Za-z0-9_\-\+]+)/%(acronym)s/edit/$' % settings.URL_REGEXPS, 'edit_mtg', name='sessions_edit'),
)
urlpatterns = [
url(r'^$', 'ietf.secr.sreq.views.main', name='sessions'),
url(r'^status/$', 'ietf.secr.sreq.views.tool_status', name='sessions_tool_status'),
url(r'^%(acronym)s/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.view', name='sessions_view'),
url(r'^(?P<num>[A-Za-z0-9_\-\+]+)/%(acronym)s/view/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.view', name='sessions_view'),
url(r'^%(acronym)s/approve/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.approve', name='sessions_approve'),
url(r'^%(acronym)s/cancel/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.cancel', name='sessions_cancel'),
url(r'^%(acronym)s/confirm/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.confirm', name='sessions_confirm'),
url(r'^%(acronym)s/edit/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.edit', name='sessions_edit'),
url(r'^%(acronym)s/new/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.new', name='sessions_new'),
url(r'^%(acronym)s/no_session/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.no_session', name='sessions_no_session'),
url(r'^(?P<num>[A-Za-z0-9_\-\+]+)/%(acronym)s/edit/$' % settings.URL_REGEXPS, 'ietf.secr.sreq.views.edit_mtg', name='sessions_edit'),
]

View file

@ -3,8 +3,7 @@ import datetime
from django.contrib import messages
from django.db.models import Q
from django.http import Http404
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
import debug # pyflakes:ignore
@ -301,11 +300,10 @@ def confirm(request, acronym):
# GET logic
session_conflicts = session_conflicts_as_string(group, meeting)
return render_to_response('sreq/confirm.html', {
return render(request, 'sreq/confirm.html', {
'session': form,
'group': group,
'session_conflicts': session_conflicts},
RequestContext(request, {}),
)
#Move this into make_initial
@ -462,13 +460,12 @@ def edit_mtg(request, num, acronym):
return redirect('sessions_new', acronym=acronym)
form = SessionForm(initial=initial)
return render_to_response('sreq/edit.html', {
return render(request, 'sreq/edit.html', {
'is_locked': is_locked,
'meeting': meeting,
'form': form,
'group': group,
'session_conflicts': session_conflicts},
RequestContext(request, {}),
)
@role_required(*AUTHORIZED_ROLES)
@ -486,9 +483,8 @@ def main(request):
if is_locked and not has_role(request.user,'Secretariat'):
message = get_lock_message()
return render_to_response('sreq/locked.html', {
return render(request, 'sreq/locked.html', {
'message': message},
RequestContext(request, {}),
)
# TODO this is not currently used in the main template
@ -524,13 +520,12 @@ def main(request):
if group.session_set.filter(meeting=meeting,status='notmeet'):
group.not_meeting = True
return render_to_response('sreq/main.html', {
return render(request, 'sreq/main.html', {
'is_locked': is_locked,
'form': form,
'meeting': meeting,
'scheduled_groups': scheduled_groups,
'unscheduled_groups': unscheduled_groups},
RequestContext(request, {}),
)
@check_permissions
@ -586,12 +581,11 @@ def new(request, acronym):
add_essential_people(group,initial)
form = SessionForm(initial=initial)
return render_to_response('sreq/new.html', {
return render(request, 'sreq/new.html', {
'meeting': meeting,
'form': form,
'group': group,
'session_conflicts': session_conflicts},
RequestContext(request, {}),
)
@check_permissions
@ -678,10 +672,9 @@ def tool_status(request):
else:
form = ToolStatusForm()
return render_to_response('sreq/tool_status.html', {
return render(request, 'sreq/tool_status.html', {
'is_locked': is_locked,
'form': form},
RequestContext(request, {}),
)
@role_required(*AUTHORIZED_ROLES)
@ -729,7 +722,7 @@ def view(request, acronym, num = None):
# build session dictionary (like querydict from new session request form) for use in template
session = get_initial_session(sessions)
return render_to_response('sreq/view.html', {
return render(request, 'sreq/view.html', {
'is_locked': is_locked,
'session': session,
'activities': activities,
@ -737,6 +730,5 @@ def view(request, acronym, num = None):
'group': group,
'session_conflicts': session_conflicts,
'show_approve_button': show_approve_button},
RequestContext(request, {}),
)

View file

@ -1,14 +1,14 @@
from django.conf.urls import patterns, url
from django.conf.urls import url
urlpatterns = patterns('ietf.secr.telechat.views',
url(r'^$', 'main', name='telechat'),
url(r'^(?P<date>[0-9\-]+)/bash/$', 'bash', name='telechat_bash'),
url(r'^(?P<date>[0-9\-]+)/doc/$', 'doc', name='telechat_doc'),
url(r'^(?P<date>[0-9\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/$', 'doc_detail', name='telechat_doc_detail'),
url(r'^(?P<date>[0-9\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/(?P<nav>next|previous)/$', 'doc_navigate',
urlpatterns = [
url(r'^$', 'ietf.secr.telechat.views.main', name='telechat'),
url(r'^(?P<date>[0-9\-]+)/bash/$', 'ietf.secr.telechat.views.bash', name='telechat_bash'),
url(r'^(?P<date>[0-9\-]+)/doc/$', 'ietf.secr.telechat.views.doc', name='telechat_doc'),
url(r'^(?P<date>[0-9\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/$', 'ietf.secr.telechat.views.doc_detail', name='telechat_doc_detail'),
url(r'^(?P<date>[0-9\-]+)/doc/(?P<name>[A-Za-z0-9.-]+)/(?P<nav>next|previous)/$', 'ietf.secr.telechat.views.doc_navigate',
name='telechat_doc_navigate'),
url(r'^(?P<date>[0-9\-]+)/management/$', 'management', name='telechat_management'),
url(r'^(?P<date>[0-9\-]+)/minutes/$', 'minutes', name='telechat_minutes'),
url(r'^(?P<date>[0-9\-]+)/roll-call/$', 'roll_call', name='telechat_roll_call'),
url(r'^new/$', 'new', name='telechat_new'),
)
url(r'^(?P<date>[0-9\-]+)/management/$', 'ietf.secr.telechat.views.management', name='telechat_management'),
url(r'^(?P<date>[0-9\-]+)/minutes/$', 'ietf.secr.telechat.views.minutes', name='telechat_minutes'),
url(r'^(?P<date>[0-9\-]+)/roll-call/$', 'ietf.secr.telechat.views.roll_call', name='telechat_roll_call'),
url(r'^new/$', 'ietf.secr.telechat.views.new', name='telechat_new'),
]

View file

@ -3,8 +3,7 @@ import datetime
from django.contrib import messages
from django.forms.formsets import formset_factory
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.shortcuts import render, get_object_or_404, redirect
from ietf.doc.models import DocEvent, Document, BallotDocEvent, BallotPositionDocEvent, WriteupDocEvent
from ietf.doc.utils import get_document_content, add_state_change_event
@ -132,10 +131,9 @@ def bash(request, date):
agenda = agenda_data(date=date)
return render_to_response('telechat/bash.html', {
return render(request, 'telechat/bash.html', {
'agenda': agenda,
'date': date},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -150,11 +148,10 @@ def doc(request, date):
if doc:
return redirect('telechat_doc_detail', date=date, name=doc.name)
else:
return render_to_response('telechat/doc.html', {
return render(request, 'telechat/doc.html', {
'agenda': agenda,
'date': date,
'document': None},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -283,7 +280,7 @@ def doc_detail(request, date, name):
else:
conflictdoc = None
return render_to_response('telechat/doc.html', {
return render(request, 'telechat/doc.html', {
'date': date,
'document': doc,
'conflictdoc': conflictdoc,
@ -295,7 +292,6 @@ def doc_detail(request, date, name):
'writeup': writeup,
'nav_start': nav_start,
'nav_end': nav_end},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -335,9 +331,8 @@ def main(request):
next_telechat = get_next_telechat_date().strftime('%Y-%m-%d')
form = DateSelectForm(choices=choices,initial={'date':next_telechat})
return render_to_response('telechat/main.html', {
return render(request, 'telechat/main.html', {
'form': form},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -349,11 +344,10 @@ def management(request, date):
agenda = agenda_data(date=date)
issues = TelechatAgendaItem.objects.filter(type=3).order_by('id')
return render_to_response('telechat/management.html', {
return render(request, 'telechat/management.html', {
'agenda': agenda,
'date': date,
'issues': issues},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -375,13 +369,12 @@ def minutes(request, date):
# FIXME: this doesn't show other documents
return render_to_response('telechat/minutes.html', {
return render(request, 'telechat/minutes.html', {
'agenda': agenda,
'date': date,
'last_date': previous,
'pa_docs': pa_docs,
'da_docs': da_docs},
RequestContext(request, {}),
)
@role_required('Secretariat')
@ -403,10 +396,9 @@ def roll_call(request, date):
ads = Person.objects.filter(role__name='ad', role__group__state="active",role__group__type="area")
sorted_ads = sorted(ads, key = lambda a: a.name_parts()[3])
return render_to_response('telechat/roll_call.html', {
return render(request, 'telechat/roll_call.html', {
'agenda': agenda,
'date': date,
'people':sorted_ads},
RequestContext(request, {}),
)

View file

@ -30,7 +30,7 @@
</thead>
<tbody>
{% for author in draft.documentauthor_set.all %}
<tr class="{% cycle row1,row2 %}">
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ author.author.person }}</td>
<td>{{ author.author }}</td>
<td>{{ author.order }}</td>

View file

@ -37,7 +37,7 @@
{% if form.non_field_errors %}
<tr><td colspan="3">{{ form.non_field_errors }}</td></tr>
{% endif %}
<tr class="{% cycle row1,row2 %}">
<tr class="{% cycle 'row1' 'row2' %}">
{% for hidden in form.hidden_fields %}
{{ hidden }}

View file

@ -30,7 +30,7 @@
</thead>
<tbody>
{% for role in group.role_set.all %}
<tr class="{% cycle row1,row2 %}">
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ role.name }}</td>
<td>{{ role.person }}</td>
<td>{{ role.email }}</td>

View file

@ -27,7 +27,7 @@
</thead>
<tbody>
{% for gm in group.groupmilestone_set.all %}
<tr class="{% cycle row1,row2 %}">
<tr class="{% cycle 'row1' 'row2' %}">
<td>{{ gm.desc }}</td>
<td>{{ gm.expected_due_date|date:"Y-m-d" }}</td>
<td>{{ gm.done_date|date:"Y-m-d" }}</td>

Some files were not shown because too many files have changed in this diff Show more