Undid unintentional bulk commit

- Legacy-Id: 16401
This commit is contained in:
Henrik Levkowetz 2019-07-04 21:04:46 +00:00
parent fc09a59950
commit f480799af9
29 changed files with 72 additions and 79 deletions

View file

@ -1,5 +1,6 @@
# Copyright The IETF Trust 2015-2019, All Rights Reserved # Copyright The IETF Trust 2015-2019, All Rights Reserved
import json
import os import os
import sys import sys

View file

@ -19,7 +19,7 @@ from ietf.name.models import BallotPositionName
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate
from ietf.person.models import Person, PersonalApiKey from ietf.person.models import Person, PersonalApiKey
from ietf.person.factories import PersonFactory from ietf.person.factories import PersonFactory
from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.test_utils import TestCase, unicontent, login_testing_unauthorized
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.text import unwrap from ietf.utils.text import unwrap

View file

@ -20,7 +20,7 @@ from ietf.group.factories import RoleFactory, GroupFactory
from ietf.group.models import Group, GroupMilestone from ietf.group.models import Group, GroupMilestone
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate
from ietf.person.models import Person from ietf.person.models import Person
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_utils import login_testing_unauthorized from ietf.utils.test_utils import login_testing_unauthorized

View file

@ -25,7 +25,7 @@ from ietf.person.factories import PersonFactory
from ietf.person.models import Person, Email from ietf.person.models import Person, Email
from ietf.meeting.models import Meeting, MeetingTypeName from ietf.meeting.models import Meeting, MeetingTypeName
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate
from ietf.utils.test_utils import login_testing_unauthorized from ietf.utils.test_utils import login_testing_unauthorized, unicontent
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase

View file

@ -19,7 +19,7 @@ from ietf.meeting.factories import MeetingFactory
from ietf.meeting.models import Meeting, Session, SessionPresentation from ietf.meeting.models import Meeting, Session, SessionPresentation
from ietf.name.models import SessionStatusName from ietf.name.models import SessionStatusName
from ietf.person.models import Person from ietf.person.models import Person
from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
class GroupMaterialTests(TestCase): class GroupMaterialTests(TestCase):

View file

@ -769,7 +769,7 @@ def search_mail_archive(request, name, assignment_id):
try: try:
res["messages"] = mailarch.retrieve_messages(res["query_data_url"])[:MAX_RESULTS] res["messages"] = mailarch.retrieve_messages(res["query_data_url"])[:MAX_RESULTS]
except KeyError as e: except KeyError as e:
res["error"] = "No results found (%s)" % str(e) res["error"] = "No results found"
except Exception as e: except Exception as e:
res["error"] = "Retrieval from mail archive failed: %s" % str(e) res["error"] = "Retrieval from mail archive failed: %s" % str(e)
# raise # useful when debugging # raise # useful when debugging

View file

@ -19,7 +19,7 @@ from ietf.group.factories import GroupFactory, RoleFactory
from ietf.utils.test_runner import set_coverage_checking from ietf.utils.test_runner import set_coverage_checking
from ietf.person.factories import EmailFactory from ietf.person.factories import EmailFactory
from ietf.person.models import Person from ietf.person.models import Person
from ietf.utils.test_utils import login_testing_unauthorized, TestCase from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
if getattr(settings,'SKIP_DOT_TO_PDF', False): if getattr(settings,'SKIP_DOT_TO_PDF', False):
skip_dot_to_pdf = True skip_dot_to_pdf = True

View file

@ -8,7 +8,7 @@ from pyquery import PyQuery
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, reload_db_objects from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent, reload_db_objects
from ietf.doc.models import TelechatDocEvent from ietf.doc.models import TelechatDocEvent
from ietf.group.models import Role from ietf.group.models import Role
from ietf.iesg.models import TelechatDate from ietf.iesg.models import TelechatDate

View file

@ -179,7 +179,7 @@ def agenda_json(request, date=None):
s["docs"].append(docinfo) s["docs"].append(docinfo)
return HttpResponse(json.dumps(res, indent=2), content_type='application/json') return HttpResponse(json.dumps(res, indent=2), content_type='text/plain')
# def past_agendas(request): # def past_agendas(request):
# # This is not particularly useful with the current way of constructing # # This is not particularly useful with the current way of constructing

