Merged in Django 1.9 upgrade work from ^/personal/henrik/6.41.1-django-1.9
- Legacy-Id: 12764
This commit is contained in:
commit
de3976bec0
|
@ -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)
|
||||
|
||||
|
|
|
@ -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'),
|
||||
|
||||
)
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
]
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -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"),
|
||||
]
|
||||
|
||||
|
|
|
@ -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),
|
||||
)
|
||||
|
||||
]
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -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))
|
||||
))
|
||||
|
|
|
@ -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", "")
|
||||
|
|
|
@ -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))
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
})
|
||||
|
|
|
@ -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 } )
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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))
|
||||
)
|
||||
|
||||
|
|
|
@ -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())
|
||||
]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')),
|
||||
]
|
||||
|
|
|
@ -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')),
|
||||
]
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
]
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
@ -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'),
|
||||
)
|
||||
]
|
||||
|
||||
|
|
|
@ -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} )
|
||||
|
|
|
@ -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"),
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"),
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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 } )
|
||||
|
||||
|
|
|
@ -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' ),
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 } )
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)),
|
||||
]
|
||||
|
|
|
@ -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"),
|
||||
)
|
||||
]
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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),
|
||||
]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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=""):
|
||||
|
|
|
@ -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')),
|
||||
]
|
||||
|
||||
|
|
|
@ -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))
|
||||
} )
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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'),
|
||||
]
|
|
@ -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, {}),
|
||||
)
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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 } )
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
|
|
@ -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):
|
||||
'''
|
||||
|
|
|
@ -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)),
|
||||
)
|
||||
]
|
||||
|
|
|
@ -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,{}),
|
||||
)
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
|
|
@ -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, {}),
|
||||
)
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 }}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue