From 1813fa8aa770a7852aec6da2292761ff5043a39d Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:05:14 +0000 Subject: [PATCH 01/39] Changed requirements to the latest Django 1.8 release. - Legacy-Id: 12250 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fb54d41ba..fe52685f7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ coverage>=4.0.1,!=4.0.2 #cssselect>=0.6.1 # for PyQuery decorator>=3.4.0 defusedxml>=0.4.1 # for TastyPie when ussing xml; not a declared dependency -Django>=1.7.10,<1.8 +Django>=1.8.16,<1.9 django-bootstrap3>=5.1.1,<7.0.0 # django-bootstrap 7.0 requires django 1.8 django-markup>=1.1 django-tastypie>=0.13.1 From 7b6407dfedd39c5768451ed6254c7e8c6939f51f Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:07:22 +0000 Subject: [PATCH 02/39] Rewrote the test runner command-line switch declarations to use parser.add_argument() instead of the now unsupported option_list class attribute. - Legacy-Id: 12251 --- ietf/utils/test_runner.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 917644ca3..503fc60f0 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -326,19 +326,18 @@ class CoverageTest(unittest.TestCase): self.skipTest("Coverage switched off with --skip-coverage") class IetfTestRunner(DiscoverRunner): - option_list = ( - make_option('--skip-coverage', - action='store_true', dest='skip_coverage', default=False, - help='Skip test coverage measurements for code, templates, and URLs. ' - ), - make_option('--save-version-coverage', - action='store', dest='save_version_coverage', default=False, - help='Save test coverage data under the given version label'), - make_option('--save-testresult', + @classmethod + def add_arguments(cls, parser): + parser.add_argument('--skip-coverage', + action='store_true', dest='skip_coverage', default=False, + help='Skip test coverage measurements for code, templates, and URLs. ' ) + parser.add_argument('--save-version-coverage', + action='store', dest='save_version_coverage', default=False, + help='Save test coverage data under the given version label') + parser.add_argument('--save-testresult', action='store_true', dest='save_testresult', default=False, help='Save short test result data in %s/testresult' % os.path.dirname(os.path.dirname(settings.BASE_DIR))), - ) def __init__(self, skip_coverage=False, save_version_coverage=None, **kwargs): # From 276c9c103046ac8cdb30d6ab1428ca43bb8bc5a7 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:08:44 +0000 Subject: [PATCH 03/39] Removed use of the fix_ampersands() function. - Legacy-Id: 12252 --- ietf/doc/models.py | 2 +- ietf/doc/templatetags/ietf_filters.py | 4 ++-- ietf/liaisons/models.py | 4 ++-- ietf/mailtrigger/models.py | 4 ++-- ietf/meeting/models.py | 2 +- ietf/nomcom/models.py | 6 +++--- ietf/submit/models.py | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 33f2ffef0..c0ba3e4d8 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -53,7 +53,7 @@ class DocumentInfo(models.Model): title = models.CharField(max_length=255) states = models.ManyToManyField(State, blank=True) # plain state (Active/Expired/...), IESG state, stream state - tags = models.ManyToManyField(DocTagName, blank=True, null=True) # Revised ID Needed, ExternalParty, AD Followup, ... + tags = models.ManyToManyField(DocTagName, blank=True) # Revised ID Needed, ExternalParty, AD Followup, ... stream = models.ForeignKey(StreamName, blank=True, null=True) # IETF, IAB, IRTF, Independent Submission group = models.ForeignKey(Group, blank=True, null=True) # WG, RG, IAB, IESG, Edu, Tools diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index db88b4d3c..50ffb8a08 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -13,7 +13,7 @@ from ietf.doc.models import ConsensusDocEvent from ietf.doc.utils import get_document_content from django import template from django.conf import settings -from django.utils.html import escape, fix_ampersands +from django.utils.html import escape from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags, urlize from django.template import resolve_variable from django.utils.safestring import mark_safe, SafeData @@ -69,7 +69,7 @@ def parse_email_list(value): (name, email) = parseaddr(addr) if not(name): name = email - ret.append('%s' % ( fix_ampersands(email), escape(name) )) + ret.append('%s' % ( email.replace('&', '&'), escape(name) )) return mark_safe(", ".join(ret)) else: return value diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index 9abfe83f0..df9357423 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -40,7 +40,7 @@ class LiaisonStatement(models.Model): other_identifiers = models.TextField(blank=True, null=True) # Identifiers from other bodies body = models.TextField(blank=True) - tags = models.ManyToManyField(LiaisonStatementTagName, blank=True, null=True) + tags = models.ManyToManyField(LiaisonStatementTagName, blank=True) attachments = models.ManyToManyField(Document, through='LiaisonStatementAttachment', blank=True) state = models.ForeignKey(LiaisonStatementState, default='pending') @@ -212,7 +212,7 @@ class RelatedLiaisonStatement(models.Model): class LiaisonStatementGroupContacts(models.Model): - group = models.ForeignKey(Group, unique=True) + group = models.OneToOneField(Group) contacts = models.CharField(max_length=255,blank=True) cc_contacts = models.CharField(max_length=255,blank=True) diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 20343c148..526b5f5dd 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -22,8 +22,8 @@ def clean_duplicates(addrlist): class MailTrigger(models.Model): slug = models.CharField(max_length=32, primary_key=True) desc = models.TextField(blank=True) - to = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_to') - cc = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_cc') + to = models.ManyToManyField('Recipient', blank=True, related_name='used_in_to') + cc = models.ManyToManyField('Recipient', blank=True, related_name='used_in_cc') class Meta: ordering = ["slug"] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 6df3235ab..3f000f803 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -416,7 +416,7 @@ class TimeSlot(models.Model): duration = TimedeltaField() location = models.ForeignKey(Room, blank=True, null=True) show_location = models.BooleanField(default=True, help_text="Show location in agenda.") - sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', null=True, blank=True, help_text=u"Scheduled session, if any.") + sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', blank=True, help_text=u"Scheduled session, if any.") modified = models.DateTimeField(auto_now=True) # diff --git a/ietf/nomcom/models.py b/ietf/nomcom/models.py index 8e1afc691..724f0662b 100644 --- a/ietf/nomcom/models.py +++ b/ietf/nomcom/models.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- import os from django.db import models @@ -205,8 +205,8 @@ class Position(models.Model): class Feedback(models.Model): nomcom = models.ForeignKey('NomCom') author = models.EmailField(verbose_name='Author', blank=True) - positions = models.ManyToManyField('Position', blank=True, null=True) - nominees = models.ManyToManyField('Nominee', blank=True, null=True) + positions = models.ManyToManyField('Position', blank=True) + nominees = models.ManyToManyField('Nominee', blank=True) subject = models.TextField(verbose_name='Subject', blank=True) comments = EncryptedTextField(verbose_name='Comments') type = models.ForeignKey(FeedbackTypeName, blank=True, null=True) diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 9bb3fed18..6e710cc6b 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -77,7 +77,7 @@ class Submission(models.Model): return Document.objects.filter(name=self.name).first() class SubmissionCheck(models.Model): - time = models.DateTimeField(auto_now=True, default=None) # The default is to make makemigrations happy + time = models.DateTimeField(auto_now=True) submission = models.ForeignKey(Submission, related_name='checks') checker = models.CharField(max_length=256, blank=True) passed = models.NullBooleanField(default=False) From ca570ae35586d4acdd5a902001eec760017a71b1 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:10:09 +0000 Subject: [PATCH 04/39] Reverted an inadvertent commit of all changes. - Legacy-Id: 12253 --- ietf/doc/models.py | 2 +- ietf/doc/templatetags/ietf_filters.py | 4 ++-- ietf/liaisons/models.py | 4 ++-- ietf/mailtrigger/models.py | 4 ++-- ietf/meeting/models.py | 2 +- ietf/nomcom/models.py | 6 +++--- ietf/submit/models.py | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index c0ba3e4d8..33f2ffef0 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -53,7 +53,7 @@ class DocumentInfo(models.Model): title = models.CharField(max_length=255) states = models.ManyToManyField(State, blank=True) # plain state (Active/Expired/...), IESG state, stream state - tags = models.ManyToManyField(DocTagName, blank=True) # Revised ID Needed, ExternalParty, AD Followup, ... + tags = models.ManyToManyField(DocTagName, blank=True, null=True) # Revised ID Needed, ExternalParty, AD Followup, ... stream = models.ForeignKey(StreamName, blank=True, null=True) # IETF, IAB, IRTF, Independent Submission group = models.ForeignKey(Group, blank=True, null=True) # WG, RG, IAB, IESG, Edu, Tools diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index 50ffb8a08..db88b4d3c 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -13,7 +13,7 @@ from ietf.doc.models import ConsensusDocEvent from ietf.doc.utils import get_document_content from django import template from django.conf import settings -from django.utils.html import escape +from django.utils.html import escape, fix_ampersands from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags, urlize from django.template import resolve_variable from django.utils.safestring import mark_safe, SafeData @@ -69,7 +69,7 @@ def parse_email_list(value): (name, email) = parseaddr(addr) if not(name): name = email - ret.append('%s' % ( email.replace('&', '&'), escape(name) )) + ret.append('%s' % ( fix_ampersands(email), escape(name) )) return mark_safe(", ".join(ret)) else: return value diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index df9357423..9abfe83f0 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -40,7 +40,7 @@ class LiaisonStatement(models.Model): other_identifiers = models.TextField(blank=True, null=True) # Identifiers from other bodies body = models.TextField(blank=True) - tags = models.ManyToManyField(LiaisonStatementTagName, blank=True) + tags = models.ManyToManyField(LiaisonStatementTagName, blank=True, null=True) attachments = models.ManyToManyField(Document, through='LiaisonStatementAttachment', blank=True) state = models.ForeignKey(LiaisonStatementState, default='pending') @@ -212,7 +212,7 @@ class RelatedLiaisonStatement(models.Model): class LiaisonStatementGroupContacts(models.Model): - group = models.OneToOneField(Group) + group = models.ForeignKey(Group, unique=True) contacts = models.CharField(max_length=255,blank=True) cc_contacts = models.CharField(max_length=255,blank=True) diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 526b5f5dd..20343c148 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -22,8 +22,8 @@ def clean_duplicates(addrlist): class MailTrigger(models.Model): slug = models.CharField(max_length=32, primary_key=True) desc = models.TextField(blank=True) - to = models.ManyToManyField('Recipient', blank=True, related_name='used_in_to') - cc = models.ManyToManyField('Recipient', blank=True, related_name='used_in_cc') + to = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_to') + cc = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_cc') class Meta: ordering = ["slug"] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 3f000f803..6df3235ab 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -416,7 +416,7 @@ class TimeSlot(models.Model): duration = TimedeltaField() location = models.ForeignKey(Room, blank=True, null=True) show_location = models.BooleanField(default=True, help_text="Show location in agenda.") - sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', blank=True, help_text=u"Scheduled session, if any.") + sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', null=True, blank=True, help_text=u"Scheduled session, if any.") modified = models.DateTimeField(auto_now=True) # diff --git a/ietf/nomcom/models.py b/ietf/nomcom/models.py index 724f0662b..8e1afc691 100644 --- a/ietf/nomcom/models.py +++ b/ietf/nomcom/models.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- import os from django.db import models @@ -205,8 +205,8 @@ class Position(models.Model): class Feedback(models.Model): nomcom = models.ForeignKey('NomCom') author = models.EmailField(verbose_name='Author', blank=True) - positions = models.ManyToManyField('Position', blank=True) - nominees = models.ManyToManyField('Nominee', blank=True) + positions = models.ManyToManyField('Position', blank=True, null=True) + nominees = models.ManyToManyField('Nominee', blank=True, null=True) subject = models.TextField(verbose_name='Subject', blank=True) comments = EncryptedTextField(verbose_name='Comments') type = models.ForeignKey(FeedbackTypeName, blank=True, null=True) diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 6e710cc6b..9bb3fed18 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -77,7 +77,7 @@ class Submission(models.Model): return Document.objects.filter(name=self.name).first() class SubmissionCheck(models.Model): - time = models.DateTimeField(auto_now=True) + time = models.DateTimeField(auto_now=True, default=None) # The default is to make makemigrations happy submission = models.ForeignKey(Submission, related_name='checks') checker = models.CharField(max_length=256, blank=True) passed = models.NullBooleanField(default=False) From cfe4d2f6aa6288c69889f0f7dd16622b7a0f5e32 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:11:49 +0000 Subject: [PATCH 05/39] Removed use of the fix_ampersands() function. - Legacy-Id: 12254 --- ietf/doc/templatetags/ietf_filters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/doc/templatetags/ietf_filters.py b/ietf/doc/templatetags/ietf_filters.py index db88b4d3c..50ffb8a08 100644 --- a/ietf/doc/templatetags/ietf_filters.py +++ b/ietf/doc/templatetags/ietf_filters.py @@ -13,7 +13,7 @@ from ietf.doc.models import ConsensusDocEvent from ietf.doc.utils import get_document_content from django import template from django.conf import settings -from django.utils.html import escape, fix_ampersands +from django.utils.html import escape from django.template.defaultfilters import truncatewords_html, linebreaksbr, stringfilter, striptags, urlize from django.template import resolve_variable from django.utils.safestring import mark_safe, SafeData @@ -69,7 +69,7 @@ def parse_email_list(value): (name, email) = parseaddr(addr) if not(name): name = email - ret.append('%s' % ( fix_ampersands(email), escape(name) )) + ret.append('%s' % ( email.replace('&', '&'), escape(name) )) return mark_safe(", ".join(ret)) else: return value From 87e1339924dc31995a295935ee1d9ec360586f93 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:13:44 +0000 Subject: [PATCH 06/39] Fixed all the warnings emitted by the check command; mostly use of null=True on ManyToManyFields, which doesn't make sense. - Legacy-Id: 12256 --- ietf/doc/models.py | 2 +- ietf/liaisons/models.py | 4 ++-- ietf/mailtrigger/models.py | 4 ++-- ietf/meeting/models.py | 2 +- ietf/nomcom/models.py | 4 ++-- ietf/submit/models.py | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 33f2ffef0..c0ba3e4d8 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -53,7 +53,7 @@ class DocumentInfo(models.Model): title = models.CharField(max_length=255) states = models.ManyToManyField(State, blank=True) # plain state (Active/Expired/...), IESG state, stream state - tags = models.ManyToManyField(DocTagName, blank=True, null=True) # Revised ID Needed, ExternalParty, AD Followup, ... + tags = models.ManyToManyField(DocTagName, blank=True) # Revised ID Needed, ExternalParty, AD Followup, ... stream = models.ForeignKey(StreamName, blank=True, null=True) # IETF, IAB, IRTF, Independent Submission group = models.ForeignKey(Group, blank=True, null=True) # WG, RG, IAB, IESG, Edu, Tools diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index 9abfe83f0..df9357423 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -40,7 +40,7 @@ class LiaisonStatement(models.Model): other_identifiers = models.TextField(blank=True, null=True) # Identifiers from other bodies body = models.TextField(blank=True) - tags = models.ManyToManyField(LiaisonStatementTagName, blank=True, null=True) + tags = models.ManyToManyField(LiaisonStatementTagName, blank=True) attachments = models.ManyToManyField(Document, through='LiaisonStatementAttachment', blank=True) state = models.ForeignKey(LiaisonStatementState, default='pending') @@ -212,7 +212,7 @@ class RelatedLiaisonStatement(models.Model): class LiaisonStatementGroupContacts(models.Model): - group = models.ForeignKey(Group, unique=True) + group = models.OneToOneField(Group) contacts = models.CharField(max_length=255,blank=True) cc_contacts = models.CharField(max_length=255,blank=True) diff --git a/ietf/mailtrigger/models.py b/ietf/mailtrigger/models.py index 20343c148..526b5f5dd 100644 --- a/ietf/mailtrigger/models.py +++ b/ietf/mailtrigger/models.py @@ -22,8 +22,8 @@ def clean_duplicates(addrlist): class MailTrigger(models.Model): slug = models.CharField(max_length=32, primary_key=True) desc = models.TextField(blank=True) - to = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_to') - cc = models.ManyToManyField('Recipient', null=True, blank=True, related_name='used_in_cc') + to = models.ManyToManyField('Recipient', blank=True, related_name='used_in_to') + cc = models.ManyToManyField('Recipient', blank=True, related_name='used_in_cc') class Meta: ordering = ["slug"] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index 6df3235ab..3f000f803 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -416,7 +416,7 @@ class TimeSlot(models.Model): duration = TimedeltaField() location = models.ForeignKey(Room, blank=True, null=True) show_location = models.BooleanField(default=True, help_text="Show location in agenda.") - sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', null=True, blank=True, help_text=u"Scheduled session, if any.") + sessions = models.ManyToManyField('Session', related_name='slots', through='SchedTimeSessAssignment', blank=True, help_text=u"Scheduled session, if any.") modified = models.DateTimeField(auto_now=True) # diff --git a/ietf/nomcom/models.py b/ietf/nomcom/models.py index 8e1afc691..6c975164d 100644 --- a/ietf/nomcom/models.py +++ b/ietf/nomcom/models.py @@ -205,8 +205,8 @@ class Position(models.Model): class Feedback(models.Model): nomcom = models.ForeignKey('NomCom') author = models.EmailField(verbose_name='Author', blank=True) - positions = models.ManyToManyField('Position', blank=True, null=True) - nominees = models.ManyToManyField('Nominee', blank=True, null=True) + positions = models.ManyToManyField('Position', blank=True) + nominees = models.ManyToManyField('Nominee', blank=True) subject = models.TextField(verbose_name='Subject', blank=True) comments = EncryptedTextField(verbose_name='Comments') type = models.ForeignKey(FeedbackTypeName, blank=True, null=True) diff --git a/ietf/submit/models.py b/ietf/submit/models.py index 9bb3fed18..6e710cc6b 100644 --- a/ietf/submit/models.py +++ b/ietf/submit/models.py @@ -77,7 +77,7 @@ class Submission(models.Model): return Document.objects.filter(name=self.name).first() class SubmissionCheck(models.Model): - time = models.DateTimeField(auto_now=True, default=None) # The default is to make makemigrations happy + time = models.DateTimeField(auto_now=True) submission = models.ForeignKey(Submission, related_name='checks') checker = models.CharField(max_length=256, blank=True) passed = models.NullBooleanField(default=False) From 4f2eb07fa76f6ec2865729abcf62d1f5e80bc8d1 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:47:14 +0000 Subject: [PATCH 07/39] Updated proceedings_templates fixture. - Legacy-Id: 12258 --- .../fixtures/proceedings_templates.json | 1 + .../fixtures/proceedings_templates.xml | 93 ------------------- 2 files changed, 1 insertion(+), 93 deletions(-) create mode 100644 ietf/meeting/fixtures/proceedings_templates.json delete mode 100644 ietf/meeting/fixtures/proceedings_templates.xml diff --git a/ietf/meeting/fixtures/proceedings_templates.json b/ietf/meeting/fixtures/proceedings_templates.json new file mode 100644 index 000000000..a2d1da672 --- /dev/null +++ b/ietf/meeting/fixtures/proceedings_templates.json @@ -0,0 +1 @@ +[{"fields": {"group": 1, "title": "IETF 97 Proceedings Overview", "variables": null, "content": "The Internet Engineering Task Force (IETF) provides a forum for working groups to coordinate technical development of new protocols. Its most important function is the development and selection of standards within the Internet protocol suite.\n\nThe IETF began in January 1986 as a forum for technical coordination by contractors for the then US Defense Advanced Research Projects Agency (DARPA), working on the ARPANET, US Defense Data Network (DDN), and the Internet core gateway system. Since that time, the IETF has grown into a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the Internet.\n\nThe IETF mission includes:\n\n* Identifying and proposing solutions to pressing operational and technical problems in the Internet\n* Specifying the development or usage of protocols and the near-term architecture, to solve technical problems for the Internet\n* Facilitating technology transfer from the Internet Research Task Force (IRTF) to the wider Internet community;and\n* Providing a forum for the exchange of relevant information within the Internet community between vendors, users, researchers, agency contractors, and network managers.\n\nTechnical activities in the IETF are addressed within working groups. All working groups are organized roughly by function into seven areas. Each area is led by one or more Area Directors who have primary responsibility for that one area of IETF activity. Together with the Chair of the IETF/IESG, these Area Directors comprise the Internet Engineering Steering Group (IESG).\n\n=================== =================================== ========================\nName Area Email\n=================== =================================== ========================\nJari Arkko IETF Chair chair@ietf.org\nJari Arkko General Area jari.arkko@piuha.net\nAlia Atlas Routing Area akatlas@gmail.com\nDeborah Brungard Routing Areas db3546@att.com\nBen Campbell Applications and Real-Time Area ben@nostrum.com\nBenoit Claise Operations and Management Area bclaise@cisco.com\nAlissa Cooper Applications and Real-Time Area alissa@cooperw.in\nSpencer Dawkins Transport Area spencerdawkins.ietf@gmail.com\nStephen Farrell Security Area stephen.farrell@cs.tcd.ie\nJoel Jaeggli Operations and Management Area joelja@bogus.com\nSuresh Krishnan Internet Area suresh.krishnan@ericsson.com\nMirja K\u00fchlewind Transport Area ietf@kuehlewind.net\nTerry Manderson Internet Area terry.manderson@icann.org\nAlexey Melnikov Applications and Real-Time Area aamelnikov@fastmail.fm\nKathleen Moriarty Security Area Kathleen.Moriarty.ietf@gmail.com\nAlvaro Retana Routing Area aretana@cisco.com\n=================== =================================== ========================\n\n\nLiaison and ex-officio members include:\n\n=================== =================================== ========================\nOlaf Kolkman IAB Chair iab-chair@iab.org\nDanny McPherson IAB Liaison danny@tcb.net\nMichelle Cotton IANA Liaison iana@iana.org\nSandy Ginoza RFC Editor Liaison rfc-editor@rfc-editor.org\nAlexa Morris IETF Secretariat Liaison exec-director@ietf.org\n=================== =================================== ========================\n\n\nThe IETF has a Secretariat, which is managed by Association Management Solutions, LLC (AMS) in Fremont, California.The IETF Executive Director is Alexa Morris (exec-director@ietf.org).\n\n\nOther personnel that provide full-time support to the Secretariat include:\n\n========================= ===================================\nSenior Meeting Planner Marcia Beaulieu\nProject Manager Stephanie McCammon\nMeeting Regsitrar Maddy Conner\nProject Manager Cindy Morgan\nProject Manager Amy Vezza\n========================= ===================================\n\nTo contact the Secretariat, please refer to the addresses and URLs provided on the IETF Secretariat Web page.\n\nThe IETF also has a general Administrative Support Activity headed by the IETF Administrative Director, Ray Pelletier iad@ietf.org\n\nThe working groups conduct their business during the tri-annual IETF meetings, at interim working group meetings, and via electronic mail on mailing lists established for each group. The tri-annual IETF meetings are 4.5 days in duration, and consist of working group sessions, training sessions, and plenary sessions. The plenary sessions include technical presentations, status reports, and an open IESG meeting.\n\nFollowing each meeting, the IETF Secretariat publishes meeting proceedings, which contain reports from all of the groups that met, as well as presentation slides, where available. The proceedings also include a summary of the standards-related activities that took place since the previous IETF meeting.\n\nMeeting minutes, working group charters (including information about the working group mailing lists), and general information on current IETF activities are available on the IETF Web site at https://www.ietf.org.\n", "path": "/meeting/proceedings/97/overview.rst", "type": "rst"}, "model": "dbtemplate.dbtemplate", "pk": 179}, {"fields": {"order": 0, "used": true, "name": "reStructuredText", "desc": ""}, "model": "name.dbtemplatetypename", "pk": "rst"}, {"fields": {"charter": null, "unused_states": [], "description": "", "parent": null, "list_email": "", "acronym": "ietf", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26T00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "IETF"}, "model": "group.group", "pk": 1}, {"fields": {"order": 0, "used": true, "name": "Active", "desc": ""}, "model": "name.groupstatename", "pk": "active"}, {"fields": {"order": 0, "used": true, "verbose_name": "Internet Engineering Task Force", "name": "IETF", "desc": ""}, "model": "name.grouptypename", "pk": "ietf"}] diff --git a/ietf/meeting/fixtures/proceedings_templates.xml b/ietf/meeting/fixtures/proceedings_templates.xml deleted file mode 100644 index 035a6125c..000000000 --- a/ietf/meeting/fixtures/proceedings_templates.xml +++ /dev/null @@ -1,93 +0,0 @@ - -/meeting/proceedings/defaults/overview.rstProceedings Overview TemplaterstThe Internet Engineering Task Force (IETF) provides a forum for working groups to coordinate technical development of new protocols. Its most important function is the development and selection of standards within the Internet protocol suite. - - - -The IETF began in January 1986 as a forum for technical coordination by contractors for the then US Defense Advanced Research Projects Agency (DARPA), working on the ARPANET, US Defense Data Network (DDN), and the Internet core gateway system. Since that time, the IETF has grown into a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the Internet. - - - -The IETF mission includes: - - - -* Identifying and proposing solutions to pressing operational and technical problems in the Internet - -* Specifying the development or usage of protocols and the near-term architecture, to solve technical problems for the Internet - -* Facilitating technology transfer from the Internet Research Task Force (IRTF) to the wider Internet community;and - -* Providing a forum for the exchange of relevant information within the Internet community between vendors, users, researchers, agency contractors, and network managers. - - - -Technical activities in the IETF are addressed within working groups. All working groups are organized roughly by function into seven areas. Each area is led by one or more Area Directors who have primary responsibility for that one area of IETF activity. Together with the Chair of the IETF/IESG, these Area Directors comprise the Internet Engineering Steering Group (IESG). - - - -=================== =================================== ======================== -Name Area Email -=================== =================================== ======================== -Jari Arkko IETF Chair chair@ietf.org -Jari Arkko General Area jari.arkko@piuha.net -Alia Atlas Routing Area akatlas@gmail.com -Deborah Brungard Routing Areas db3546@att.com -Ben Campbell Applications and Real-Time Area ben@nostrum.com -Benoit Claise Operations and Management Area bclaise@cisco.com -Alissa Cooper Applications and Real-Time Area alissa@cooperw.in -Spencer Dawkins Transport Area spencerdawkins.ietf@gmail.com -Stephen Farrell Security Area stephen.farrell@cs.tcd.ie -Brian Haberman Internet Area brian@innovationslab.net -Joel Jaeggli Operations and Management Area joelja@bogus.com -Barry Leiba Applications and Real-Time Area barryleiba@computer.org -Terry Manderson Internet Area terry.manderson@icann.org -Kathleen Moriarty Security Area Kathleen.Moriarty.ietf@gmail.com -Alvaro Retana Routing Area aretana@cisco.com -Martin Stiemerling Transport Area mls.ietf@gmail.com -=================== =================================== ======================== - - -Liaison and ex-officio members include: - - -=================== =================================== ======================== -Olaf Kolkman IAB Chair iab-chair@iab.org -Danny McPherson IAB Liaison danny@tcb.net -Michelle Cotton IANA Liaison iana@iana.org -Sandy Ginoza RFC Editor Liaison rfc-editor@rfc-editor.org -Alexa Morris IETF Secretariat Liaison exec-director@ietf.org -=================== =================================== ======================== - - -The IETF has a Secretariat, which is managed by Association Management Solutions, LLC (AMS) in Fremont, California.The IETF Executive Director is Alexa Morris (exec-director@ietf.org). - - -Other personnel that provide full-time support to the Secretariat include: - - -========================= =================================== -Senior Meeting Planner Marcia Beaulieu -Project Manager Stephanie McCammon -Meeting Regsitrar Maddy Conner -Project Manager Cindy Morgan -Project Manager Amy Vezza -========================= =================================== - - -To contact the Secretariat, please refer to the addresses and URLs provided on the IETF Secretariat Web page. - - - -The IETF also has a general Administrative Support Activity headed by the IETF Administrative Director, Ray Pelletier iad@ietf.org - - - -The working groups conduct their business during the tri-annual IETF meetings, at interim working group meetings, and via electronic mail on mailing lists established for each group. The tri-annual IETF meetings are 4.5 days in duration, and consist of working group sessions, training sessions, and plenary sessions. The plenary sessions include technical presentations, status reports, and an open IESG meeting. - - - -Following each meeting, the IETF Secretariat publishes meeting proceedings, which contain reports from all of the groups that met, as well as presentation slides, where available. The proceedings also include a summary of the standards-related activities that took place since the previous IETF meeting. - - - -Meeting minutes, working group charters (including information about the working group mailing lists), and general information on current IETF activities are available on the IETF Web site at https://www.ietf.org.1 \ No newline at end of file From f7cf00b7ece6022a2eae58929314284b8ef85a61 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:48:38 +0000 Subject: [PATCH 08/39] Use get_or_create when creating test data, to avoid duplicate key warnings. - Legacy-Id: 12259 --- ietf/utils/test_data.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ietf/utils/test_data.py b/ietf/utils/test_data.py index 54028a455..1937d451c 100644 --- a/ietf/utils/test_data.py +++ b/ietf/utils/test_data.py @@ -34,7 +34,8 @@ def create_person(group, role_name, name=None, username=None, email_address=None Role.objects.create(group=group, name_id=role_name, person=person, email=email) def create_group(**kwargs): - return Group.objects.create(state_id="active", **kwargs) + group, created = Group.objects.get_or_create(state_id="active", **kwargs) + return group def make_immutable_base_data(): """Some base data (groups, etc.) that doesn't need to be modified by From f690333ea33a741283eb5f4df559d28857d062bc Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:50:10 +0000 Subject: [PATCH 09/39] Formtools has been moved from django.contrib to an external package. Add it to requirements. - Legacy-Id: 12260 --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index fe52685f7..6ba24f4a9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,7 @@ decorator>=3.4.0 defusedxml>=0.4.1 # for TastyPie when ussing xml; not a declared dependency Django>=1.8.16,<1.9 django-bootstrap3>=5.1.1,<7.0.0 # django-bootstrap 7.0 requires django 1.8 +django-formtools>=1.0 # instead of django.contrib.formtools in 1.8 django-markup>=1.1 django-tastypie>=0.13.1 django-widget-tweaks>=1.3 From 8d1aca19cc74a701e7326c72baf80df62866bcfb Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:51:06 +0000 Subject: [PATCH 10/39] Rewrote the template coverage loader function to a proper template loader class. - Legacy-Id: 12261 --- ietf/utils/test_runner.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 503fc60f0..1587238cb 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -54,6 +54,7 @@ from optparse import make_option from django.conf import settings from django.template import TemplateDoesNotExist +from django.template.loaders.base import Loader as BaseLoader from django.test.runner import DiscoverRunner from django.core.management import call_command from django.core.urlresolvers import RegexURLResolver @@ -106,11 +107,14 @@ def safe_destroy_0_1(*args, **kwargs): settings.DATABASES["default"]["NAME"] = test_database_name return old_destroy(*args, **kwargs) -def template_coverage_loader(template_name, dirs): - if template_coverage_collection == True: - loaded_templates.add(str(template_name)) - raise TemplateDoesNotExist -template_coverage_loader.is_usable = True +class TemplateCoverageLoader(BaseLoader): + is_usable = True + + def load_template_source(self, template_name, dirs): + if template_coverage_collection == True: + loaded_templates.add(str(template_name)) + raise TemplateDoesNotExist + load_template_source.is_usable = True class RecordUrlsMiddleware(object): def process_request(self, request): @@ -385,7 +389,7 @@ class IetfTestRunner(DiscoverRunner): }, } - settings.TEMPLATE_LOADERS = ('ietf.utils.test_runner.template_coverage_loader',) + settings.TEMPLATE_LOADERS + settings.TEMPLATE_LOADERS = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATE_LOADERS template_coverage_collection = True settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + settings.MIDDLEWARE_CLASSES From c05d53da095ece142384f6cfe857c26bc81f90fe Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:52:02 +0000 Subject: [PATCH 11/39] Fixed the import path for some template classes. - Legacy-Id: 12262 --- ietf/dbtemplate/template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/dbtemplate/template.py b/ietf/dbtemplate/template.py index 3445984fb..f4276a9ef 100644 --- a/ietf/dbtemplate/template.py +++ b/ietf/dbtemplate/template.py @@ -4,7 +4,7 @@ from docutils.core import publish_string from docutils.utils import SystemMessage import debug # pyflakes:ignore -from django.template import Template as DjangoTemplate, TemplateDoesNotExist, TemplateEncodingError +from django.template.base import Template as DjangoTemplate, TemplateDoesNotExist, TemplateEncodingError from django.template.loader import BaseLoader from django.utils.encoding import smart_unicode From 90bf63f01e9cc614b493abbf97144137143e2f78 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Thu, 3 Nov 2016 20:54:35 +0000 Subject: [PATCH 12/39] Fixed the import path for formtools. - Legacy-Id: 12263 --- ietf/nomcom/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/nomcom/forms.py b/ietf/nomcom/forms.py index ab797e3e5..95a52e01f 100644 --- a/ietf/nomcom/forms.py +++ b/ietf/nomcom/forms.py @@ -1,6 +1,6 @@ from django.conf import settings from django import forms -from django.contrib.formtools.preview import FormPreview, AUTO_ID +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 1558a52c55710e51ac8db27d4e98185a747b9510 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Fri, 4 Nov 2016 19:02:40 +0000 Subject: [PATCH 13/39] django.admin.utils.get_deleted_objects() changed signature. Fixed. - Legacy-Id: 12268 --- ietf/person/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/person/utils.py b/ietf/person/utils.py index 2229cf962..55e7a6929 100755 --- a/ietf/person/utils.py +++ b/ietf/person/utils.py @@ -74,9 +74,9 @@ def merge_persons(source,target,stream): user = User.objects.filter(is_superuser=True).first() admin_site = admin.site using = 'default' - - deletable_objects, perms_needed, protected = admin.utils.get_deleted_objects( - objs, opts, user, admin_site, using) + + deletable_objects, model_count, perms_needed, protected = ( + admin.utils.get_deleted_objects(objs, opts, user, admin_site, using) ) if len(deletable_objects) > 1: print >>stream, "Not Deleting Person: {}({})".format(source.ascii,source.pk) From 7c7e2827972ce4b1998e37947d3ef20d7b7b9de6 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Fri, 4 Nov 2016 19:03:58 +0000 Subject: [PATCH 14/39] When using select_related, field names are now valiadate. Fixed some invalid names. - Legacy-Id: 12269 --- ietf/doc/utils_search.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf/doc/utils_search.py b/ietf/doc/utils_search.py index 7b9e3c159..c6a784ef6 100644 --- a/ietf/doc/utils_search.py +++ b/ietf/doc/utils_search.py @@ -12,7 +12,7 @@ def fill_in_document_table_attributes(docs): docs_dict = dict((d.pk, d) for d in docs) doc_ids = docs_dict.keys() - rfc_aliases = dict(DocAlias.objects.filter(name__startswith="rfc", document__in=doc_ids).values_list("document_id", "name")) + rfc_aliases = dict(DocAlias.objects.filter(name__startswith="rfc", document__in=doc_ids).values_list("document", "name")) # latest event cache event_types = ("published_rfc", @@ -78,9 +78,9 @@ def fill_in_document_table_attributes(docs): d.updated_by_list = [] xed_by = RelatedDocument.objects.filter(target__name__in=rfc_aliases.values(), - relationship__in=("obs", "updates")).select_related('target__document_id') + relationship__in=("obs", "updates")).select_related('target__document') rel_rfc_aliases = dict(DocAlias.objects.filter(name__startswith="rfc", - document__in=[rel.source_id for rel in xed_by]).values_list('document_id', 'name')) + document__in=[rel.source_id for rel in xed_by]).values_list('document', 'name')) for rel in xed_by: d = docs_dict[rel.target.document_id] if rel.relationship_id == "obs": @@ -100,7 +100,7 @@ def prepare_document_table(request, docs, query=None, max_results=500): if not isinstance(docs, list): # evaluate and fill in attribute results immediately to decrease # the number of queries - docs = docs.select_related("ad", "ad__person", "std_level", "intended_std_level", "group", "stream") + docs = docs.select_related("ad", "std_level", "intended_std_level", "group", "stream") docs = docs.prefetch_related("states__type", "tags") docs = list(docs[:max_results]) From 7c23d0c52e567768c65aba9835c4f803b6368e21 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 17:47:08 +0000 Subject: [PATCH 15/39] Silenced a system check we won't always follow. - Legacy-Id: 12401 --- ietf/settings.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ietf/settings.py b/ietf/settings.py index 084a2eb09..235477173 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -737,6 +737,10 @@ LIST_ACCOUNT_DELAY = 60*60*25 # 25 hours ACCOUNT_REQUEST_EMAIL = 'account-request@ietf.org' +SILENCED_SYSTEM_CHECKS = [ + "fields.W342", # Setting unique=True on a ForeignKey has the same effect as using a OneToOneField. +] + # Put the production SECRET_KEY in settings_local.py, and also any other # sensitive or site-specific changes. DO NOT commit settings_local.py to svn. From 7c2a1b2ee42ce76e75a18b8986f0885d41f3640d Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 17:50:08 +0000 Subject: [PATCH 16/39] Undid a FK to o2o change we don't want to do (we have instances where the FK is None). - Legacy-Id: 12402 --- ietf/liaisons/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/liaisons/models.py b/ietf/liaisons/models.py index df9357423..e501a9fea 100644 --- a/ietf/liaisons/models.py +++ b/ietf/liaisons/models.py @@ -212,7 +212,7 @@ class RelatedLiaisonStatement(models.Model): class LiaisonStatementGroupContacts(models.Model): - group = models.OneToOneField(Group) + group = models.ForeignKey(Group, unique=True, null=True) contacts = models.CharField(max_length=255,blank=True) cc_contacts = models.CharField(max_length=255,blank=True) From 671df0492aaf300ef4b83a5348df2068943bee6f Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 18:05:14 +0000 Subject: [PATCH 17/39] Fixed an issue where a queryset filter argument didn't have the right datatype. - Legacy-Id: 12403 --- ietf/doc/views_material.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/views_material.py b/ietf/doc/views_material.py index f24228a06..2d0fada14 100644 --- a/ietf/doc/views_material.py +++ b/ietf/doc/views_material.py @@ -38,7 +38,7 @@ class UploadMaterialForm(forms.Form): def __init__(self, doc_type, action, group, doc, *args, **kwargs): super(UploadMaterialForm, self).__init__(*args, **kwargs) - self.fields["state"].queryset = self.fields["state"].queryset.filter(type=doc_type) + self.fields["state"].queryset = self.fields["state"].queryset.filter(type__slug=doc_type.slug) self.doc_type = doc_type self.action = action From 554ec2d78c3d5f37411d46ba6cc1990564f008ca Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 21:04:15 +0000 Subject: [PATCH 18/39] Removed an unused import - Legacy-Id: 12406 --- ietf/utils/test_runner.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 1587238cb..f4ad15d9c 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -50,7 +50,6 @@ import unittest from coverage.report import Reporter from coverage.results import Numbers from coverage.misc import NotPython -from optparse import make_option from django.conf import settings from django.template import TemplateDoesNotExist From 53d68af9cd893c6bf59ca47813f08343058290bf Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 21:05:17 +0000 Subject: [PATCH 19/39] Adapted the utils template tests to the new template handling in Django 1.8. - Legacy-Id: 12407 --- ietf/utils/tests.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index bafc8b2c5..d0c4ca602 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -13,10 +13,10 @@ from email.mime.multipart import MIMEMultipart from django.conf import settings from django.core.management import call_command -from django.template import Context +from django.template import Context, engines from django.template.defaulttags import URLNode +from django.template.loader import get_template from django.templatetags.static import StaticNode -from django.template.loaders.filesystem import Loader from django.test import TestCase import debug # pyflakes:ignore @@ -109,12 +109,12 @@ class TemplateChecksTestCase(TestCase): templates = {} def setUp(self): - self.loader = Loader() self.paths = list(get_template_paths()) self.paths.sort() + self.engine = engines['django'] for path in self.paths: try: - self.templates[path], _ = self.loader.load_template(path) + self.templates[path] = get_template(path).template except Exception: pass @@ -126,7 +126,7 @@ class TemplateChecksTestCase(TestCase): for path in self.paths: if not path in self.templates: try: - self.loader.load_template(path) + get_template(path) except Exception as e: errors.append((path, e)) if errors: From e6121ac0f8b7d2dc6c607d703e7c8f78d2db336d Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 21:06:42 +0000 Subject: [PATCH 20/39] Fixed a bad filter argument found by the Django 1.8 code. - Legacy-Id: 12408 --- ietf/doc/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index c0ba3e4d8..6e92929fd 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -277,7 +277,7 @@ class DocumentInfo(models.Model): if isinstance(self, Document): return RelatedDocument.objects.filter(target__document=self, relationship__in=relationship).select_related('source') elif isinstance(self, DocHistory): - return RelatedDocHistory.objects.filter(target__document=self, relationship__in=relationship).select_related('source') + return RelatedDocHistory.objects.filter(target__document=self.doc, relationship__in=relationship).select_related('source') else: return RelatedDocument.objects.none() From cec0f338170802069eebc9fea487ddc86af815af Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 28 Nov 2016 21:20:28 +0000 Subject: [PATCH 21/39] Removed unused stuff. - Legacy-Id: 12409 --- ietf/utils/tests.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index d0c4ca602..5399a807a 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -13,7 +13,7 @@ from email.mime.multipart import MIMEMultipart from django.conf import settings from django.core.management import call_command -from django.template import Context, engines +from django.template import Context from django.template.defaulttags import URLNode from django.template.loader import get_template from django.templatetags.static import StaticNode @@ -111,7 +111,6 @@ class TemplateChecksTestCase(TestCase): def setUp(self): self.paths = list(get_template_paths()) self.paths.sort() - self.engine = engines['django'] for path in self.paths: try: self.templates[path] = get_template(path).template From be272a019a07ffecfb649916ba41d651ce84d9f6 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 12:53:21 +0000 Subject: [PATCH 22/39] Changed settings to use the new TEMPLATES dictionary instead of the deprecated individual TEMPLATE_* settings. - Legacy-Id: 12444 --- ietf/settings.py | 65 +++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/ietf/settings.py b/ietf/settings.py index 235477173..1c002ecf1 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -21,7 +21,6 @@ from ietf import __version__ import debug DEBUG = True -TEMPLATE_DEBUG = DEBUG debug.debug = DEBUG # Valid values: @@ -216,13 +215,38 @@ SESSION_SAVE_EVERY_REQUEST = True PREFERENCES_COOKIE_AGE = 60 * 60 * 24 * 365 * 50 # Age of cookie, in seconds: 50 years -TEMPLATE_LOADERS = ( - ('django.template.loaders.cached.Loader', ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - )), - 'ietf.dbtemplate.template.Loader', -) +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [ + BASE_DIR + "/templates", + BASE_DIR + "/secr/templates", + ], + 'OPTIONS': { + 'context_processors': [ + 'django.contrib.auth.context_processors.auth', + 'django.template.context_processors.debug', + 'django.template.context_processors.i18n', + 'django.template.context_processors.request', + 'django.template.context_processors.media', + #'django.template.context_processors.tz', + 'django.contrib.messages.context_processors.messages', + 'ietf.context_processors.server_mode', + 'ietf.context_processors.debug_mark_queries_from_view', + 'ietf.context_processors.revision_info', + 'ietf.secr.context_processors.secr_revision_info', + 'ietf.context_processors.rfcdiff_base_url', + ], + 'loaders': [ + ('django.template.loaders.cached.Loader', ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + )), + 'ietf.dbtemplate.template.Loader', + ] + }, + }, +] MIDDLEWARE_CLASSES = ( 'django.middleware.csrf.CsrfViewMiddleware', @@ -240,25 +264,6 @@ MIDDLEWARE_CLASSES = ( ROOT_URLCONF = 'ietf.urls' -TEMPLATE_DIRS = ( - BASE_DIR + "/templates", - BASE_DIR + "/secr/templates", -) - -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.contrib.auth.context_processors.auth', - 'django.core.context_processors.debug', - 'django.core.context_processors.i18n', - 'django.core.context_processors.request', - 'django.core.context_processors.media', - 'django.contrib.messages.context_processors.messages', - 'ietf.context_processors.server_mode', - 'ietf.context_processors.debug_mark_queries_from_view', - 'ietf.context_processors.revision_info', - 'ietf.secr.context_processors.secr_revision_info', - 'ietf.context_processors.rfcdiff_base_url', -) - # Additional locations of static files (in addition to each app's static/ dir) STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), @@ -755,7 +760,7 @@ for app in INSTALLED_APPS: # Add DEV_APPS to INSTALLED_APPS INSTALLED_APPS += DEV_APPS MIDDLEWARE_CLASSES += DEV_MIDDLEWARE_CLASSES -TEMPLATE_CONTEXT_PROCESSORS += DEV_TEMPLATE_CONTEXT_PROCESSORS +TEMPLATES[0]['OPTIONS']['context_processors'] += DEV_TEMPLATE_CONTEXT_PROCESSORS # We provide a secret key only for test and development modes. It's @@ -764,7 +769,9 @@ TEMPLATE_CONTEXT_PROCESSORS += DEV_TEMPLATE_CONTEXT_PROCESSORS # publicly available, for instance from the source repository. if SERVER_MODE != 'production': # stomp out the cached template loader, it's annoying - TEMPLATE_LOADERS = tuple(l for e in TEMPLATE_LOADERS for l in (e[1] if isinstance(e, tuple) and "cached.Loader" in e[0] else (e,))) + loaders = TEMPLATES[0]['OPTIONS']['loaders'] + loaders = tuple(l for e in loaders for l in (e[1] if isinstance(e, tuple) and "cached.Loader" in e[0] else (e,))) + TEMPLATES[0]['OPTIONS']['loaders'] = loaders CACHES = { 'default': { From cfd898b767de9d72450f21d5f5775db76942f0e4 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 12:55:20 +0000 Subject: [PATCH 23/39] Updated the proceedings_templates fixture to provide the base proceedings template needed by tests, instead of a copy already instantiated for a specific meeting. - Legacy-Id: 12445 --- .../fixtures/proceedings_templates.json | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/ietf/meeting/fixtures/proceedings_templates.json b/ietf/meeting/fixtures/proceedings_templates.json index a2d1da672..1594debff 100644 --- a/ietf/meeting/fixtures/proceedings_templates.json +++ b/ietf/meeting/fixtures/proceedings_templates.json @@ -1 +1,65 @@ -[{"fields": {"group": 1, "title": "IETF 97 Proceedings Overview", "variables": null, "content": "The Internet Engineering Task Force (IETF) provides a forum for working groups to coordinate technical development of new protocols. Its most important function is the development and selection of standards within the Internet protocol suite.\n\nThe IETF began in January 1986 as a forum for technical coordination by contractors for the then US Defense Advanced Research Projects Agency (DARPA), working on the ARPANET, US Defense Data Network (DDN), and the Internet core gateway system. Since that time, the IETF has grown into a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the Internet.\n\nThe IETF mission includes:\n\n* Identifying and proposing solutions to pressing operational and technical problems in the Internet\n* Specifying the development or usage of protocols and the near-term architecture, to solve technical problems for the Internet\n* Facilitating technology transfer from the Internet Research Task Force (IRTF) to the wider Internet community;and\n* Providing a forum for the exchange of relevant information within the Internet community between vendors, users, researchers, agency contractors, and network managers.\n\nTechnical activities in the IETF are addressed within working groups. All working groups are organized roughly by function into seven areas. Each area is led by one or more Area Directors who have primary responsibility for that one area of IETF activity. Together with the Chair of the IETF/IESG, these Area Directors comprise the Internet Engineering Steering Group (IESG).\n\n=================== =================================== ========================\nName Area Email\n=================== =================================== ========================\nJari Arkko IETF Chair chair@ietf.org\nJari Arkko General Area jari.arkko@piuha.net\nAlia Atlas Routing Area akatlas@gmail.com\nDeborah Brungard Routing Areas db3546@att.com\nBen Campbell Applications and Real-Time Area ben@nostrum.com\nBenoit Claise Operations and Management Area bclaise@cisco.com\nAlissa Cooper Applications and Real-Time Area alissa@cooperw.in\nSpencer Dawkins Transport Area spencerdawkins.ietf@gmail.com\nStephen Farrell Security Area stephen.farrell@cs.tcd.ie\nJoel Jaeggli Operations and Management Area joelja@bogus.com\nSuresh Krishnan Internet Area suresh.krishnan@ericsson.com\nMirja K\u00fchlewind Transport Area ietf@kuehlewind.net\nTerry Manderson Internet Area terry.manderson@icann.org\nAlexey Melnikov Applications and Real-Time Area aamelnikov@fastmail.fm\nKathleen Moriarty Security Area Kathleen.Moriarty.ietf@gmail.com\nAlvaro Retana Routing Area aretana@cisco.com\n=================== =================================== ========================\n\n\nLiaison and ex-officio members include:\n\n=================== =================================== ========================\nOlaf Kolkman IAB Chair iab-chair@iab.org\nDanny McPherson IAB Liaison danny@tcb.net\nMichelle Cotton IANA Liaison iana@iana.org\nSandy Ginoza RFC Editor Liaison rfc-editor@rfc-editor.org\nAlexa Morris IETF Secretariat Liaison exec-director@ietf.org\n=================== =================================== ========================\n\n\nThe IETF has a Secretariat, which is managed by Association Management Solutions, LLC (AMS) in Fremont, California.The IETF Executive Director is Alexa Morris (exec-director@ietf.org).\n\n\nOther personnel that provide full-time support to the Secretariat include:\n\n========================= ===================================\nSenior Meeting Planner Marcia Beaulieu\nProject Manager Stephanie McCammon\nMeeting Regsitrar Maddy Conner\nProject Manager Cindy Morgan\nProject Manager Amy Vezza\n========================= ===================================\n\nTo contact the Secretariat, please refer to the addresses and URLs provided on the IETF Secretariat Web page.\n\nThe IETF also has a general Administrative Support Activity headed by the IETF Administrative Director, Ray Pelletier iad@ietf.org\n\nThe working groups conduct their business during the tri-annual IETF meetings, at interim working group meetings, and via electronic mail on mailing lists established for each group. The tri-annual IETF meetings are 4.5 days in duration, and consist of working group sessions, training sessions, and plenary sessions. The plenary sessions include technical presentations, status reports, and an open IESG meeting.\n\nFollowing each meeting, the IETF Secretariat publishes meeting proceedings, which contain reports from all of the groups that met, as well as presentation slides, where available. The proceedings also include a summary of the standards-related activities that took place since the previous IETF meeting.\n\nMeeting minutes, working group charters (including information about the working group mailing lists), and general information on current IETF activities are available on the IETF Web site at https://www.ietf.org.\n", "path": "/meeting/proceedings/97/overview.rst", "type": "rst"}, "model": "dbtemplate.dbtemplate", "pk": 179}, {"fields": {"order": 0, "used": true, "name": "reStructuredText", "desc": ""}, "model": "name.dbtemplatetypename", "pk": "rst"}, {"fields": {"charter": null, "unused_states": [], "description": "", "parent": null, "list_email": "", "acronym": "ietf", "comments": "", "list_subscribe": "", "state": "active", "time": "2012-02-26T00:21:36", "unused_tags": [], "list_archive": "", "type": "ietf", "name": "IETF"}, "model": "group.group", "pk": 1}, {"fields": {"order": 0, "used": true, "name": "Active", "desc": ""}, "model": "name.groupstatename", "pk": "active"}, {"fields": {"order": 0, "used": true, "verbose_name": "Internet Engineering Task Force", "name": "IETF", "desc": ""}, "model": "name.grouptypename", "pk": "ietf"}] +[ + { + "fields": { + "group": 1, + "title": "IETF 97 Proceedings Overview", + "variables": null, + "content": "The Internet Engineering Task Force (IETF) provides a forum for working groups to coordinate technical development of new protocols. Its most important function is the development and selection of standards within the Internet protocol suite.\n\nThe IETF began in January 1986 as a forum for technical coordination by contractors for the then US Defense Advanced Research Projects Agency (DARPA), working on the ARPANET, US Defense Data Network (DDN), and the Internet core gateway system. Since that time, the IETF has grown into a large open international community of network designers, operators, vendors, and researchers concerned with the evolution of the Internet architecture and the smooth operation of the Internet.\n\nThe IETF mission includes:\n\n* Identifying and proposing solutions to pressing operational and technical problems in the Internet\n* Specifying the development or usage of protocols and the near-term architecture, to solve technical problems for the Internet\n* Facilitating technology transfer from the Internet Research Task Force (IRTF) to the wider Internet community;and\n* Providing a forum for the exchange of relevant information within the Internet community between vendors, users, researchers, agency contractors, and network managers.\n\nTechnical activities in the IETF are addressed within working groups. All working groups are organized roughly by function into seven areas. Each area is led by one or more Area Directors who have primary responsibility for that one area of IETF activity. Together with the Chair of the IETF/IESG, these Area Directors comprise the Internet Engineering Steering Group (IESG).\n\n=================== =================================== ========================\nName Area Email\n=================== =================================== ========================\nJari Arkko IETF Chair chair@ietf.org\nJari Arkko General Area jari.arkko@piuha.net\nAlia Atlas Routing Area akatlas@gmail.com\nDeborah Brungard Routing Areas db3546@att.com\nBen Campbell Applications and Real-Time Area ben@nostrum.com\nBenoit Claise Operations and Management Area bclaise@cisco.com\nAlissa Cooper Applications and Real-Time Area alissa@cooperw.in\nSpencer Dawkins Transport Area spencerdawkins.ietf@gmail.com\nStephen Farrell Security Area stephen.farrell@cs.tcd.ie\nJoel Jaeggli Operations and Management Area joelja@bogus.com\nSuresh Krishnan Internet Area suresh.krishnan@ericsson.com\nMirja Kühlewind Transport Area ietf@kuehlewind.net\nTerry Manderson Internet Area terry.manderson@icann.org\nAlexey Melnikov Applications and Real-Time Area aamelnikov@fastmail.fm\nKathleen Moriarty Security Area Kathleen.Moriarty.ietf@gmail.com\nAlvaro Retana Routing Area aretana@cisco.com\n=================== =================================== ========================\n\n\nLiaison and ex-officio members include:\n\n=================== =================================== ========================\nOlaf Kolkman IAB Chair iab-chair@iab.org\nDanny McPherson IAB Liaison danny@tcb.net\nMichelle Cotton IANA Liaison iana@iana.org\nSandy Ginoza RFC Editor Liaison rfc-editor@rfc-editor.org\nAlexa Morris IETF Secretariat Liaison exec-director@ietf.org\n=================== =================================== ========================\n\n\nThe IETF has a Secretariat, which is managed by Association Management Solutions, LLC (AMS) in Fremont, California.The IETF Executive Director is Alexa Morris (exec-director@ietf.org).\n\n\nOther personnel that provide full-time support to the Secretariat include:\n\n========================= ===================================\nSenior Meeting Planner Marcia Beaulieu\nProject Manager Stephanie McCammon\nMeeting Regsitrar Maddy Conner\nProject Manager Cindy Morgan\nProject Manager Amy Vezza\n========================= ===================================\n\nTo contact the Secretariat, please refer to the addresses and URLs provided on the IETF Secretariat Web page.\n\nThe IETF also has a general Administrative Support Activity headed by the IETF Administrative Director, Ray Pelletier iad@ietf.org\n\nThe working groups conduct their business during the tri-annual IETF meetings, at interim working group meetings, and via electronic mail on mailing lists established for each group. The tri-annual IETF meetings are 4.5 days in duration, and consist of working group sessions, training sessions, and plenary sessions. The plenary sessions include technical presentations, status reports, and an open IESG meeting.\n\nFollowing each meeting, the IETF Secretariat publishes meeting proceedings, which contain reports from all of the groups that met, as well as presentation slides, where available. The proceedings also include a summary of the standards-related activities that took place since the previous IETF meeting.\n\nMeeting minutes, working group charters (including information about the working group mailing lists), and general information on current IETF activities are available on the IETF Web site at https://www.ietf.org.\n", + "path": "/meeting/proceedings/defaults/overview.rst", + "type": "rst" + }, + "model": "dbtemplate.dbtemplate", + "pk": 179 + }, + { + "fields": { + "order": 0, + "used": true, + "name": "reStructuredText", + "desc": "" + }, + "model": "name.dbtemplatetypename", + "pk": "rst" + }, + { + "fields": { + "charter": null, + "unused_states": [], + "description": "", + "parent": null, + "list_email": "", + "acronym": "ietf", + "comments": "", + "list_subscribe": "", + "state": "active", + "time": "2012-02-26T00:21:36", + "unused_tags": [], + "list_archive": "", + "type": "ietf", + "name": "IETF" + }, + "model": "group.group", + "pk": 1 + }, + { + "fields": { + "order": 0, + "used": true, + "name": "Active", + "desc": "" + }, + "model": "name.groupstatename", + "pk": "active" + }, + { + "fields": { + "order": 0, + "used": true, + "verbose_name": "Internet Engineering Task Force", + "name": "IETF", + "desc": "" + }, + "model": "name.grouptypename", + "pk": "ietf" + } +] From b897519fffde12dd0e7d1ed0b9a143fdffe20561 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 12:56:53 +0000 Subject: [PATCH 24/39] Changed the test runner to use the verbosity set on the command line when loading fixtures. - Legacy-Id: 12446 --- ietf/utils/test_runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index f4ad15d9c..97ee5ae6f 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -84,7 +84,7 @@ def safe_create_1(self, verbosity, *args, **kwargs): if settings.GLOBAL_TEST_FIXTURES: print " Loading global test fixtures: %s" % ", ".join(settings.GLOBAL_TEST_FIXTURES) loadable = [f for f in settings.GLOBAL_TEST_FIXTURES if "." not in f] - call_command('loaddata', *loadable, verbosity=0, commit=False, database="default") + call_command('loaddata', *loadable, verbosity=verbosity, commit=False, database="default") for f in settings.GLOBAL_TEST_FIXTURES: if f not in loadable: From 8cf6b0010b88f4644cdf04f4903e19818acf5eb4 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 14:10:35 +0000 Subject: [PATCH 25/39] Added a template string_if_invalid setting to TEMPLATES when DEBUG is True. - Legacy-Id: 12450 --- ietf/settings.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ietf/settings.py b/ietf/settings.py index 524e25d5e..3d58b4928 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -248,6 +248,10 @@ TEMPLATES = [ }, ] +if DEBUG: + TEMPLATES[0]['OPTIONS']['string_if_invalid'] = "** No value found for '%s' **" + + MIDDLEWARE_CLASSES = ( 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.common.CommonMiddleware', From 1d5a7a692a4077490abe52c3151541c9a061d4d5 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 14:12:19 +0000 Subject: [PATCH 26/39] Added a DB consistency check, and 2 new doc.statetype values found by the check for consistency. - Legacy-Id: 12451 --- ietf/doc/models.py | 15 +++++++++++++++ ietf/name/fixtures/names.json | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 083742ba5..499874bd5 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -3,6 +3,7 @@ import datetime, os from django.db import models +from django.core import checks from django.core.exceptions import ValidationError from django.core.urlresolvers import reverse as urlreverse from django.core.validators import URLValidator @@ -26,6 +27,20 @@ class StateType(models.Model): def __unicode__(self): return self.slug +@checks.register('db-consistency') +def check_statetype_slugs(app_configs, **kwargs): + errors = [] + state_type_slugs = [ t.slug for t in StateType.objects.all() ] + for type in DocTypeName.objects.all(): + if not type.slug in state_type_slugs: + errors.append(checks.Error( + "The document type '%s (%s)' does not have a corresponding entry in the doc.StateType table" % (type.name, type.slug), + hint="You should add a doc.StateType entry with a slug '%s' to match the DocTypeName slug."%(type.slug), + obj=type, + id='datatracker.doc.E0015', + )) + return errors + class State(models.Model): type = models.ForeignKey(StateType) slug = models.SlugField() diff --git a/ietf/name/fixtures/names.json b/ietf/name/fixtures/names.json index 255631d25..4f92fd7e2 100644 --- a/ietf/name/fixtures/names.json +++ b/ietf/name/fixtures/names.json @@ -2728,6 +2728,20 @@ "model": "doc.statetype", "pk": "review" }, +{ + "fields": { + "label": "Shepherd's writeup state" + }, + "model": "doc.statetype", + "pk": "shepwrit" +}, +{ + "fields": { + "label": "Liaison state" + }, + "model": "doc.statetype", + "pk": "liaison" +}, { "fields": { "used": true, From bc683ccc67a763df35e39db542017e39accc3909 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 14:13:00 +0000 Subject: [PATCH 27/39] Fixed a type issue found by the new django 1.8 query type checks. - Legacy-Id: 12452 --- ietf/meeting/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index 52ad6816d..6506bd56e 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -301,7 +301,7 @@ class InterimSessionModelForm(forms.ModelForm): name=filename, rev='00', external_url='{}-00.txt'.format(filename)) - doc.set_state(State.objects.get(type=doc.type, slug='active')) + doc.set_state(State.objects.get(type__slug=doc.type.slug, slug='active')) DocAlias.objects.create(name=doc.name, document=doc) self.instance.sessionpresentation_set.create(document=doc, rev=doc.rev) NewRevisionDocEvent.objects.create( From 3b6f30fc9a957dd0b3556a523e4d07e2b95ac67b Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 14:38:37 +0000 Subject: [PATCH 28/39] Fixed a type mismatch (no_review_from_teams_on_doc() is called with both Document and DocHistory instances; this has to be taken into account) - Legacy-Id: 12453 --- ietf/review/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ietf/review/utils.py b/ietf/review/utils.py index ff499d23d..82dce3dcd 100644 --- a/ietf/review/utils.py +++ b/ietf/review/utils.py @@ -5,6 +5,8 @@ from django.db.models import Q, Max, F from django.core.urlresolvers import reverse as urlreverse from django.contrib.sites.models import Site +import debug # pyflakes:ignore + from ietf.group.models import Group, Role from ietf.doc.models import (Document, ReviewRequestDocEvent, State, LastCallDocEvent, TelechatDocEvent, @@ -62,9 +64,9 @@ def augment_review_requests_with_events(review_reqs): def no_review_from_teams_on_doc(doc, rev): return Group.objects.filter( - reviewrequest__doc=doc, + reviewrequest__doc__name=doc.name, reviewrequest__reviewed_rev=rev, - reviewrequest__state="no-review-version", + reviewrequest__state__slug="no-review-version", ).distinct() def unavailable_periods_to_list(past_days=14): From 18f65e09a0b78f345ef09ee86cf260d848253ccd Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 15:23:27 +0000 Subject: [PATCH 29/39] Removed bad select_related names. - Legacy-Id: 12456 --- ietf/idindex/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/idindex/index.py b/ietf/idindex/index.py index 08f2feac3..cb47aa9d2 100644 --- a/ietf/idindex/index.py +++ b/ietf/idindex/index.py @@ -101,7 +101,7 @@ def all_id2_txt(): # this returns a lot of data so try to be efficient drafts = Document.objects.filter(type="draft").exclude(name__startswith="rfc").order_by('name') - drafts = drafts.select_related('group', 'group__parent', 'ad', 'ad__email', 'intended_std_level', 'shepherd', 'shepherd__email') + drafts = drafts.select_related('group', 'group__parent', 'ad', 'intended_std_level', 'shepherd', ) drafts = drafts.prefetch_related("states") rfc_aliases = dict(DocAlias.objects.filter(name__startswith="rfc", From 38649119c034c644fb5f1e87015a99495408bb28 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 17:39:20 +0000 Subject: [PATCH 30/39] - Legacy-Id: 12458 --- env/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/env/.gitignore b/env/.gitignore index e340628a0..060a7c1d5 100644 --- a/env/.gitignore +++ b/env/.gitignore @@ -5,3 +5,4 @@ /local /lib /include +/pip-selfcheck.json From 8f6e51839f7fa2e7780c6e2724992fa07cc24bab Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 5 Dec 2016 19:04:27 +0000 Subject: [PATCH 31/39] Fixed some additional places to use the new settings.TEMPLATES structure. - Legacy-Id: 12459 --- ietf/settings_testcrawl.py | 2 +- ietf/utils/test_runner.py | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ietf/settings_testcrawl.py b/ietf/settings_testcrawl.py index 6204fde91..506ceeab0 100644 --- a/ietf/settings_testcrawl.py +++ b/ietf/settings_testcrawl.py @@ -7,7 +7,7 @@ from settings import * # pyflakes:ignore -TEMPLATE_LOADERS = ( +TEMPLAT[0]['OPTIONS']['loaders'] = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 272d0c9bc..d1c2b84d4 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -112,6 +112,7 @@ class TemplateCoverageLoader(BaseLoader): is_usable = True def load_template_source(self, template_name, dirs): + global template_coverage_collection, loaded_templates if template_coverage_collection == True: loaded_templates.add(str(template_name)) raise TemplateDoesNotExist @@ -159,7 +160,7 @@ def get_template_paths(apps=None): # TODO: Add app templates to the full list, if we are using # django.template.loaders.app_directories.Loader templates = set() - templatepaths = settings.TEMPLATE_DIRS + templatepaths = settings.TEMPLATES[0]['DIRS'] for templatepath in templatepaths: for dirpath, dirs, files in os.walk(templatepath): if ".svn" in dirs: @@ -395,7 +396,7 @@ class IetfTestRunner(DiscoverRunner): }, } - settings.TEMPLATE_LOADERS = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATE_LOADERS + settings.TEMPLATES[0]['OPTIONS']['loaders'] = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATES[0]['OPTIONS']['loaders'] template_coverage_collection = True settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + settings.MIDDLEWARE_CLASSES @@ -412,9 +413,9 @@ class IetfTestRunner(DiscoverRunner): print " Changing SITE_ID to '1' during testing." settings.SITE_ID = 1 - if settings.TEMPLATE_STRING_IF_INVALID != '': - print " Changing TEMPLATE_STRING_IF_INVALID to '' during testing." - settings.TEMPLATE_STRING_IF_INVALID = '' + if settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] != '': + print(" Changing settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] to '' during testing") + settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] = '' assert not settings.IDTRACKER_BASE_URL.endswith('/') From 7d27849ee34b7a717919484d5eeafc1e659733bf Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 11:29:23 +0000 Subject: [PATCH 32/39] Fixed a typo. - Legacy-Id: 12469 --- ietf/settings_testcrawl.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ietf/settings_testcrawl.py b/ietf/settings_testcrawl.py index 506ceeab0..8974816f8 100644 --- a/ietf/settings_testcrawl.py +++ b/ietf/settings_testcrawl.py @@ -6,8 +6,9 @@ # from settings import * # pyflakes:ignore +from settings import TEMPLATES -TEMPLAT[0]['OPTIONS']['loaders'] = ( +TEMPLATES[0]['OPTIONS']['loaders'] = ( ('django.template.loaders.cached.Loader', ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', From db7e554c5e72f488b22d325e976b86a13d8e04c6 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 11:31:31 +0000 Subject: [PATCH 33/39] Changed to using TestCase from ietf.utils, and turned off coverage checking when loading templates in TemplateChecksTestCase. - Legacy-Id: 12470 --- ietf/api/tests.py | 4 +++- ietf/utils/tests.py | 7 ++++--- ietf/utils/tests_restapi.py | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ietf/api/tests.py b/ietf/api/tests.py index abac94b99..41829d678 100644 --- a/ietf/api/tests.py +++ b/ietf/api/tests.py @@ -2,7 +2,7 @@ import os import sys import json -from django.test import Client, TestCase +from django.test import Client from django.conf import settings from django.utils.importlib import import_module from django.db import models @@ -12,6 +12,8 @@ from tastypie.test import ResourceTestCaseMixin import debug # pyflakes:ignore +from ietf.utils.test_utils import TestCase + OMITTED_APPS = ( 'ietf.secr.meetings', 'ietf.secr.proceedings', diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index 33a3a040a..d2608283f 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -18,7 +18,6 @@ from django.template import Context from django.template.defaulttags import URLNode from django.template.loader import get_template from django.templatetags.static import StaticNode -from django.test import TestCase import debug # pyflakes:ignore @@ -26,7 +25,8 @@ import ietf.urls from ietf.utils.management.commands import pyflakes from ietf.utils.mail import send_mail_text, send_mail_mime, outbox from ietf.utils.test_data import make_test_data -from ietf.utils.test_runner import get_template_paths +from ietf.utils.test_runner import get_template_paths, set_coverage_checking +from ietf.utils.test_utils import TestCase from ietf.group.models import Group skip_wiki_glue_testing = False @@ -104,13 +104,13 @@ def get_callbacks(urllist): return list(callbacks) -debug.debug = True class TemplateChecksTestCase(TestCase): paths = [] templates = {} def setUp(self): + set_coverage_checking(False) self.paths = list(get_template_paths()) self.paths.sort() for path in self.paths: @@ -120,6 +120,7 @@ class TemplateChecksTestCase(TestCase): pass def tearDown(self): + set_coverage_checking(True) pass def test_parse_templates(self): diff --git a/ietf/utils/tests_restapi.py b/ietf/utils/tests_restapi.py index 57dc4f6a3..bc27ac68a 100644 --- a/ietf/utils/tests_restapi.py +++ b/ietf/utils/tests_restapi.py @@ -4,11 +4,11 @@ import debug debug.debug = True from django.core.urlresolvers import reverse -from django.test import TestCase from tastypie.test import ResourceTestCaseMixin from ietf.utils.test_data import make_test_data +from ietf.utils.test_utils import TestCase class RestApi(ResourceTestCaseMixin, TestCase): def list_recursively(self, resource, format): From 6304bfda698412c7fe9d0cb3e680b9b0e6303182 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 11:33:33 +0000 Subject: [PATCH 34/39] Fixed template_coverage_collection initialisation. Tweaked a message. Updated coverage numbers. - Legacy-Id: 12471 --- ietf/utils/test_runner.py | 10 ++++++---- release-coverage.json.gz | Bin 751952 -> 763160 bytes 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index d1c2b84d4..e899cdcf3 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -60,6 +60,7 @@ from django.core.management import call_command from django.core.urlresolvers import RegexURLResolver import debug # pyflakes:ignore +debug.debug = True import ietf import ietf.utils.mail @@ -397,7 +398,6 @@ class IetfTestRunner(DiscoverRunner): } settings.TEMPLATES[0]['OPTIONS']['loaders'] = ('ietf.utils.test_runner.TemplateCoverageLoader',) + settings.TEMPLATES[0]['OPTIONS']['loaders'] - template_coverage_collection = True settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + settings.MIDDLEWARE_CLASSES url_coverage_collection = True @@ -414,7 +414,7 @@ class IetfTestRunner(DiscoverRunner): settings.SITE_ID = 1 if settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] != '': - print(" Changing settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] to '' during testing") + print(" Changing TEMPLATES[0]['OPTIONS']['string_if_invalid'] to '' during testing") settings.TEMPLATES[0]['OPTIONS']['string_if_invalid'] = '' assert not settings.IDTRACKER_BASE_URL.endswith('/') @@ -490,14 +490,15 @@ class IetfTestRunner(DiscoverRunner): return test_apps, test_paths def run_tests(self, test_labels, extra_tests=[], **kwargs): + global old_destroy, old_create, test_database_name, template_coverage_collection + from django.db import connection + # Tests that involve switching back and forth between the real # database and the test database are way too dangerous to run # against the production database if socket.gethostname().split('.')[0] in ['core3', 'ietfa', 'ietfb', 'ietfc', ]: raise EnvironmentError("Refusing to run tests on production server") - global old_destroy, old_create, test_database_name - from django.db import connection old_create = connection.creation.__class__.create_test_db connection.creation.__class__.create_test_db = safe_create_1 old_destroy = connection.creation.__class__.destroy_test_db @@ -511,6 +512,7 @@ class IetfTestRunner(DiscoverRunner): self.test_apps, self.test_paths = self.get_test_paths(test_labels) if self.check_coverage: + template_coverage_collection = True extra_tests += [ CoverageTest(test_runner=self, methodName='url_coverage_test'), CoverageTest(test_runner=self, methodName='template_coverage_test'), diff --git a/release-coverage.json.gz b/release-coverage.json.gz index f51d4211af10e6f0eb645deb970e9f0847664392..fca112d73f9a4bbee0ccee0d64023aba20b0f7e6 100644 GIT binary patch delta 125322 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 NMRn90F(mOf{|g{!vep0q delta 113957 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%0A2Nw+V-Ehd(+?vs9$L*by`8hE`L4s2 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 U)8Ri3`hO6u Date: Wed, 7 Dec 2016 12:20:27 +0000 Subject: [PATCH 35/39] Removed unused legacy code - Legacy-Id: 12473 --- ietf/legacy_router.py | 227 ------------------------------------------ ietf/settings.py | 8 -- 2 files changed, 235 deletions(-) delete mode 100644 ietf/legacy_router.py diff --git a/ietf/legacy_router.py b/ietf/legacy_router.py deleted file mode 100644 index c974c0c59..000000000 --- a/ietf/legacy_router.py +++ /dev/null @@ -1,227 +0,0 @@ -class LegacyRouter(object): - def db_for_read(self, model, **hints): - if model._meta.db_table in legacy_tables: - return 'legacy' - return None - - def db_for_write(self, model, **hints): - if model._meta.db_table in legacy_tables: - raise Exception("You can't write to the legacy table %s" % model._meta.db_table) - return None - - def allow_relation(self, obj1, obj2, **hints): - if (obj1._meta.db_table in legacy_tables) != (obj2._meta.db_table in legacy_tables): - return False - return None - - def allow_syncdb(self, db, model): - if db == 'legacy': - return False - if model._meta.db_table in legacy_tables: - return False - return None - -legacy_tables = set(( - "acronym", - "agenda_cat", - "agenda_items", - "all_id", - "announced_from", - "announced_to", - "announcements", - "area_directors", - "area_group", - "area_status", - "areas", - "ballot_info", - "ballots", - "ballots_comment", - "ballots_discuss", - "bash_agenda", - "chairs", - "chairs_history", - "document_comments", - "draft_versions_mirror", - "dt_request", - "email_addresses", - "from_bodies", - "g_chairs", - "g_editors", - "g_secretaries", - "g_secretary", - "g_status", - "g_tech_advisors", - "g_type", - "general_info", - "goals_milestones", - "group_flag", - "group_internal", - "groups_ietf", - "hit_counter", - "id_approved_detail", - "id_authors", - "id_dates", - "id_intended_status", - "id_internal", - "id_restricted_word", - "id_status", - "id_submission_detail", - "id_submission_env", - "id_submission_status", - "idst_users", - "iesg_history", - "iesg_login", - "iesg_password", - "ietfauth_ietfuserprofile", - "ietfauth_usermap", - "ietfworkflows_annotationtag", - "ietfworkflows_annotationtagobjectrelation", - "ietfworkflows_objectannotationtaghistoryentry", - "ietfworkflows_objecthistoryentry", - "ietfworkflows_objectstreamhistoryentry", - "ietfworkflows_objectworkflowhistoryentry", - "ietfworkflows_statedescription", - "ietfworkflows_stateobjectrelationmetadata", - "ietfworkflows_stream", - "ietfworkflows_streamdelegate", - "ietfworkflows_streamedid", - "ietfworkflows_wgworkflow", - "ietfworkflows_wgworkflow_selected_states", - "ietfworkflows_wgworkflow_selected_tags", - "imported_mailing_list", - "interim_info", - "interim_meetings_acronym", - "interim_meetings_groups_ietf", - "interim_meetings_interim_info", - "interim_meetings_interim_new", - "interim_meetings_meetings", - "interim_meetings_minutes", - "interim_meetings_slides", - "internet_drafts", - "ipr_contacts", - "ipr_detail", - "ipr_ids", - "ipr_licensing", - "ipr_notifications", - "ipr_rfcs", - "ipr_selecttype", - "ipr_updates", - "irtf", - "irtf_chairs", - "liaison_detail", - "liaison_detail_temp", - "liaison_managers", - "liaison_purpose", - "liaisons_interim", - "liaisons_members", - "liaisons_outgoingliaisonapproval", - "liaisons_sdoauthorizedindividual", - "lists_email", - "lists_email_refs", - "lists_list", - "mailing_list", - "mailinglists_domain", - "mailinglists_domain_approvers", - "management_issues", - "meeting_agenda_count", - "meeting_attendees", - "meeting_conflict", - "meeting_conflict_groups", - "meeting_hours", - "meeting_rooms", - "meeting_sessionstatusname", - "meeting_times", - "meeting_venues", - "meetings", - "messages", - "migrate_stat", - "minutes", - "nomcom", - "nomcom_members", - "non_session", - "non_session_ref", - "none_wg_mailing_list", - "not_meeting_groups", - "old_document_comments", - "outstanding_tasks", - "permissions_objectpermission", - "permissions_objectpermissioninheritanceblock", - "permissions_permission", - "permissions_permission_content_types", - "permissions_principalrolerelation", - "permissions_role", - "person_or_org_info", - "phone_numbers", - "postal_addresses", - "print_name", - "prior_address", - "proceedings", - "pwg_cat", - "ref_doc_states_new", - "ref_next_states_new", - "ref_resp", - "replaced_ids", - "request", - "rfc_authors", - "rfc_editor_queue_mirror", - "rfc_editor_queue_mirror_refs", - "rfc_index_mirror", - "rfc_intend_status", - "rfc_status", - "rfcs", - "rfcs_obsolete", - "roll_call", - "scheduled_announcements", - "scheduled_announcements_temp", - "sdo_chairs", - "sdos", - "secretariat_staff", - "session_conflicts", - "session_names", - "session_request_activities", - "session_status", - "slide_types", - "slides", - "staff_work_detail", - "staff_work_history", - "sub_state", - "switches", - "task_status", - "telechat", - "telechat_dates", - "telechat_minutes", - "telechat_users", - "temp_admins", - "temp_agenda71166", - "temp_id_authors", - "temp_telechat_attendees", - "temp_txt", - "templates", - "updated_ipr", - "uploads", - "uploads_temp", - "users", - "web_gm_chairs", - "web_login_info", - "web_user_info", - "wg_agenda", - "wg_meeting_sessions", - "wg_meeting_sessions_temp", - "wg_password", - "wg_proceedings_activities", - "wg_www_pages", - "wgchairs_protowriteup", - "wgchairs_wgdelegate", - "workflows_state", - "workflows_state_transitions", - "workflows_stateinheritanceblock", - "workflows_stateobjectrelation", - "workflows_statepermissionrelation", - "workflows_transition", - "workflows_workflow", - "workflows_workflowmodelrelation", - "workflows_workflowobjectrelation", - "workflows_workflowpermissionrelation", -)) - - diff --git a/ietf/settings.py b/ietf/settings.py index 3d58b4928..7315fe06e 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -64,12 +64,6 @@ DATABASES = { #'PASSWORD': 'ietf', #'OPTIONS': {}, }, -# 'legacy': { -# 'NAME': 'ietf', -# 'ENGINE': 'django.db.backends.mysql', -# 'USER': 'ietf', -# #'PASSWORD': 'ietf', -# }, } DATABASE_TEST_OPTIONS = { @@ -157,8 +151,6 @@ WSGI_APPLICATION = "ietf.wsgi.application" AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', ) -#DATABASE_ROUTERS = ["ietf.legacy_router.LegacyRouter"] - # ------------------------------------------------------------------------ # Django/Python Logging Framework Modifications From 7fbf2e86092e49b2de6dc279973530cf34c86f98 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 18:27:57 +0000 Subject: [PATCH 36/39] Changed the deprecated model._meta.get_all_field_names() to a supported construct. - Legacy-Id: 12475 --- ietf/doc/views_stats.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/views_stats.py b/ietf/doc/views_stats.py index 38c183e67..6fa1a094b 100644 --- a/ietf/doc/views_stats.py +++ b/ietf/doc/views_stats.py @@ -36,7 +36,7 @@ def model_to_timeline_data(model, field='time', **kwargs): a JsonResponse() argument. The model must have a DateTimeField field. If the time field is named something else than 'time', the name must be supplied.""" - assert field in model._meta.get_all_field_names() + assert field in [ f.name for f in model._meta.get_fields() ] objects = ( model.objects.filter(**kwargs) .order_by('date') From 217b31f10953ac518afbe3244f415df66125a43c Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 19:28:01 +0000 Subject: [PATCH 37/39] Made the RegexStringValidator deconstructible so we can generate migrations. - Legacy-Id: 12476 --- ietf/utils/validators.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ietf/utils/validators.py b/ietf/utils/validators.py index b00224399..a9fd387af 100644 --- a/ietf/utils/validators.py +++ b/ietf/utils/validators.py @@ -5,11 +5,12 @@ from __future__ import unicode_literals import re from django.core.exceptions import ValidationError +from django.utils.deconstruct import deconstructible - +@deconstructible class RegexStringValidator(object): - def __init__(self,): + def __init__(self): pass def __call__(self, value): @@ -28,5 +29,10 @@ class RegexStringValidator(object): 'Maybe you meant to write "-.*"? If you actually meant "-*", ' 'you can use "[-]*" instead to get past this error.') + def __eq__(self, other): + return isinstance(other, RegexStringValidator) + + def __ne__(self, other): + return not (self == other) validate_regular_expression_string = RegexStringValidator() From 53f343017e21a1d50c355a4ea9ee61ae7d71ce3b Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 19:40:18 +0000 Subject: [PATCH 38/39] Use models.DurationField from django directly now that it's available, instead of the inlined copy of the 1.8 DurationField code. - Legacy-Id: 12477 --- ietf/meeting/forms.py | 101 +----------------------------------------- 1 file changed, 1 insertion(+), 100 deletions(-) diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index 6506bd56e..b440dd566 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -1,14 +1,9 @@ -import datetime import os -import re import codecs from django import forms -from django.core.validators import ValidationError from django.db.models import Q -from django.forms.fields import Field -from django.utils.encoding import force_text -from django.utils import six +from django.forms.fields import DurationField from ietf.doc.models import Document, DocAlias, State, NewRevisionDocEvent from ietf.doc.utils import get_document_content @@ -26,100 +21,6 @@ from ietf.utils.fields import DatepickerDateField countries.insert(0, ('', '')) timezones.insert(0, ('', '-' * 9)) -# ------------------------------------------------- -# DurationField from Django 1.8 -# ------------------------------------------------- - - -def duration_string(duration): - days = duration.days - seconds = duration.seconds - microseconds = duration.microseconds - - minutes = seconds // 60 - seconds = seconds % 60 - - hours = minutes // 60 - minutes = minutes % 60 - - # string = '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds) - string = '{:02d}:{:02d}'.format(hours, minutes) - if days: - string = '{} '.format(days) + string - if microseconds: - string += '.{:06d}'.format(microseconds) - - return string - -custom_duration_re = re.compile( - r'^(?P\d+):(?P\d+)$' -) - -standard_duration_re = re.compile( - r'^' - r'(?:(?P-?\d+) (days?, )?)?' - r'((?:(?P\d+):)(?=\d+:\d+))?' - r'(?:(?P\d+):)?' - r'(?P\d+)' - r'(?:\.(?P\d{1,6})\d{0,6})?' - r'$' -) - -# Support the sections of ISO 8601 date representation that are accepted by -# timedelta -iso8601_duration_re = re.compile( - r'^P' - r'(?:(?P\d+(.\d+)?)D)?' - r'(?:T' - r'(?:(?P\d+(.\d+)?)H)?' - r'(?:(?P\d+(.\d+)?)M)?' - r'(?:(?P\d+(.\d+)?)S)?' - r')?' - r'$' -) - - -def parse_duration(value): - """Parses a duration string and returns a datetime.timedelta. - - The preferred format for durations in Django is '%d %H:%M:%S.%f'. - - Also supports ISO 8601 representation. - """ - match = custom_duration_re.match(value) - if not match: - match = standard_duration_re.match(value) - if not match: - match = iso8601_duration_re.match(value) - if match: - kw = match.groupdict() - if kw.get('microseconds'): - kw['microseconds'] = kw['microseconds'].ljust(6, '0') - kw = {k: float(v) for k, v in six.iteritems(kw) if v is not None} - return datetime.timedelta(**kw) - - -class DurationField(Field): - default_error_messages = { - 'invalid': 'Enter a valid duration.', - } - - def prepare_value(self, value): - if isinstance(value, datetime.timedelta): - return duration_string(value) - return value - - def to_python(self, value): - if value in self.empty_values: - return None - if isinstance(value, datetime.timedelta): - return value - value = parse_duration(force_text(value)) - if value is None: - raise ValidationError(self.error_messages['invalid'], code='invalid') - return value - - # ------------------------------------------------- # Helpers # ------------------------------------------------- From 19ec4586680d86e8c8c5f7a56ec050a60eb5e862 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Dec 2016 19:41:48 +0000 Subject: [PATCH 39/39] Added migrations for the model changes done for the Django 1.8 upgrade. - Legacy-Id: 12478 --- .../doc/migrations/0017_auto_20161207_1036.py | 29 ++++++++++++ .../ipr/migrations/0009_auto_20161207_1046.py | 44 +++++++++++++++++++ .../migrations/0012_auto_20161207_1036.py | 24 ++++++++++ .../migrations/0008_auto_20161207_1104.py | 24 ++++++++++ .../migrations/0041_auto_20161207_1137.py | 19 ++++++++ .../migrations/0011_auto_20161207_1046.py | 34 ++++++++++++++ .../migrations/0006_auto_20161207_1046.py | 20 +++++++++ .../migrations/0017_auto_20161207_1046.py | 19 ++++++++ 8 files changed, 213 insertions(+) create mode 100644 ietf/doc/migrations/0017_auto_20161207_1036.py create mode 100644 ietf/ipr/migrations/0009_auto_20161207_1046.py create mode 100644 ietf/liaisons/migrations/0012_auto_20161207_1036.py create mode 100644 ietf/mailtrigger/migrations/0008_auto_20161207_1104.py create mode 100644 ietf/meeting/migrations/0041_auto_20161207_1137.py create mode 100644 ietf/nomcom/migrations/0011_auto_20161207_1046.py create mode 100644 ietf/review/migrations/0006_auto_20161207_1046.py create mode 100644 ietf/submit/migrations/0017_auto_20161207_1046.py diff --git a/ietf/doc/migrations/0017_auto_20161207_1036.py b/ietf/doc/migrations/0017_auto_20161207_1036.py new file mode 100644 index 000000000..2485d57d0 --- /dev/null +++ b/ietf/doc/migrations/0017_auto_20161207_1036.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('doc', '0016_auto_20160927_0713'), + ] + + operations = [ + migrations.AlterField( + model_name='docevent', + name='type', + field=models.CharField(max_length=50, choices=[(b'new_revision', b'Added new revision'), (b'new_submission', b'Uploaded new revision'), (b'changed_document', b'Changed document metadata'), (b'added_comment', b'Added comment'), (b'added_message', b'Added message'), (b'deleted', b'Deleted document'), (b'changed_state', b'Changed state'), (b'changed_stream', b'Changed document stream'), (b'expired_document', b'Expired document'), (b'extended_expiry', b'Extended expiry of document'), (b'requested_resurrect', b'Requested resurrect'), (b'completed_resurrect', b'Completed resurrect'), (b'changed_consensus', b'Changed consensus'), (b'published_rfc', b'Published RFC'), (b'added_suggested_replaces', b'Added suggested replacement relationships'), (b'reviewed_suggested_replaces', b'Reviewed suggested replacement relationships'), (b'changed_group', b'Changed group'), (b'changed_protocol_writeup', b'Changed protocol writeup'), (b'changed_charter_milestone', b'Changed charter milestone'), (b'initial_review', b'Set initial review time'), (b'changed_review_announcement', b'Changed WG Review text'), (b'changed_action_announcement', b'Changed WG Action text'), (b'started_iesg_process', b'Started IESG process on document'), (b'created_ballot', b'Created ballot'), (b'closed_ballot', b'Closed ballot'), (b'sent_ballot_announcement', b'Sent ballot announcement'), (b'changed_ballot_position', b'Changed ballot position'), (b'changed_ballot_approval_text', b'Changed ballot approval text'), (b'changed_ballot_writeup_text', b'Changed ballot writeup text'), (b'changed_rfc_editor_note_text', b'Changed RFC Editor Note text'), (b'changed_last_call_text', b'Changed last call text'), (b'requested_last_call', b'Requested last call'), (b'sent_last_call', b'Sent last call'), (b'scheduled_for_telechat', b'Scheduled for telechat'), (b'iesg_approved', b'IESG approved document (no problem)'), (b'iesg_disapproved', b'IESG disapproved document (do not publish)'), (b'approved_in_minute', b'Approved in minute'), (b'iana_review', b'IANA review comment'), (b'rfc_in_iana_registry', b'RFC is in IANA registry'), (b'rfc_editor_received_announcement', b'Announcement was received by RFC Editor'), (b'requested_publication', b'Publication at RFC Editor requested'), (b'sync_from_rfc_editor', b'Received updated information from RFC Editor'), (b'requested_review', b'Requested review'), (b'assigned_review_request', b'Assigned review request'), (b'closed_review_request', b'Closed review request')]), + ), + migrations.AlterField( + model_name='dochistory', + name='tags', + field=models.ManyToManyField(to='name.DocTagName', blank=True), + ), + migrations.AlterField( + model_name='document', + name='tags', + field=models.ManyToManyField(to='name.DocTagName', blank=True), + ), + ] diff --git a/ietf/ipr/migrations/0009_auto_20161207_1046.py b/ietf/ipr/migrations/0009_auto_20161207_1046.py new file mode 100644 index 000000000..a1f4b7b5c --- /dev/null +++ b/ietf/ipr/migrations/0009_auto_20161207_1046.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipr', '0008_auto_20160720_0218'), + ] + + operations = [ + migrations.AlterField( + model_name='genericiprdisclosure', + name='holder_contact_email', + field=models.EmailField(max_length=254), + ), + migrations.AlterField( + model_name='holderiprdisclosure', + name='holder_contact_email', + field=models.EmailField(max_length=254), + ), + migrations.AlterField( + model_name='holderiprdisclosure', + name='ietfer_contact_email', + field=models.EmailField(max_length=254, blank=True), + ), + migrations.AlterField( + model_name='iprdisclosurebase', + name='submitter_email', + field=models.EmailField(max_length=254, blank=True), + ), + migrations.AlterField( + model_name='nondocspecificiprdisclosure', + name='holder_contact_email', + field=models.EmailField(max_length=254), + ), + migrations.AlterField( + model_name='thirdpartyiprdisclosure', + name='ietfer_contact_email', + field=models.EmailField(max_length=254), + ), + ] diff --git a/ietf/liaisons/migrations/0012_auto_20161207_1036.py b/ietf/liaisons/migrations/0012_auto_20161207_1036.py new file mode 100644 index 000000000..5c95dba1d --- /dev/null +++ b/ietf/liaisons/migrations/0012_auto_20161207_1036.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('liaisons', '0011_auto_20161013_1034'), + ] + + operations = [ + migrations.AlterField( + model_name='liaisonstatement', + name='tags', + field=models.ManyToManyField(to='name.LiaisonStatementTagName', blank=True), + ), + migrations.AlterField( + model_name='liaisonstatementgroupcontacts', + name='group', + field=models.ForeignKey(null=True, to='group.Group', unique=True), + ), + ] diff --git a/ietf/mailtrigger/migrations/0008_auto_20161207_1104.py b/ietf/mailtrigger/migrations/0008_auto_20161207_1104.py new file mode 100644 index 000000000..1558199ab --- /dev/null +++ b/ietf/mailtrigger/migrations/0008_auto_20161207_1104.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mailtrigger', '0007_add_interim_announce'), + ] + + operations = [ + migrations.AlterField( + model_name='mailtrigger', + name='cc', + field=models.ManyToManyField(related_name='used_in_cc', to='mailtrigger.Recipient', blank=True), + ), + migrations.AlterField( + model_name='mailtrigger', + name='to', + field=models.ManyToManyField(related_name='used_in_to', to='mailtrigger.Recipient', blank=True), + ), + ] diff --git a/ietf/meeting/migrations/0041_auto_20161207_1137.py b/ietf/meeting/migrations/0041_auto_20161207_1137.py new file mode 100644 index 000000000..5412bb9ba --- /dev/null +++ b/ietf/meeting/migrations/0041_auto_20161207_1137.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('meeting', '0040_fix_mext_meeting_materials'), + ] + + operations = [ + migrations.AlterField( + model_name='timeslot', + name='sessions', + field=models.ManyToManyField(help_text='Scheduled session, if any.', related_name='slots', through='meeting.SchedTimeSessAssignment', to='meeting.Session', blank=True), + ), + ] diff --git a/ietf/nomcom/migrations/0011_auto_20161207_1046.py b/ietf/nomcom/migrations/0011_auto_20161207_1046.py new file mode 100644 index 000000000..dc0ca7cbf --- /dev/null +++ b/ietf/nomcom/migrations/0011_auto_20161207_1046.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('nomcom', '0010_nominee_person'), + ] + + operations = [ + migrations.AlterField( + model_name='feedback', + name='author', + field=models.EmailField(max_length=254, verbose_name=b'Author', blank=True), + ), + migrations.AlterField( + model_name='feedback', + name='nominees', + field=models.ManyToManyField(to='nomcom.Nominee', blank=True), + ), + migrations.AlterField( + model_name='feedback', + name='positions', + field=models.ManyToManyField(to='nomcom.Position', blank=True), + ), + migrations.AlterField( + model_name='nomination', + name='nominator_email', + field=models.EmailField(max_length=254, verbose_name=b'Nominator Email', blank=True), + ), + ] diff --git a/ietf/review/migrations/0006_auto_20161207_1046.py b/ietf/review/migrations/0006_auto_20161207_1046.py new file mode 100644 index 000000000..66f61937e --- /dev/null +++ b/ietf/review/migrations/0006_auto_20161207_1046.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import ietf.utils.validators + + +class Migration(migrations.Migration): + + dependencies = [ + ('review', '0005_auto_20161130_0628'), + ] + + operations = [ + migrations.AlterField( + model_name='reviewersettings', + name='filter_re', + field=models.CharField(blank=True, help_text=b'Draft names matching this regular expression should not be assigned', max_length=255, verbose_name=b'Filter regexp', validators=[ietf.utils.validators.RegexStringValidator()]), + ), + ] diff --git a/ietf/submit/migrations/0017_auto_20161207_1046.py b/ietf/submit/migrations/0017_auto_20161207_1046.py new file mode 100644 index 000000000..9b00cabda --- /dev/null +++ b/ietf/submit/migrations/0017_auto_20161207_1046.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('submit', '0016_fix_duplicate_upload_docevents'), + ] + + operations = [ + migrations.AlterField( + model_name='submissioncheck', + name='time', + field=models.DateTimeField(auto_now=True), + ), + ]