View file

@ -14,7 +14,7 @@ from django.conf import settings
import debug # pyflakes:ignore import debug # pyflakes:ignore
from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.mail import outbox, empty_outbox from ietf.utils.mail import outbox, empty_outbox
from ietf.group.models import Group, Role, RoleName from ietf.group.models import Group, Role, RoleName
from ietf.group.factories import GroupFactory, RoleFactory from ietf.group.factories import GroupFactory, RoleFactory

View file

@ -1,5 +1,4 @@
# Copyright The IETF Trust 2014-2019, All Rights Reserved # Copyright The IETF Trust 2014-2019, All Rights Reserved
import base64 import base64
import email import email
import datetime import datetime
@ -7,11 +6,8 @@ from dateutil.tz import tzoffset
import os import os
import pytz import pytz
import re import re
from django.template.loader import render_to_string from django.template.loader import render_to_string
import debug # pyflakes:ignore
from ietf.ipr.models import IprEvent from ietf.ipr.models import IprEvent
from ietf.message.models import Message from ietf.message.models import Message
from ietf.person.models import Person from ietf.person.models import Person

View file

@ -1,5 +1,6 @@
# Copyright The IETF Trust 2009-2019, All Rights Reserved # Copyright The IETF Trust 2009-2019, All Rights Reserved
import datetime, os, shutil import datetime, os, shutil
import json
import debug # pyflakes:ignore import debug # pyflakes:ignore
@ -10,7 +11,7 @@ from django.db.models import Q
from io import StringIO from io import StringIO
from pyquery import PyQuery from pyquery import PyQuery
from ietf.utils.test_utils import TestCase, login_testing_unauthorized from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.utils.mail import outbox from ietf.utils.mail import outbox
from ietf.group.factories import GroupFactory, RoleFactory from ietf.group.factories import GroupFactory, RoleFactory

View file

@ -1,7 +1,7 @@
# Copyright The IETF Trust 2015-2019, All Rights Reserved # Copyright The IETF Trust 2015-2019, All Rights Reserved
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase, unicontent
class EventMailTests(TestCase): class EventMailTests(TestCase):

View file

@ -3,7 +3,7 @@ import datetime
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase, unicontent
from ietf.utils.mail import outbox from ietf.utils.mail import outbox
from ietf.message.models import Message, SendQueue from ietf.message.models import Message, SendQueue

View file

@ -22,10 +22,7 @@ from ietf.nomcom.utils import (initialize_templates_for_group,
initialize_questionnaire_for_position, initialize_questionnaire_for_position,
initialize_requirements_for_position, initialize_requirements_for_position,
initialize_description_for_topic, initialize_description_for_topic,
delete_nomcom_templates, delete_nomcom_templates)
EncryptedException,
)
from ietf.utils.log import log
from ietf.utils.models import ForeignKey from ietf.utils.models import ForeignKey
from ietf.utils.pipe import pipe from ietf.utils.pipe import pipe
from ietf.utils.storage import NoLocationMigrationFileSystemStorage from ietf.utils.storage import NoLocationMigrationFileSystemStorage

View file

@ -338,7 +338,7 @@ class PersonalApiKey(models.Model):
import struct, hashlib, base64 import struct, hashlib, base64
try: try:
key = base64.urlsafe_b64decode(s) key = base64.urlsafe_b64decode(s)
except TypeError: except TypeError as e:
return None return None
id, salt, hash = struct.unpack(KEY_STRUCT, key) id, salt, hash = struct.unpack(KEY_STRUCT, key)

View file

@ -3,6 +3,7 @@
import datetime import datetime
import json
from pyquery import PyQuery from pyquery import PyQuery
from io import StringIO from io import StringIO
from django.urls import reverse as urlreverse from django.urls import reverse as urlreverse

View file

