Python2/3 compatibility: replaced six.ensure_text() with either six.text_type or django's force_text(), depending on the case, and fixed a variable scope issue.
- Legacy-Id: 16461
This commit is contained in:
parent
ef4a41c14b
commit
bdc73e771a
|
@ -43,8 +43,8 @@ class ChangeLogEntry:
|
||||||
title = ""
|
title = ""
|
||||||
|
|
||||||
def parse(logfile):
|
def parse(logfile):
|
||||||
ver_line = "^(\w+) \((\S+)\) (\S+;)? (?:urgency=(\S+))?$"
|
ver_line = r"^(\w+) \((\S+)\) (\S+;)? (?:urgency=(\S+))?$"
|
||||||
sig_line = "^ -- ([^<]+) <([^>]+)> (.*?) *$"
|
sig_line = r"^ -- ([^<]+) <([^>]+)> (.*?) *$"
|
||||||
inf_line = r"^ \*\*(.*)\*\* *"
|
inf_line = r"^ \*\*(.*)\*\* *"
|
||||||
|
|
||||||
entries = []
|
entries = []
|
||||||
|
|
|
@ -154,7 +154,7 @@ class AdminJsonSerializer(Serializer):
|
||||||
if hasattr(field_value, "_meta"):
|
if hasattr(field_value, "_meta"):
|
||||||
self._current[name] = self.expand_related(field_value, name)
|
self._current[name] = self.expand_related(field_value, name)
|
||||||
else:
|
else:
|
||||||
self._current[name] = six.ensure_text(field_value)
|
self._current[name] = six.text_type(field_value)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
pass
|
pass
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|
|
@ -202,7 +202,7 @@ def export_to_csv(request, username=None, acronym=None, group_type=None):
|
||||||
row.append(e.time.strftime("%Y-%m-%d") if e else "")
|
row.append(e.time.strftime("%Y-%m-%d") if e else "")
|
||||||
row.append(strip_tags(doc.friendly_state()))
|
row.append(strip_tags(doc.friendly_state()))
|
||||||
row.append(doc.group.acronym if doc.group else "")
|
row.append(doc.group.acronym if doc.group else "")
|
||||||
row.append(six.ensure_text(doc.ad) if doc.ad else "")
|
row.append(six.text_type(doc.ad) if doc.ad else "")
|
||||||
e = doc.latest_event()
|
e = doc.latest_event()
|
||||||
row.append(e.time.strftime("%Y-%m-%d") if e else "")
|
row.append(e.time.strftime("%Y-%m-%d") if e else "")
|
||||||
writer.writerow([v.encode("utf-8") for v in row])
|
writer.writerow([v.encode("utf-8") for v in row])
|
||||||
|
|
|
@ -49,7 +49,7 @@ class DocumentChangesFeed(Feed):
|
||||||
return item.time
|
return item.time
|
||||||
|
|
||||||
def item_author_name(self, item):
|
def item_author_name(self, item):
|
||||||
return six.ensure_text(item.by)
|
return six.text_type(item.by)
|
||||||
|
|
||||||
def item_link(self, item):
|
def item_link(self, item):
|
||||||
return urlreverse('ietf.doc.views_doc.document_history', kwargs=dict(name=item.doc.canonical_name())) + "#history-%s" % item.pk
|
return urlreverse('ietf.doc.views_doc.document_history', kwargs=dict(name=item.doc.canonical_name())) + "#history-%s" % item.pk
|
||||||
|
|
|
@ -83,7 +83,7 @@ class SearchableDocumentsField(forms.CharField):
|
||||||
"model_name": self.model.__name__.lower()
|
"model_name": self.model.__name__.lower()
|
||||||
})
|
})
|
||||||
|
|
||||||
return ",".join(six.ensure_text(o.pk) for o in value)
|
return ",".join(six.text_type(o.pk) for o in value)
|
||||||
|
|
||||||
def clean(self, value):
|
def clean(self, value):
|
||||||
value = super(SearchableDocumentsField, self).clean(value)
|
value = super(SearchableDocumentsField, self).clean(value)
|
||||||
|
|
|
@ -13,7 +13,7 @@ from django.template.loader import render_to_string
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str, force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ def generate_ballot_writeup(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev
|
e.rev = doc.rev
|
||||||
e.desc = "Ballot writeup was generated"
|
e.desc = "Ballot writeup was generated"
|
||||||
e.text = six.ensure_text(render_to_string("doc/mail/ballot_writeup.txt", {'iana': iana}))
|
e.text = force_text(render_to_string("doc/mail/ballot_writeup.txt", {'iana': iana}))
|
||||||
|
|
||||||
# caller is responsible for saving, if necessary
|
# caller is responsible for saving, if necessary
|
||||||
return e
|
return e
|
||||||
|
@ -140,7 +140,7 @@ def generate_ballot_rfceditornote(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev
|
e.rev = doc.rev
|
||||||
e.desc = "RFC Editor Note for ballot was generated"
|
e.desc = "RFC Editor Note for ballot was generated"
|
||||||
e.text = six.ensure_text(render_to_string("doc/mail/ballot_rfceditornote.txt"))
|
e.text = force_text(render_to_string("doc/mail/ballot_rfceditornote.txt"))
|
||||||
e.save()
|
e.save()
|
||||||
|
|
||||||
return e
|
return e
|
||||||
|
@ -185,7 +185,7 @@ def generate_last_call_announcement(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev
|
e.rev = doc.rev
|
||||||
e.desc = "Last call announcement was generated"
|
e.desc = "Last call announcement was generated"
|
||||||
e.text = six.ensure_text(mail)
|
e.text = force_text(mail)
|
||||||
|
|
||||||
# caller is responsible for saving, if necessary
|
# caller is responsible for saving, if necessary
|
||||||
return e
|
return e
|
||||||
|
@ -205,7 +205,7 @@ def generate_approval_mail(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev
|
e.rev = doc.rev
|
||||||
e.desc = "Ballot approval text was generated"
|
e.desc = "Ballot approval text was generated"
|
||||||
e.text = six.ensure_text(mail)
|
e.text = force_text(mail)
|
||||||
|
|
||||||
# caller is responsible for saving, if necessary
|
# caller is responsible for saving, if necessary
|
||||||
return e
|
return e
|
||||||
|
@ -288,7 +288,7 @@ def generate_publication_request(request, doc):
|
||||||
approving_body = "IRSG"
|
approving_body = "IRSG"
|
||||||
consensus_body = doc.group.acronym.upper()
|
consensus_body = doc.group.acronym.upper()
|
||||||
else:
|
else:
|
||||||
approving_body = six.ensure_text(doc.stream)
|
approving_body = six.text_type(doc.stream)
|
||||||
consensus_body = approving_body
|
consensus_body = approving_body
|
||||||
|
|
||||||
e = doc.latest_event(WriteupDocEvent, type="changed_rfc_editor_note_text")
|
e = doc.latest_event(WriteupDocEvent, type="changed_rfc_editor_note_text")
|
||||||
|
|
|
@ -17,7 +17,7 @@ from django.core.validators import URLValidator, RegexValidator
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible, force_text
|
||||||
from django.utils.html import mark_safe
|
from django.utils.html import mark_safe
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
@ -880,7 +880,7 @@ class DocHistory(DocumentInfo):
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return six.ensure_text(self.doc.name)
|
return force_text(self.doc.name)
|
||||||
|
|
||||||
def canonical_name(self):
|
def canonical_name(self):
|
||||||
if hasattr(self, '_canonical_name'):
|
if hasattr(self, '_canonical_name'):
|
||||||
|
@ -930,7 +930,7 @@ class DocAlias(models.Model):
|
||||||
return self.docs.first()
|
return self.docs.first()
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return u"%s-->%s" % (self.name, ','.join([six.ensure_text(d.name) for d in self.docs.all() if isinstance(d, Document) ]))
|
return u"%s-->%s" % (self.name, ','.join([force_text(d.name) for d in self.docs.all() if isinstance(d, Document) ]))
|
||||||
document_link = admin_link("document")
|
document_link = admin_link("document")
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "document alias"
|
verbose_name = "document alias"
|
||||||
|
|
|
@ -17,6 +17,7 @@ from django.utils.html import escape
|
||||||
from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags
|
from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags
|
||||||
from django.utils.safestring import mark_safe, SafeData
|
from django.utils.safestring import mark_safe, SafeData
|
||||||
from django.utils.html import strip_tags
|
from django.utils.html import strip_tags
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -198,7 +199,7 @@ def rfcnospace(string):
|
||||||
@register.filter
|
@register.filter
|
||||||
def prettystdname(string):
|
def prettystdname(string):
|
||||||
from ietf.doc.utils import prettify_std_name
|
from ietf.doc.utils import prettify_std_name
|
||||||
return prettify_std_name(six.ensure_text(string or ""))
|
return prettify_std_name(force_text(string or ""))
|
||||||
|
|
||||||
@register.filter(name='rfcurl')
|
@register.filter(name='rfcurl')
|
||||||
def rfclink(string):
|
def rfclink(string):
|
||||||
|
@ -341,7 +342,7 @@ def expires_soon(x,request):
|
||||||
|
|
||||||
@register.filter(name='startswith')
|
@register.filter(name='startswith')
|
||||||
def startswith(x, y):
|
def startswith(x, y):
|
||||||
return six.ensure_text(x).startswith(y)
|
return six.text_type(x).startswith(y)
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def has_role(user, role_names):
|
def has_role(user, role_names):
|
||||||
|
|
|
@ -101,10 +101,12 @@ class ReviewTests(TestCase):
|
||||||
|
|
||||||
self.assertEqual(len(outbox),2)
|
self.assertEqual(len(outbox),2)
|
||||||
self.assertTrue('reviewteam Early' in outbox[0]['Subject'])
|
self.assertTrue('reviewteam Early' in outbox[0]['Subject'])
|
||||||
# debug.show("outbox[0]['To']")
|
if not 'reviewsecretary@' in outbox[0]['To']:
|
||||||
|
print(outbox[0].as_string())
|
||||||
self.assertTrue('reviewsecretary@' in outbox[0]['To'])
|
self.assertTrue('reviewsecretary@' in outbox[0]['To'])
|
||||||
self.assertTrue('reviewteam3 Early' in outbox[1]['Subject'])
|
self.assertTrue('reviewteam3 Early' in outbox[1]['Subject'])
|
||||||
# debug.show("outbox[1]['To']")
|
if not 'reviewsecretary3@' in outbox[1]['To']:
|
||||||
|
print(outbox[1].as_string())
|
||||||
self.assertTrue('reviewsecretary3@' in outbox[1]['To'])
|
self.assertTrue('reviewsecretary3@' in outbox[1]['To'])
|
||||||
|
|
||||||
# set the reviewteamsetting for the secretary email alias, then do the post again
|
# set the reviewteamsetting for the secretary email alias, then do the post again
|
||||||
|
|
|
@ -9,12 +9,11 @@ import io
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import six
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import smart_text, force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -152,7 +151,7 @@ def generate_ballot_writeup(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev,
|
e.rev = doc.rev,
|
||||||
e.desc = "Ballot writeup was generated"
|
e.desc = "Ballot writeup was generated"
|
||||||
e.text = six.ensure_text(render_to_string("doc/charter/ballot_writeup.txt"))
|
e.text = force_text(render_to_string("doc/charter/ballot_writeup.txt"))
|
||||||
|
|
||||||
# caller is responsible for saving, if necessary
|
# caller is responsible for saving, if necessary
|
||||||
return e
|
return e
|
||||||
|
|
|
@ -106,7 +106,7 @@ def fill_in_document_table_attributes(docs, have_telechat_date=False):
|
||||||
d.expirable = expirable_draft(d)
|
d.expirable = expirable_draft(d)
|
||||||
|
|
||||||
if d.get_state_slug() != "rfc":
|
if d.get_state_slug() != "rfc":
|
||||||
d.milestones = [ m for (t, s, d, m) in sorted(((m.time, m.state.slug, m.desc, m) for m in d.groupmilestone_set.all() if m.state_id == "active")) ]
|
d.milestones = [ m for (t, s, v, m) in sorted(((m.time, m.state.slug, m.desc, m) for m in d.groupmilestone_set.all() if m.state_id == "active")) ]
|
||||||
d.reviewed_by_teams = sorted(set(r.team.acronym for r in d.reviewrequest_set.filter(state__in=["assigned","accepted","part-completed","completed"]).distinct().select_related('team')))
|
d.reviewed_by_teams = sorted(set(r.team.acronym for r in d.reviewrequest_set.filter(state__in=["assigned","accepted","part-completed","completed"]).distinct().select_related('team')))
|
||||||
|
|
||||||
e = d.latest_event_cache.get('started_iesg_process', None)
|
e = d.latest_event_cache.get('started_iesg_process', None)
|
||||||
|
|
|
@ -8,7 +8,6 @@ import datetime
|
||||||
import io
|
import io
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import six
|
|
||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
from django.http import HttpResponseRedirect, HttpResponseNotFound, HttpResponseForbidden, Http404
|
from django.http import HttpResponseRedirect, HttpResponseNotFound, HttpResponseForbidden, Http404
|
||||||
|
@ -19,6 +18,7 @@ from django.utils.safestring import mark_safe
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -816,7 +816,7 @@ def charter_with_milestones_txt(request, name, rev):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with io.open(os.path.join(settings.CHARTER_PATH, filename), 'r') as f:
|
with io.open(os.path.join(settings.CHARTER_PATH, filename), 'r') as f:
|
||||||
charter_text = six.ensure_text(f.read(), errors='ignore')
|
charter_text = force_text(f.read(), errors='ignore')
|
||||||
except IOError:
|
except IOError:
|
||||||
charter_text = "Error reading charter text %s" % filename
|
charter_text = "Error reading charter text %s" % filename
|
||||||
|
|
||||||
|
|
|
@ -1274,7 +1274,7 @@ def add_sessionpresentation(request,name):
|
||||||
if doc.group:
|
if doc.group:
|
||||||
sessions = sorted(sessions,key=lambda x:0 if x.group==doc.group else 1)
|
sessions = sorted(sessions,key=lambda x:0 if x.group==doc.group else 1)
|
||||||
|
|
||||||
session_choices = [(s.pk, six.ensure_text(s)) for s in sessions]
|
session_choices = [(s.pk, six.text_type(s)) for s in sessions]
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
version_form = VersionForm(request.POST,choices=version_choices)
|
version_form = VersionForm(request.POST,choices=version_choices)
|
||||||
|
|
|
@ -8,7 +8,6 @@ import datetime
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import six
|
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.shortcuts import render, get_object_or_404, redirect
|
from django.shortcuts import render, get_object_or_404, redirect
|
||||||
|
@ -16,6 +15,7 @@ from django.http import Http404, HttpResponseRedirect
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -641,7 +641,7 @@ def generate_last_call_text(request, doc):
|
||||||
e.doc = doc
|
e.doc = doc
|
||||||
e.rev = doc.rev
|
e.rev = doc.rev
|
||||||
e.desc = 'Last call announcement was generated'
|
e.desc = 'Last call announcement was generated'
|
||||||
e.text = six.ensure_text(new_text)
|
e.text = force_text(new_text)
|
||||||
e.save()
|
e.save()
|
||||||
|
|
||||||
return e
|
return e
|
||||||
|
|
|
@ -1268,7 +1268,7 @@ class StatusUpdateTests(TestCase):
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
q=PyQuery(response.content)
|
q=PyQuery(response.content)
|
||||||
self.assertTrue(bleach.linkify(escape(event.desc)) in six.ensure_text(q('pre')))
|
self.assertTrue(bleach.linkify(escape(event.desc)) in six.text_type(q('pre')))
|
||||||
self.assertFalse(q('a#edit_button'))
|
self.assertFalse(q('a#edit_button'))
|
||||||
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
self.client.login(username=chair.person.user.username,password='%s+password'%chair.person.user.username)
|
||||||
response = self.client.get(url)
|
response = self.client.get(url)
|
||||||
|
|
|
@ -264,7 +264,7 @@ class ReviewTests(TestCase):
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
generated_text = q("[name=body]").text()
|
generated_text = q("[name=body]").text()
|
||||||
self.assertTrue(review_req1.doc.name in generated_text)
|
self.assertTrue(review_req1.doc.name in generated_text)
|
||||||
self.assertTrue(six.ensure_text(Person.objects.get(user__username="marschairman")) in generated_text)
|
self.assertTrue(six.text_type(Person.objects.get(user__username="marschairman")) in generated_text)
|
||||||
|
|
||||||
empty_outbox()
|
empty_outbox()
|
||||||
r = self.client.post(url, {
|
r = self.client.post(url, {
|
||||||
|
|
|
@ -1448,7 +1448,7 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
|
||||||
saving = form_action.startswith("save")
|
saving = form_action.startswith("save")
|
||||||
|
|
||||||
# check for conflicts
|
# check for conflicts
|
||||||
review_requests_dict = { six.ensure_text(r.pk): r for r in review_requests }
|
review_requests_dict = { six.text_type(r.pk): r for r in review_requests }
|
||||||
posted_reqs = set(request.POST.getlist("reviewrequest", []))
|
posted_reqs = set(request.POST.getlist("reviewrequest", []))
|
||||||
current_reqs = set(review_requests_dict.keys())
|
current_reqs = set(review_requests_dict.keys())
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,7 @@ def all_id2_txt():
|
||||||
area = d.group.parent.acronym
|
area = d.group.parent.acronym
|
||||||
fields.append(area)
|
fields.append(area)
|
||||||
# 9 responsible AD name
|
# 9 responsible AD name
|
||||||
fields.append(six.ensure_text(d.ad) if d.ad else "")
|
fields.append(six.text_type(d.ad) if d.ad else "")
|
||||||
# 10
|
# 10
|
||||||
fields.append(d.intended_std_level.name if d.intended_std_level else "")
|
fields.append(d.intended_std_level.name if d.intended_std_level else "")
|
||||||
# 11
|
# 11
|
||||||
|
|
|
@ -102,7 +102,7 @@ class IndexTests(TestCase):
|
||||||
self.assertEqual(t[6], draft.latest_event(type="new_revision").time.strftime("%Y-%m-%d"))
|
self.assertEqual(t[6], draft.latest_event(type="new_revision").time.strftime("%Y-%m-%d"))
|
||||||
self.assertEqual(t[7], draft.group.acronym)
|
self.assertEqual(t[7], draft.group.acronym)
|
||||||
self.assertEqual(t[8], draft.group.parent.acronym)
|
self.assertEqual(t[8], draft.group.parent.acronym)
|
||||||
self.assertEqual(t[9], six.ensure_text(draft.ad))
|
self.assertEqual(t[9], six.text_type(draft.ad))
|
||||||
self.assertEqual(t[10], draft.intended_std_level.name)
|
self.assertEqual(t[10], draft.intended_std_level.name)
|
||||||
self.assertEqual(t[11], "")
|
self.assertEqual(t[11], "")
|
||||||
self.assertEqual(t[12], ".pdf,.txt")
|
self.assertEqual(t[12], ".pdf,.txt")
|
||||||
|
|
|
@ -316,9 +316,9 @@ def agenda_documents_txt(request):
|
||||||
row = (
|
row = (
|
||||||
d.computed_telechat_date.isoformat(),
|
d.computed_telechat_date.isoformat(),
|
||||||
d.name,
|
d.name,
|
||||||
six.ensure_text(d.intended_std_level),
|
six.text_type(d.intended_std_level),
|
||||||
"1" if d.stream_id in ("ise", "irtf") else "0",
|
"1" if d.stream_id in ("ise", "irtf") else "0",
|
||||||
six.ensure_text(d.area_acronym()).lower(),
|
six.text_type(d.area_acronym()).lower(),
|
||||||
d.ad.plain_name() if d.ad else "None Assigned",
|
d.ad.plain_name() if d.ad else "None Assigned",
|
||||||
d.rev,
|
d.rev,
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,12 +4,11 @@
|
||||||
|
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
import six
|
|
||||||
|
|
||||||
from django.contrib.syndication.views import Feed
|
from django.contrib.syndication.views import Feed
|
||||||
from django.utils.feedgenerator import Atom1Feed
|
from django.utils.feedgenerator import Atom1Feed
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
from ietf.ipr.models import IprDisclosureBase
|
from ietf.ipr.models import IprDisclosureBase
|
||||||
|
|
||||||
|
@ -28,7 +27,7 @@ class LatestIprDisclosuresFeed(Feed):
|
||||||
return mark_safe(item.title)
|
return mark_safe(item.title)
|
||||||
|
|
||||||
def item_description(self, item):
|
def item_description(self, item):
|
||||||
return six.ensure_text(item.title)
|
return force_text(item.title)
|
||||||
|
|
||||||
def item_pubdate(self, item):
|
def item_pubdate(self, item):
|
||||||
return item.time
|
return item.time
|
||||||
|
|
|
@ -68,7 +68,7 @@ class SearchableIprDisclosuresField(forms.CharField):
|
||||||
# patterns may not have been fully constructed there yet
|
# patterns may not have been fully constructed there yet
|
||||||
self.widget.attrs["data-ajax-url"] = urlreverse('ietf.ipr.views.ajax_search')
|
self.widget.attrs["data-ajax-url"] = urlreverse('ietf.ipr.views.ajax_search')
|
||||||
|
|
||||||
return ",".join(six.ensure_text(e.pk) for e in value)
|
return ",".join(six.text_type(e.pk) for e in value)
|
||||||
|
|
||||||
def clean(self, value):
|
def clean(self, value):
|
||||||
value = super(SearchableIprDisclosuresField, self).clean(value)
|
value = super(SearchableIprDisclosuresField, self).clean(value)
|
||||||
|
|
|
@ -456,7 +456,7 @@ def by_draft_txt(request):
|
||||||
|
|
||||||
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
||||||
for name, iprs in docipr.items():
|
for name, iprs in docipr.items():
|
||||||
lines.append(name + "\t" + "\t".join(six.ensure_text(ipr_id) for ipr_id in sorted(iprs)))
|
lines.append(name + "\t" + "\t".join(six.text_type(ipr_id) for ipr_id in sorted(iprs)))
|
||||||
|
|
||||||
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
||||||
|
|
||||||
|
@ -478,7 +478,7 @@ def by_draft_recursive_txt(request):
|
||||||
|
|
||||||
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
lines = [ "# Machine-readable list of IPR disclosures by draft name" ]
|
||||||
for name, iprs in docipr.items():
|
for name, iprs in docipr.items():
|
||||||
lines.append(name + "\t" + "\t".join(six.ensure_text(ipr_id) for ipr_id in sorted(iprs)))
|
lines.append(name + "\t" + "\t".join(six.text_type(ipr_id) for ipr_id in sorted(iprs)))
|
||||||
|
|
||||||
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
return HttpResponse("\n".join(lines), content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ class SearchableLiaisonStatementsField(forms.CharField):
|
||||||
# patterns may not have been fully constructed there yet
|
# patterns may not have been fully constructed there yet
|
||||||
self.widget.attrs["data-ajax-url"] = urlreverse("ietf.liaisons.views.ajax_select2_search_liaison_statements")
|
self.widget.attrs["data-ajax-url"] = urlreverse("ietf.liaisons.views.ajax_select2_search_liaison_statements")
|
||||||
|
|
||||||
return ",".join(six.ensure_text(o.pk) for o in value)
|
return ",".join(six.text_type(o.pk) for o in value)
|
||||||
|
|
||||||
def clean(self, value):
|
def clean(self, value):
|
||||||
value = super(SearchableLiaisonStatementsField, self).clean(value)
|
value = super(SearchableLiaisonStatementsField, self).clean(value)
|
||||||
|
|
|
@ -452,7 +452,7 @@ class IncomingLiaisonForm(LiaisonModelForm):
|
||||||
self.fields['from_contact'].initial = self.person.role_set.filter(group=queryset[0]).first().email.address
|
self.fields['from_contact'].initial = self.person.role_set.filter(group=queryset[0]).first().email.address
|
||||||
self.fields['from_contact'].widget.attrs['readonly'] = True
|
self.fields['from_contact'].widget.attrs['readonly'] = True
|
||||||
self.fields['from_groups'].queryset = queryset
|
self.fields['from_groups'].queryset = queryset
|
||||||
self.fields['from_groups'].widget.submitter = six.ensure_text(self.person)
|
self.fields['from_groups'].widget.submitter = six.text_type(self.person)
|
||||||
|
|
||||||
# if there's only one possibility make it the default
|
# if there's only one possibility make it the default
|
||||||
if len(queryset) == 1:
|
if len(queryset) == 1:
|
||||||
|
|
|
@ -1727,7 +1727,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("title")))
|
self.assertIn('Upload', six.text_type(q("title")))
|
||||||
self.assertFalse(session.sessionpresentation_set.exists())
|
self.assertFalse(session.sessionpresentation_set.exists())
|
||||||
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test')
|
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test')
|
||||||
test_file.name = "not_really.pdf"
|
test_file.name = "not_really.pdf"
|
||||||
|
@ -1738,7 +1738,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Revise', six.ensure_text(q("title")))
|
self.assertIn('Revise', six.text_type(q("title")))
|
||||||
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some different text for a test')
|
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some different text for a test')
|
||||||
test_file.name = "also_not_really.pdf"
|
test_file.name = "also_not_really.pdf"
|
||||||
r = self.client.post(url,dict(file=test_file))
|
r = self.client.post(url,dict(file=test_file))
|
||||||
|
@ -1762,7 +1762,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("title")))
|
self.assertIn('Upload', six.text_type(q("title")))
|
||||||
self.assertFalse(session.sessionpresentation_set.exists())
|
self.assertFalse(session.sessionpresentation_set.exists())
|
||||||
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test')
|
test_file = StringIO('%PDF-1.4\n%âãÏÓ\nthis is some text for a test')
|
||||||
test_file.name = "not_really.pdf"
|
test_file.name = "not_really.pdf"
|
||||||
|
@ -1780,7 +1780,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("title")))
|
self.assertIn('Upload', six.text_type(q("title")))
|
||||||
|
|
||||||
|
|
||||||
def test_upload_minutes_agenda(self):
|
def test_upload_minutes_agenda(self):
|
||||||
|
@ -1795,7 +1795,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("Title")))
|
self.assertIn('Upload', six.text_type(q("Title")))
|
||||||
self.assertFalse(session.sessionpresentation_set.exists())
|
self.assertFalse(session.sessionpresentation_set.exists())
|
||||||
self.assertFalse(q('form input[type="checkbox"]'))
|
self.assertFalse(q('form input[type="checkbox"]'))
|
||||||
|
|
||||||
|
@ -1849,7 +1849,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Revise', six.ensure_text(q("Title")))
|
self.assertIn('Revise', six.text_type(q("Title")))
|
||||||
test_file = BytesIO(b'this is some different text for a test')
|
test_file = BytesIO(b'this is some different text for a test')
|
||||||
test_file.name = "also_not_really.txt"
|
test_file.name = "also_not_really.txt"
|
||||||
r = self.client.post(url,dict(file=test_file,apply_to_all=True))
|
r = self.client.post(url,dict(file=test_file,apply_to_all=True))
|
||||||
|
@ -1883,7 +1883,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("Title")))
|
self.assertIn('Upload', six.text_type(q("Title")))
|
||||||
self.assertFalse(session.sessionpresentation_set.exists())
|
self.assertFalse(session.sessionpresentation_set.exists())
|
||||||
self.assertFalse(q('form input[type="checkbox"]'))
|
self.assertFalse(q('form input[type="checkbox"]'))
|
||||||
|
|
||||||
|
@ -1904,7 +1904,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("title")))
|
self.assertIn('Upload', six.text_type(q("title")))
|
||||||
self.assertFalse(session.sessionpresentation_set.filter(document__type_id=doctype))
|
self.assertFalse(session.sessionpresentation_set.filter(document__type_id=doctype))
|
||||||
test_file = BytesIO(b'this is some text for a test')
|
test_file = BytesIO(b'this is some text for a test')
|
||||||
test_file.name = "not_really.txt"
|
test_file.name = "not_really.txt"
|
||||||
|
@ -1927,7 +1927,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Upload', six.ensure_text(q("title")))
|
self.assertIn('Upload', six.text_type(q("title")))
|
||||||
self.assertFalse(session1.sessionpresentation_set.filter(document__type_id='slides'))
|
self.assertFalse(session1.sessionpresentation_set.filter(document__type_id='slides'))
|
||||||
test_file = BytesIO(b'this is not really a slide')
|
test_file = BytesIO(b'this is not really a slide')
|
||||||
test_file.name = 'not_really.txt'
|
test_file.name = 'not_really.txt'
|
||||||
|
@ -1955,7 +1955,7 @@ class MaterialsTests(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertTrue(r.status_code, 200)
|
self.assertTrue(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertIn('Revise', six.ensure_text(q("title")))
|
self.assertIn('Revise', six.text_type(q("title")))
|
||||||
test_file = BytesIO(b'new content for the second slide deck')
|
test_file = BytesIO(b'new content for the second slide deck')
|
||||||
test_file.name = 'doesnotmatter.txt'
|
test_file.name = 'doesnotmatter.txt'
|
||||||
r = self.client.post(url,dict(file=test_file,title='rename the presentation',apply_to_all=False))
|
r = self.client.post(url,dict(file=test_file,title='rename the presentation',apply_to_all=False))
|
||||||
|
|
|
@ -40,12 +40,12 @@ class PositionNomineeField(forms.ChoiceField):
|
||||||
results = []
|
results = []
|
||||||
for position in positions:
|
for position in positions:
|
||||||
accepted_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position,state='accepted').exclude(nominee__duplicated__isnull=False)]
|
accepted_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position,state='accepted').exclude(nominee__duplicated__isnull=False)]
|
||||||
nominees = [('%s_%s' % (position.id, i.id), six.ensure_text(i)) for i in accepted_nominees]
|
nominees = [('%s_%s' % (position.id, i.id), six.text_type(i)) for i in accepted_nominees]
|
||||||
if nominees:
|
if nominees:
|
||||||
results.append((position.name+" (Accepted)", nominees))
|
results.append((position.name+" (Accepted)", nominees))
|
||||||
for position in positions:
|
for position in positions:
|
||||||
other_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position).exclude(state='accepted').exclude(nominee__duplicated__isnull=False)]
|
other_nominees = [np.nominee for np in NomineePosition.objects.filter(position=position).exclude(state='accepted').exclude(nominee__duplicated__isnull=False)]
|
||||||
nominees = [('%s_%s' % (position.id, i.id), six.ensure_text(i)) for i in other_nominees]
|
nominees = [('%s_%s' % (position.id, i.id), six.text_type(i)) for i in other_nominees]
|
||||||
if nominees:
|
if nominees:
|
||||||
results.append((position.name+" (Declined or Pending)", nominees))
|
results.append((position.name+" (Declined or Pending)", nominees))
|
||||||
kwargs['choices'] = results
|
kwargs['choices'] = results
|
||||||
|
|
|
@ -7,7 +7,6 @@ from __future__ import absolute_import, print_function, unicode_literals
|
||||||
import datetime
|
import datetime
|
||||||
import io
|
import io
|
||||||
import random
|
import random
|
||||||
import six
|
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from pyquery import PyQuery
|
from pyquery import PyQuery
|
||||||
|
@ -16,9 +15,10 @@ from six.moves.urllib.parse import urlparse
|
||||||
from django.db import IntegrityError
|
from django.db import IntegrityError
|
||||||
from django.db.models import Max
|
from django.db.models import Max
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse
|
|
||||||
from django.core.files import File
|
from django.core.files import File
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -526,7 +526,7 @@ class NomcomViewsTest(TestCase):
|
||||||
self.assertEqual('Nomination receipt', outbox[-1]['Subject'])
|
self.assertEqual('Nomination receipt', outbox[-1]['Subject'])
|
||||||
self.assertEqual(self.email_from, outbox[-1]['From'])
|
self.assertEqual(self.email_from, outbox[-1]['From'])
|
||||||
self.assertIn('plain', outbox[-1]['To'])
|
self.assertIn('plain', outbox[-1]['To'])
|
||||||
self.assertIn('Comments with accents äöå', six.ensure_text(outbox[-1].get_payload(decode=True),"utf-8","replace"))
|
self.assertIn('Comments with accents äöå', force_text(outbox[-1].get_payload(decode=True),"utf-8","replace"))
|
||||||
|
|
||||||
# Nominate the same person for the same position again without asking for confirmation
|
# Nominate the same person for the same position again without asking for confirmation
|
||||||
|
|
||||||
|
@ -567,7 +567,7 @@ class NomcomViewsTest(TestCase):
|
||||||
self.assertEqual('Nomination receipt', outbox[-1]['Subject'])
|
self.assertEqual('Nomination receipt', outbox[-1]['Subject'])
|
||||||
self.assertEqual(self.email_from, outbox[-1]['From'])
|
self.assertEqual(self.email_from, outbox[-1]['From'])
|
||||||
self.assertIn('plain', outbox[-1]['To'])
|
self.assertIn('plain', outbox[-1]['To'])
|
||||||
self.assertIn('Comments with accents äöå', six.ensure_text(outbox[-1].get_payload(decode=True),"utf-8","replace"))
|
self.assertIn('Comments with accents äöå', force_text(outbox[-1].get_payload(decode=True),"utf-8","replace"))
|
||||||
|
|
||||||
# Nominate the same person for the same position again without asking for confirmation
|
# Nominate the same person for the same position again without asking for confirmation
|
||||||
|
|
||||||
|
@ -812,7 +812,7 @@ class NomcomViewsTest(TestCase):
|
||||||
self.assertNotIn('$', email_body)
|
self.assertNotIn('$', email_body)
|
||||||
self.assertEqual(self.email_from, outbox[-2]['From'])
|
self.assertEqual(self.email_from, outbox[-2]['From'])
|
||||||
self.assertIn('plain', outbox[2]['To'])
|
self.assertIn('plain', outbox[2]['To'])
|
||||||
self.assertIn('Comments with accents äöå', six.ensure_text(outbox[2].get_payload(decode=True),"utf-8","replace"))
|
self.assertIn('Comments with accents äöå', force_text(outbox[2].get_payload(decode=True),"utf-8","replace"))
|
||||||
|
|
||||||
empty_outbox()
|
empty_outbox()
|
||||||
self.feedback_view(public=True)
|
self.feedback_view(public=True)
|
||||||
|
|
|
@ -22,7 +22,7 @@ from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str, force_text
|
||||||
|
|
||||||
from ietf.dbtemplate.models import DBTemplate
|
from ietf.dbtemplate.models import DBTemplate
|
||||||
from ietf.person.models import Email, Person
|
from ietf.person.models import Email, Person
|
||||||
|
@ -433,7 +433,7 @@ def get_body(message):
|
||||||
body = []
|
body = []
|
||||||
for part in text_parts:
|
for part in text_parts:
|
||||||
charset = get_charset(part, get_charset(message))
|
charset = get_charset(part, get_charset(message))
|
||||||
body.append(six.ensure_text(part.get_payload(decode=True),
|
body.append(force_text(part.get_payload(decode=True),
|
||||||
charset,
|
charset,
|
||||||
"replace"))
|
"replace"))
|
||||||
|
|
||||||
|
@ -441,7 +441,7 @@ def get_body(message):
|
||||||
|
|
||||||
else: # if it is not multipart, the payload will be a string
|
else: # if it is not multipart, the payload will be a string
|
||||||
# representing the message body
|
# representing the message body
|
||||||
body = six.ensure_text(message.get_payload(decode=True),
|
body = force_text(message.get_payload(decode=True),
|
||||||
get_charset(message),
|
get_charset(message),
|
||||||
"replace")
|
"replace")
|
||||||
return body.strip()
|
return body.strip()
|
||||||
|
|
|
@ -10,13 +10,13 @@ import faker.config
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import shutil
|
import shutil
|
||||||
import six
|
|
||||||
|
|
||||||
from unidecode import unidecode
|
from unidecode import unidecode
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ class PersonFactory(factory.DjangoModelFactory):
|
||||||
|
|
||||||
user = factory.SubFactory(UserFactory)
|
user = factory.SubFactory(UserFactory)
|
||||||
name = factory.LazyAttribute(lambda p: normalize_name('%s %s'%(p.user.first_name, p.user.last_name)))
|
name = factory.LazyAttribute(lambda p: normalize_name('%s %s'%(p.user.first_name, p.user.last_name)))
|
||||||
ascii = factory.LazyAttribute(lambda p: six.ensure_text(unidecode_name(p.name)))
|
ascii = factory.LazyAttribute(lambda p: force_text(unidecode_name(p.name)))
|
||||||
|
|
||||||
class Params:
|
class Params:
|
||||||
with_bio = factory.Trait(biography = "\n\n".join(fake.paragraphs()))
|
with_bio = factory.Trait(biography = "\n\n".join(fake.paragraphs()))
|
||||||
|
|
|
@ -168,7 +168,7 @@ class PersonEmailChoiceField(forms.ModelChoiceField):
|
||||||
|
|
||||||
def label_from_instance(self, email):
|
def label_from_instance(self, email):
|
||||||
if self.label_with == "person":
|
if self.label_with == "person":
|
||||||
return six.ensure_text(email.person)
|
return six.text_type(email.person)
|
||||||
elif self.label_with == "email":
|
elif self.label_with == "email":
|
||||||
return email.address
|
return email.address
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -86,7 +86,7 @@ class Person(models.Model):
|
||||||
if not hasattr(self, '_cached_plain_ascii'):
|
if not hasattr(self, '_cached_plain_ascii'):
|
||||||
if self.ascii:
|
if self.ascii:
|
||||||
if isinstance(self.ascii, six.binary_type):
|
if isinstance(self.ascii, six.binary_type):
|
||||||
uname = six.ensure_text(self.ascii)
|
uname = six.text_type(self.ascii)
|
||||||
ascii = unidecode_name(uname)
|
ascii = unidecode_name(uname)
|
||||||
else:
|
else:
|
||||||
ascii = unidecode_name(self.ascii)
|
ascii = unidecode_name(self.ascii)
|
||||||
|
|
|
@ -93,7 +93,7 @@ class PersonTests(TestCase):
|
||||||
empty_outbox()
|
empty_outbox()
|
||||||
p = PersonFactory(name="Föö Bär")
|
p = PersonFactory(name="Föö Bär")
|
||||||
PersonFactory(name=p.name)
|
PersonFactory(name=p.name)
|
||||||
self.assertTrue("possible duplicate" in six.ensure_text(outbox[0]["Subject"]).lower())
|
self.assertTrue("possible duplicate" in six.text_type(outbox[0]["Subject"]).lower())
|
||||||
|
|
||||||
def test_merge(self):
|
def test_merge(self):
|
||||||
url = urlreverse("ietf.person.views.merge")
|
url = urlreverse("ietf.person.views.merge")
|
||||||
|
|
|
@ -964,7 +964,7 @@ def make_assignment_choices(email_queryset, review_req):
|
||||||
if stats:
|
if stats:
|
||||||
explanations.append(", ".join(stats))
|
explanations.append(", ".join(stats))
|
||||||
|
|
||||||
label = six.ensure_text(e.person)
|
label = six.text_type(e.person)
|
||||||
if explanations:
|
if explanations:
|
||||||
label = "{}: {}".format(label, "; ".join(explanations))
|
label = "{}: {}".format(label, "; ".join(explanations))
|
||||||
|
|
||||||
|
|
|
@ -184,14 +184,14 @@ class SubmitRequestCase(TestCase):
|
||||||
r = self.client.post(url,post_data)
|
r = self.client.post(url,post_data)
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
q = PyQuery(r.content)
|
q = PyQuery(r.content)
|
||||||
self.assertTrue('Confirm' in six.ensure_text(q("title")))
|
self.assertTrue('Confirm' in six.text_type(q("title")))
|
||||||
# confirm
|
# confirm
|
||||||
post_data['submit'] = 'Submit'
|
post_data['submit'] = 'Submit'
|
||||||
r = self.client.post(confirm_url,post_data)
|
r = self.client.post(confirm_url,post_data)
|
||||||
self.assertRedirects(r, reverse('ietf.secr.sreq.views.main'))
|
self.assertRedirects(r, reverse('ietf.secr.sreq.views.main'))
|
||||||
self.assertEqual(len(outbox),len_before+1)
|
self.assertEqual(len(outbox),len_before+1)
|
||||||
notification = outbox[-1]
|
notification = outbox[-1]
|
||||||
notification_payload = six.ensure_text(notification.get_payload(decode=True),"utf-8","replace")
|
notification_payload = six.text_type(notification.get_payload(decode=True),"utf-8","replace")
|
||||||
session = Session.objects.get(meeting=meeting,group=group)
|
session = Session.objects.get(meeting=meeting,group=group)
|
||||||
self.assertEqual(session.resources.count(),1)
|
self.assertEqual(session.resources.count(),1)
|
||||||
self.assertEqual(session.people_constraints.count(),1)
|
self.assertEqual(session.people_constraints.count(),1)
|
||||||
|
|
|
@ -19,7 +19,7 @@ from pyquery import PyQuery
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
from django.utils.encoding import force_str
|
from django.utils.encoding import force_str, force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ from ietf.person.models import Person
|
||||||
from ietf.person.factories import UserFactory, PersonFactory
|
from ietf.person.factories import UserFactory, PersonFactory
|
||||||
from ietf.submit.models import Submission, Preapproval
|
from ietf.submit.models import Submission, Preapproval
|
||||||
from ietf.submit.mail import add_submission_email, process_response_email
|
from ietf.submit.mail import add_submission_email, process_response_email
|
||||||
from ietf.utils.mail import outbox, empty_outbox
|
from ietf.utils.mail import outbox, empty_outbox, get_payload
|
||||||
from ietf.utils.models import VersionInfo
|
from ietf.utils.models import VersionInfo
|
||||||
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
|
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
|
||||||
from ietf.utils.draft import Draft
|
from ietf.utils.draft import Draft
|
||||||
|
@ -296,16 +296,16 @@ class SubmitTests(TestCase):
|
||||||
self.assertTrue(draft.relations_that_doc("possibly-replaces").first().target, sug_replaced_alias)
|
self.assertTrue(draft.relations_that_doc("possibly-replaces").first().target, sug_replaced_alias)
|
||||||
self.assertEqual(len(outbox), mailbox_before + 5)
|
self.assertEqual(len(outbox), mailbox_before + 5)
|
||||||
self.assertIn(("I-D Action: %s" % name), outbox[-4]["Subject"])
|
self.assertIn(("I-D Action: %s" % name), outbox[-4]["Subject"])
|
||||||
self.assertIn(author.ascii, six.ensure_text(outbox[-4]))
|
self.assertIn(author.ascii, get_payload(outbox[-4]))
|
||||||
self.assertIn(("I-D Action: %s" % name), outbox[-3]["Subject"])
|
self.assertIn(("I-D Action: %s" % name), outbox[-3]["Subject"])
|
||||||
self.assertIn(author.ascii, six.ensure_text(outbox[-3]))
|
self.assertIn(author.ascii, get_payload(outbox[-3]))
|
||||||
self.assertIn("New Version Notification",outbox[-2]["Subject"])
|
self.assertIn("New Version Notification",outbox[-2]["Subject"])
|
||||||
self.assertIn(name, six.ensure_text(outbox[-2]))
|
self.assertIn(name, get_payload(outbox[-2]))
|
||||||
self.assertIn("mars", six.ensure_text(outbox[-2]))
|
self.assertIn("mars", get_payload(outbox[-2]))
|
||||||
# Check "Review of suggested possible replacements for..." mail
|
# Check "Review of suggested possible replacements for..." mail
|
||||||
self.assertIn("review", outbox[-1]["Subject"].lower())
|
self.assertIn("review", outbox[-1]["Subject"].lower())
|
||||||
self.assertIn(name, six.ensure_text(outbox[-1]))
|
self.assertIn(name, get_payload(outbox[-1]))
|
||||||
self.assertIn(sug_replaced_alias.name, six.ensure_text(outbox[-1]))
|
self.assertIn(sug_replaced_alias.name, get_payload(outbox[-1]))
|
||||||
self.assertIn("ames-chairs@", outbox[-1]["To"].lower())
|
self.assertIn("ames-chairs@", outbox[-1]["To"].lower())
|
||||||
self.assertIn("mars-chairs@", outbox[-1]["To"].lower())
|
self.assertIn("mars-chairs@", outbox[-1]["To"].lower())
|
||||||
|
|
||||||
|
@ -413,7 +413,7 @@ class SubmitTests(TestCase):
|
||||||
self.assertTrue("unknown-email-" not in confirm_email["To"])
|
self.assertTrue("unknown-email-" not in confirm_email["To"])
|
||||||
if change_authors:
|
if change_authors:
|
||||||
# Since authors changed, ensure chairs are copied (and that the message says why)
|
# Since authors changed, ensure chairs are copied (and that the message says why)
|
||||||
self.assertTrue("chairs have been copied" in six.ensure_text(confirm_email))
|
self.assertTrue("chairs have been copied" in six.text_type(confirm_email))
|
||||||
if group_type in ['wg','rg','ag']:
|
if group_type in ['wg','rg','ag']:
|
||||||
self.assertTrue("mars-chairs@" in confirm_email["To"].lower())
|
self.assertTrue("mars-chairs@" in confirm_email["To"].lower())
|
||||||
elif group_type == 'area':
|
elif group_type == 'area':
|
||||||
|
@ -423,7 +423,7 @@ class SubmitTests(TestCase):
|
||||||
if stream_type=='ise':
|
if stream_type=='ise':
|
||||||
self.assertTrue("rfc-ise@" in confirm_email["To"].lower())
|
self.assertTrue("rfc-ise@" in confirm_email["To"].lower())
|
||||||
else:
|
else:
|
||||||
self.assertNotIn("chairs have been copied", six.ensure_text(confirm_email))
|
self.assertNotIn("chairs have been copied", six.text_type(confirm_email))
|
||||||
self.assertNotIn("mars-chairs@", confirm_email["To"].lower())
|
self.assertNotIn("mars-chairs@", confirm_email["To"].lower())
|
||||||
|
|
||||||
confirmation_url = self.extract_confirmation_url(confirm_email)
|
confirmation_url = self.extract_confirmation_url(confirm_email)
|
||||||
|
@ -492,17 +492,17 @@ class SubmitTests(TestCase):
|
||||||
self.assertEqual(len(outbox), mailbox_before + 3)
|
self.assertEqual(len(outbox), mailbox_before + 3)
|
||||||
self.assertTrue(("I-D Action: %s" % name) in outbox[-3]["Subject"])
|
self.assertTrue(("I-D Action: %s" % name) in outbox[-3]["Subject"])
|
||||||
self.assertTrue(("I-D Action: %s" % name) in draft.message_set.order_by("-time")[0].subject)
|
self.assertTrue(("I-D Action: %s" % name) in draft.message_set.order_by("-time")[0].subject)
|
||||||
self.assertTrue(author.ascii in six.ensure_text(outbox[-3]))
|
self.assertTrue(author.ascii in get_payload(outbox[-3]))
|
||||||
self.assertTrue("i-d-announce@" in outbox[-3]['To'])
|
self.assertTrue("i-d-announce@" in outbox[-3]['To'])
|
||||||
self.assertTrue("New Version Notification" in outbox[-2]["Subject"])
|
self.assertTrue("New Version Notification" in outbox[-2]["Subject"])
|
||||||
self.assertTrue(name in six.ensure_text(outbox[-2]))
|
self.assertTrue(name in get_payload(outbox[-2]))
|
||||||
interesting_address = {'ietf':'mars', 'irtf':'irtf-chair', 'iab':'iab-chair', 'ise':'rfc-ise'}[draft.stream_id]
|
interesting_address = {'ietf':'mars', 'irtf':'irtf-chair', 'iab':'iab-chair', 'ise':'rfc-ise'}[draft.stream_id]
|
||||||
self.assertTrue(interesting_address in six.ensure_text(outbox[-2]))
|
self.assertTrue(interesting_address in force_text(outbox[-2].as_string()))
|
||||||
if draft.stream_id == 'ietf':
|
if draft.stream_id == 'ietf':
|
||||||
self.assertTrue(draft.ad.role_email("ad").address in six.ensure_text(outbox[-2]))
|
self.assertTrue(draft.ad.role_email("ad").address in force_text(outbox[-2].as_string()))
|
||||||
self.assertTrue(ballot_position.ad.role_email("ad").address in six.ensure_text(outbox[-2]))
|
self.assertTrue(ballot_position.ad.role_email("ad").address in force_text(outbox[-2].as_string()))
|
||||||
self.assertTrue("New Version Notification" in outbox[-1]["Subject"])
|
self.assertTrue("New Version Notification" in outbox[-1]["Subject"])
|
||||||
self.assertTrue(name in six.ensure_text(outbox[-1]))
|
self.assertTrue(name in get_payload(outbox[-1]))
|
||||||
r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts'))
|
r = self.client.get(urlreverse('ietf.doc.views_search.recent_drafts'))
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
self.assertContains(r, draft.name)
|
self.assertContains(r, draft.name)
|
||||||
|
@ -562,7 +562,7 @@ class SubmitTests(TestCase):
|
||||||
# both submitter and author get email
|
# both submitter and author get email
|
||||||
self.assertTrue(author.email().address.lower() in confirm_email["To"])
|
self.assertTrue(author.email().address.lower() in confirm_email["To"])
|
||||||
self.assertTrue("submitter@example.com" in confirm_email["To"])
|
self.assertTrue("submitter@example.com" in confirm_email["To"])
|
||||||
self.assertFalse("chairs have been copied" in six.ensure_text(confirm_email))
|
self.assertFalse("chairs have been copied" in six.text_type(confirm_email))
|
||||||
|
|
||||||
confirmation_url = self.extract_confirmation_url(outbox[-1])
|
confirmation_url = self.extract_confirmation_url(outbox[-1])
|
||||||
|
|
||||||
|
|
|
@ -552,6 +552,6 @@ def post_approved_draft(url, name):
|
||||||
# catch everything so we don't leak exceptions, convert them
|
# catch everything so we don't leak exceptions, convert them
|
||||||
# into string instead
|
# into string instead
|
||||||
log("Exception on RFC-Editor notification for draft '%s': '%s'" % (name, e))
|
log("Exception on RFC-Editor notification for draft '%s': '%s'" % (name, e))
|
||||||
error = six.ensure_text(e)
|
error = six.text_type(e)
|
||||||
|
|
||||||
return text, error
|
return text, error
|
||||||
|
|
|
@ -7,6 +7,8 @@ from __future__ import absolute_import, print_function, unicode_literals
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
from ietf.utils.models import VersionInfo
|
from ietf.utils.models import VersionInfo
|
||||||
|
|
||||||
def name(obj):
|
def name(obj):
|
||||||
|
@ -16,10 +18,10 @@ def name(obj):
|
||||||
if callable(obj.name):
|
if callable(obj.name):
|
||||||
name = obj.name()
|
name = obj.name()
|
||||||
else:
|
else:
|
||||||
name = six.ensure_text(obj.name)
|
name = force_text(obj.name)
|
||||||
if name:
|
if name:
|
||||||
return name
|
return name
|
||||||
return six.ensure_text(obj)
|
return six.text_type(obj)
|
||||||
|
|
||||||
def admin_link(field, label=None, ordering="", display=name, suffix=""):
|
def admin_link(field, label=None, ordering="", display=name, suffix=""):
|
||||||
if not label:
|
if not label:
|
||||||
|
|
|
@ -174,7 +174,7 @@ def mail_context(request):
|
||||||
return RequestContext(request)
|
return RequestContext(request)
|
||||||
else:
|
else:
|
||||||
return Context()
|
return Context()
|
||||||
|
|
||||||
def send_mail(request, to, frm, subject, template, context, *args, **kwargs):
|
def send_mail(request, to, frm, subject, template, context, *args, **kwargs):
|
||||||
'''
|
'''
|
||||||
Send an email to the destination [list], with the given return
|
Send an email to the destination [list], with the given return
|
||||||
|
@ -321,7 +321,7 @@ def send_mail_mime(request, to, frm, subject, msg, cc=None, extra=None, toUser=F
|
||||||
"""Send MIME message with content already filled in."""
|
"""Send MIME message with content already filled in."""
|
||||||
|
|
||||||
condition_message(to, frm, subject, msg, cc, extra)
|
condition_message(to, frm, subject, msg, cc, extra)
|
||||||
|
|
||||||
# start debug server with python -m smtpd -n -c DebuggingServer localhost:2025
|
# start debug server with python -m smtpd -n -c DebuggingServer localhost:2025
|
||||||
# then put USING_DEBUG_EMAIL_SERVER=True and EMAIL_HOST='localhost'
|
# then put USING_DEBUG_EMAIL_SERVER=True and EMAIL_HOST='localhost'
|
||||||
# and EMAIL_PORT=2025 in settings_local.py
|
# and EMAIL_PORT=2025 in settings_local.py
|
||||||
|
|
|
@ -26,7 +26,7 @@ def pipe(cmd, str=None):
|
||||||
if str:
|
if str:
|
||||||
out += str
|
out += str
|
||||||
code = pipe.poll()
|
code = pipe.poll()
|
||||||
if code > -1:
|
if code != None:
|
||||||
err = pipe.stderr.read()
|
err = pipe.stderr.read()
|
||||||
break
|
break
|
||||||
if len(out) >= MAX:
|
if len(out) >= MAX:
|
||||||
|
|
|
@ -29,6 +29,7 @@ from django.template.defaulttags import URLNode
|
||||||
from django.template.loader import get_template
|
from django.template.loader import get_template
|
||||||
from django.templatetags.static import StaticNode
|
from django.templatetags.static import StaticNode
|
||||||
from django.urls import reverse as urlreverse
|
from django.urls import reverse as urlreverse
|
||||||
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
import debug # pyflakes:ignore
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
@ -160,12 +161,12 @@ def get_callbacks(urllist):
|
||||||
callbacks.update(get_callbacks(entry.url_patterns))
|
callbacks.update(get_callbacks(entry.url_patterns))
|
||||||
else:
|
else:
|
||||||
if hasattr(entry, '_callback_str'):
|
if hasattr(entry, '_callback_str'):
|
||||||
callbacks.add(six.ensure_text(entry._callback_str))
|
callbacks.add(force_text(entry._callback_str))
|
||||||
if (hasattr(entry, 'callback') and entry.callback
|
if (hasattr(entry, 'callback') and entry.callback
|
||||||
and type(entry.callback) in [types.FunctionType, types.MethodType ]):
|
and type(entry.callback) in [types.FunctionType, types.MethodType ]):
|
||||||
callbacks.add("%s.%s" % (entry.callback.__module__, entry.callback.__name__))
|
callbacks.add("%s.%s" % (entry.callback.__module__, entry.callback.__name__))
|
||||||
if hasattr(entry, 'name') and entry.name:
|
if hasattr(entry, 'name') and entry.name:
|
||||||
callbacks.add(six.ensure_text(entry.name))
|
callbacks.add(force_text(entry.name))
|
||||||
# There are some entries we don't handle here, mostly clases
|
# There are some entries we don't handle here, mostly clases
|
||||||
# (such as Feed subclasses)
|
# (such as Feed subclasses)
|
||||||
|
|
||||||
|
@ -278,7 +279,7 @@ class TemplateChecksTestCase(TestCase):
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
self.assertTemplateUsed(r, '500.html')
|
self.assertTemplateUsed(r, '500.html')
|
||||||
|
|
||||||
@skipIf(six.PY3, "Trac not available for Python3 as of 14 Jul 2019")
|
@skipIf(True, "Trac not available for Python3 as of 14 Jul 2019")
|
||||||
@skipIf(skip_wiki_glue_testing, skip_message)
|
@skipIf(skip_wiki_glue_testing, skip_message)
|
||||||
class TestWikiGlueManagementCommand(TestCase):
|
class TestWikiGlueManagementCommand(TestCase):
|
||||||
|
|
||||||
|
@ -301,14 +302,18 @@ class TestWikiGlueManagementCommand(TestCase):
|
||||||
set_coverage_checking(True)
|
set_coverage_checking(True)
|
||||||
|
|
||||||
def test_wiki_create_output(self):
|
def test_wiki_create_output(self):
|
||||||
for type in ['wg','rg','ag','area']:
|
for group_type in ['wg','rg','ag','area']:
|
||||||
GroupFactory(type_id=type)
|
GroupFactory(type_id=group_type)
|
||||||
groups = Group.objects.filter(
|
groups = Group.objects.filter(
|
||||||
type__slug__in=['wg','rg','ag','area'],
|
type__slug__in=['wg','rg','ag','area'],
|
||||||
state__slug='active'
|
state__slug='active'
|
||||||
).order_by('acronym')
|
).order_by('acronym')
|
||||||
out = six.StringIO()
|
out = six.StringIO()
|
||||||
err = six.StringIO()
|
err = six.StringIO()
|
||||||
|
debug.type('self.wiki_dir_pattern')
|
||||||
|
debug.show('self.wiki_dir_pattern')
|
||||||
|
debug.type('self.svn_dir_pattern')
|
||||||
|
debug.show('self.svn_dir_pattern')
|
||||||
call_command('create_group_wikis', stdout=out, stderr=err, verbosity=2,
|
call_command('create_group_wikis', stdout=out, stderr=err, verbosity=2,
|
||||||
wiki_dir_pattern=self.wiki_dir_pattern,
|
wiki_dir_pattern=self.wiki_dir_pattern,
|
||||||
svn_dir_pattern=self.svn_dir_pattern,
|
svn_dir_pattern=self.svn_dir_pattern,
|
||||||
|
@ -419,13 +424,13 @@ class DraftTests(TestCase):
|
||||||
self.assertEqual(self.draft.get_status(),'Informational')
|
self.assertEqual(self.draft.get_status(),'Informational')
|
||||||
|
|
||||||
def test_get_authors(self):
|
def test_get_authors(self):
|
||||||
self.assertTrue(all(['@' in author for author in self.draft.get_authors()]))
|
self.assertTrue(all([u'@' in author for author in self.draft.get_authors()]))
|
||||||
|
|
||||||
def test_get_authors_with_firm(self):
|
def test_get_authors_with_firm(self):
|
||||||
self.assertTrue(all(['@' in author for author in self.draft.get_authors_with_firm()]))
|
self.assertTrue(all([u'@' in author for author in self.draft.get_authors_with_firm()]))
|
||||||
|
|
||||||
def test_old_get_refs(self):
|
def test_old_get_refs(self):
|
||||||
self.assertEqual(self.draft.old_get_refs()[1][0],'rfc2119')
|
self.assertEqual(self.draft.old_get_refs()[1][0],u'rfc2119')
|
||||||
|
|
||||||
def test_get_meta(self):
|
def test_get_meta(self):
|
||||||
tempdir = mkdtemp()
|
tempdir = mkdtemp()
|
||||||
|
|
|
@ -57,7 +57,7 @@ six>=1.9.0
|
||||||
sqlparse>=0.2.2
|
sqlparse>=0.2.2
|
||||||
tblib>=1.3.0
|
tblib>=1.3.0
|
||||||
tqdm>=3.7.0
|
tqdm>=3.7.0
|
||||||
#Trac>=1.2.3
|
Trac>=1.2.3
|
||||||
Unidecode>=0.4.18
|
Unidecode>=0.4.18
|
||||||
#wsgiref>=0.1.2
|
#wsgiref>=0.1.2
|
||||||
xml2rfc>=2.9.3,!=2.6.0
|
xml2rfc>=2.9.3,!=2.6.0
|
||||||
|
|
Loading…
Reference in a new issue