@ -50,7 +50,7 @@ REDIRECT_TESTS = {
'/public/idindex.cgi?command=do_search_id&filename=draft-mills-sntp-v4-00.txt': '/public/idindex.cgi?command=do_search_id&filename=draft-mills-sntp-v4-00.txt':
'/drafts/?filename=draft-mills-sntp-v4-00.txt', '/drafts/?filename=draft-mills-sntp-v4-00.txt',
'/public/idindex.cgi?command=do_search_id&filename=draft-ietf-isis-interoperable&search_button=SEARCH': '/public/idindex.cgi?command=do_search_id&filename=draft-ietf-isis-interoperable&search_button=SEARCH':
'/drafts/?filename=draft-ietf-isis-interoperable&search_button=SEARCH', '/drafts/?search_button=SEARCH&filename=draft-ietf-isis-interoperable',
'/public/idindex.cgi?command=do_search_id&filename=rfc0038.txt': '/public/idindex.cgi?command=do_search_id&filename=rfc0038.txt':
'/drafts/?filename=rfc0038.txt', '/drafts/?filename=rfc0038.txt',
'/public/idindex.cgi?command=id_detail&id=7096': '/public/idindex.cgi?command=id_detail&id=7096':

View file

@ -1,7 +1,7 @@
# Copyright The IETF Trust 2013-2019, All Rights Reserved # Copyright The IETF Trust 2013-2019, All Rights Reserved
from django.conf import settings from django.conf import settings
r''' '''
RTF quick reference (from Word2007RTFSpec9.doc): RTF quick reference (from Word2007RTFSpec9.doc):
\fs24 : sets the font size to 24 half points \fs24 : sets the font size to 24 half points
\header : header on all pages \header : header on all pages

View file

@ -4,7 +4,7 @@ import datetime
import debug # pyflakes:ignore import debug # pyflakes:ignore
from ietf.utils.test_utils import TestCase from ietf.utils.test_utils import TestCase, unicontent
from ietf.group.factories import GroupFactory, RoleFactory from ietf.group.factories import GroupFactory, RoleFactory
from ietf.meeting.models import Session, ResourceAssociation from ietf.meeting.models import Session, ResourceAssociation
from ietf.meeting.factories import MeetingFactory, SessionFactory from ietf.meeting.factories import MeetingFactory, SessionFactory

View file

@ -18,4 +18,4 @@ def copy_roles(person):
me.role_set.all().delete() me.role_set.all().delete()
for role in person.role_set.all(): for role in person.role_set.all():
Role.objects.create(person=me,email_id='rcross@amsl.com',name=role.name,group=role.group) Role.objects.create(person=me,email_id='rcross@amsl.com',name=role.name,group=role.group)
print(me.role_set.all()) print me.role_set.all()

View file

@ -1,4 +1,5 @@
# Copyright The IETF Trust 2016-2019, All Rights Reserved # Copyright The IETF Trust 2016-2019, All Rights Reserved
# Copyright 2016 IETF Trust
import os import os
import copy import copy
@ -60,8 +61,6 @@ class Command(BaseCommand):
self.note("Running %s %s ..." % (os.path.basename(cmd), " ".join(quoted_args))) self.note("Running %s %s ..." % (os.path.basename(cmd), " ".join(quoted_args)))
command = [ cmd, ] + list(args) command = [ cmd, ] + list(args)
code, out, err = pipe(command) code, out, err = pipe(command)
out = out.decode()
err = err.decode()
msg = None msg = None
if code != 0: if code != 0:
msg = "Error %s: %s when executing '%s'" % (code, err, " ".join(command)) msg = "Error %s: %s when executing '%s'" % (code, err, " ".join(command))

View file

@ -72,7 +72,6 @@ def check(codeString, filename, verbosity=1):
sys.stderr.write('F') sys.stderr.write('F')
else: else:
sys.stderr.write('.') sys.stderr.write('.')
sys.stderr.flush()
if verbosity > 1: if verbosity > 1:
sys.stderr.write(" %s\n" % filename) sys.stderr.write(" %s\n" % filename)
return messages return messages
@ -85,7 +84,7 @@ def checkPath(filename, verbosity):
@return: the number of warnings printed @return: the number of warnings printed
""" """
try: try:
return check(open(filename).read() + '\n', filename, verbosity) return check(open(filename, 'U').read() + '\n', filename, verbosity)
except IOError as msg: except IOError as msg:
return ["%s: %s" % (filename, msg.args[1])] return ["%s: %s" % (filename, msg.args[1])]
except TypeError: except TypeError:
@ -101,7 +100,7 @@ def checkPaths(filenames, verbosity):
try: try:
warnings.extend(checkPath(os.path.join(dirpath, filename), verbosity)) warnings.extend(checkPath(os.path.join(dirpath, filename), verbosity))
except TypeError as e: except TypeError as e:
print("Exception while processing dirpath=%s, filename=%s: %s" % (dirpath, filename, e )) print(("Exception while processing dirpath=%s, filename=%s: %s" % (dirpath, filename,e )))
raise raise
else: else:
warnings.extend(checkPath(arg, verbosity)) warnings.extend(checkPath(arg, verbosity))

View file

@ -97,7 +97,7 @@ class Command(BaseCommand):
'person': person, 'settings': settings, 'person': person, 'settings': settings,
}, },
) )
PersonEvent.objects.create(person=person, type='gdpr_notice_email', e = PersonEvent.objects.create(person=person, type='gdpr_notice_email',
desc="Sent GDPR notice email to %s with confirmation deadline %s" % (to, date)) desc="Sent GDPR notice email to %s with confirmation deadline %s" % (to, date))
time.sleep(delay) time.sleep(delay)

View file

@ -239,6 +239,7 @@ def save_test_results(failures, test_labels):
tfile.write("%s OK\n" % (timestr, )) tfile.write("%s OK\n" % (timestr, ))
tfile.close() tfile.close()
def set_coverage_checking(flag=True): def set_coverage_checking(flag=True):
global template_coverage_collection global template_coverage_collection
global code_coverage_collection global code_coverage_collection

View file

@ -11,8 +11,8 @@ from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
from fnmatch import fnmatch from fnmatch import fnmatch
from importlib import import_module from importlib import import_module
#from .pipe import pipe from .pipe import pipe
#from io import StringIO from io import StringIO
from textwrap import dedent from textwrap import dedent
from unittest import skipIf from unittest import skipIf
from tempfile import mkdtemp from tempfile import mkdtemp
@ -20,7 +20,7 @@ from tempfile import mkdtemp
from django.apps import apps from django.apps import apps
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.conf import settings from django.conf import settings
#from django.core.management import call_command from django.core.management import call_command
from django.template import Context from django.template import Context
from django.template.defaulttags import URLNode from django.template.defaulttags import URLNode
from django.template.loader import get_template from django.template.loader import get_template
@ -29,8 +29,8 @@ from django.urls import reverse as urlreverse
import debug # pyflakes:ignore import debug # pyflakes:ignore
#from ietf.group.factories import GroupFactory from ietf.group.factories import GroupFactory
#from ietf.group.models import Group from ietf.group.models import Group
from ietf.person.name import name_parts, unidecode_name from ietf.person.name import name_parts, unidecode_name
from ietf.submit.tests import submission_file from ietf.submit.tests import submission_file
from ietf.utils.bower_storage import BowerStorageFinder from ietf.utils.bower_storage import BowerStorageFinder
@ -294,43 +294,43 @@ class TestWikiGlueManagementCommand(TestCase):
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern)) shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
shutil.rmtree(os.path.dirname(self.svn_dir_pattern)) shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
# def test_wiki_create_output(self): def test_wiki_create_output(self):
# for type in ['wg','rg','ag','area']: for type in ['wg','rg','ag','area']:
# GroupFactory(type_id=type) GroupFactory(type_id=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 = StringIO() out = StringIO()
# err = StringIO() err = StringIO()
# 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,
# ) )
# command_output = out.getvalue() command_output = out.getvalue()
# command_errors = err.getvalue() command_errors = err.getvalue()
# self.assertEqual("", command_errors) self.assertEqual("", command_errors)
# for group in groups: for group in groups:
# self.assertIn("Processing group '%s'" % group.acronym, command_output) self.assertIn("Processing group '%s'" % group.acronym, command_output)
# # Do a bit of verification using trac-admin, too # Do a bit of verification using trac-admin, too
# admin_code, admin_output, admin_error = pipe( admin_code, admin_output, admin_error = pipe(
# 'trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym)) 'trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
# self.assertEqual(admin_code, 0) self.assertEqual(admin_code, 0)
# roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad']) roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
# for role in roles: for role in roles:
# user = role.email.address.lower() user = role.email.address.lower()
# self.assertIn("Granting admin permission for %s" % user, command_output) self.assertIn("Granting admin permission for %s" % user, command_output)
# self.assertIn(user, admin_output) self.assertIn(user, admin_output)
# docs = group.document_set.filter(states__slug='active', type_id='draft') docs = group.document_set.filter(states__slug='active', type_id='draft')
# for doc in docs: for doc in docs:
# name = doc.name name = doc.name
# name = name.replace('draft-','') name = name.replace('draft-','')
# name = name.replace(doc.stream_id+'-', '') name = name.replace(doc.stream_id+'-', '')
# name = name.replace(group.acronym+'-', '') name = name.replace(group.acronym+'-', '')
# self.assertIn("Adding component %s"%name, command_output) self.assertIn("Adding component %s"%name, command_output)
# for page in settings.TRAC_WIKI_PAGES_TEMPLATES: for page in settings.TRAC_WIKI_PAGES_TEMPLATES:
# self.assertIn("Adding page %s" % os.path.basename(page), command_output) self.assertIn("Adding page %s" % os.path.basename(page), command_output)
# self.assertIn("Indexing default repository", command_output) self.assertIn("Indexing default repository", command_output)
OMITTED_APPS = [ OMITTED_APPS = [
'ietf.secr.meetings', 'ietf.secr.meetings',

View file

@ -3,6 +3,7 @@
import re import re
import textwrap import textwrap
import types
import unicodedata import unicodedata
from django.utils.functional import keep_lazy from django.utils.functional import keep_lazy

View file

@ -77,12 +77,9 @@ def validate_mime_type(file, valid):
mime_type, encoding = get_mime_type(raw) mime_type, encoding = get_mime_type(raw)
# work around mis-identification of text where a line has 'virtual' as # work around mis-identification of text where a line has 'virtual' as
# the first word: # the first word:
if mime_type == 'text/x-c++' and re.search(rb'(?m)^virtual\s', raw): if mime_type == 'text/x-c++' and re.search('(?m)^virtual\s', raw):
mod = raw.replace(b'virtual', b' virtual')) mod = raw.replace(str('virtual'), str(' virtual'))
mime_type, encoding = get_mime_type(mod) mime_type, encoding = get_mime_type(mod)
debug.show('mime_type')
debug.show('encoding')
debug.show('valid')
if valid and not mime_type in valid: if valid and not mime_type in valid:
raise ValidationError('Found content with unexpected mime type: %s. Expected one of %s.' % raise ValidationError('Found content with unexpected mime type: %s. Expected one of %s.' %
(mime_type, ', '.join(valid) )) (mime_type, ', '.join(valid) ))

View file

@ -32,6 +32,7 @@ httplib2>=0.10.3
jsonfield>=1.0.3 # for SubmissionCheck. This is https://github.com/bradjasper/django-jsonfield/. jsonfield>=1.0.3 # for SubmissionCheck. This is https://github.com/bradjasper/django-jsonfield/.
jwcrypto>=0.4.0 # for signed notifications jwcrypto>=0.4.0 # for signed notifications
#lxml>=3.4.0 # from PyQuery; #lxml>=3.4.0 # from PyQuery;
mimeparse>=0.1.3 # from TastyPie
mock>=2.0.0 mock>=2.0.0
mysqlclient>=1.3.13 mysqlclient>=1.3.13
oauth2client>=4.0.0 # required by google-api-python-client, but not always pulled in oauth2client>=4.0.0 # required by google-api-python-client, but not always pulled in
@ -47,7 +48,6 @@ pyquery>=1.2.13,!=1.2.14 # Pyqyery 1.2.14 fails on some selectors or stacked sel
python-dateutil>=2.2 python-dateutil>=2.2
python-magic>=0.4.6 python-magic>=0.4.6
python-memcached>=1.48 # for django.core.cache.backends.memcached python-memcached>=1.48 # for django.core.cache.backends.memcached
python-mimeparse>=1.6 # from TastyPie
pytz>=2014.7 pytz>=2014.7
#pyzmail>=1.0.3 #pyzmail>=1.0.3
requests!=2.12.* requests!=2.12.*