From f3b22aa300f485c79eedabd564595f6f431c1b5b Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 11 Feb 2015 06:52:07 +0000 Subject: [PATCH] Added django.setup() to some additional scripts, as required under Django 1.7. - Legacy-Id: 9069 --- ietf/bin/announce-header-change | 4 +-- ietf/bin/create-break-sessions | 3 ++ ietf/bin/create-charter-newrevisiondocevents | 3 +- ietf/bin/dump-draft-info | 4 +-- ietf/bin/email-sync-discrepancies | 5 +-- ietf/bin/expire-ids | 4 ++- ietf/bin/expire-last-calls | 3 ++ ietf/bin/expire-submissions | 3 ++ ...bmission-confirmation-email-in-postfix-log | 3 ++ ietf/bin/generate-draft-aliases | 4 +-- ietf/bin/generate-wg-aliases | 4 +-- ietf/bin/iana-changes-updates | 2 ++ ietf/bin/iana-protocols-updates | 4 +-- ietf/bin/iana-review-email | 3 ++ ietf/bin/notify-expirations | 3 ++ ietf/bin/rfc-editor-index-updates | 2 ++ ietf/bin/rfc-editor-queue-updates | 5 ++- ietf/bin/send-milestone-reminders | 3 ++ ietf/bin/send-scheduled-mail | 8 +++-- ietf/utils/test_runner.py | 33 ++++++++++++++++--- 20 files changed, 78 insertions(+), 25 deletions(-) diff --git a/ietf/bin/announce-header-change b/ietf/bin/announce-header-change index cbdb504ef..45ae3b73a 100755 --- a/ietf/bin/announce-header-change +++ b/ietf/bin/announce-header-change @@ -9,6 +9,8 @@ sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") import django +django.setup() + from django.core import management from django.template.loader import render_to_string @@ -16,8 +18,6 @@ from ietf import settings from ietf.utils.mail import send_mail_preformatted from ietf.utils.mail import send_mail -django.setup() - target_date=datetime.date(year=2014,month=1,day=24) send_mail(request = None, diff --git a/ietf/bin/create-break-sessions b/ietf/bin/create-break-sessions index 8768e35b3..db12bf684 100755 --- a/ietf/bin/create-break-sessions +++ b/ietf/bin/create-break-sessions @@ -8,6 +8,9 @@ basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") +import django +django.setup() + from ietf.group.models import Group from ietf.person.models import Person from ietf.name.models import SessionStatusName diff --git a/ietf/bin/create-charter-newrevisiondocevents b/ietf/bin/create-charter-newrevisiondocevents index acd3a066c..a76631f1e 100755 --- a/ietf/bin/create-charter-newrevisiondocevents +++ b/ietf/bin/create-charter-newrevisiondocevents @@ -25,13 +25,14 @@ import re from datetime import datetime as Datetime import django +django.setup() + from django.conf import settings from ietf.utils.path import path as Path from ietf.doc.models import Document, NewRevisionDocEvent from ietf.person.models import Person -django.setup() system_entity = Person.objects.get(name="(System)") charterdir = Path(settings.CHARTER_PATH) diff --git a/ietf/bin/dump-draft-info b/ietf/bin/dump-draft-info index ba2bc1894..a71b45f01 100755 --- a/ietf/bin/dump-draft-info +++ b/ietf/bin/dump-draft-info @@ -11,13 +11,13 @@ sys.path = [progdir+"/../../"] + sys.path os.environ["DJANGO_SETTINGS_MODULE"] = "ietf.settings" import django +django.setup() + from django.template import Template, Context from ietf.doc.models import Document from ietf.person.models import Person -django.setup() - drafts = Document.objects.filter(type="draft") ads = {} diff --git a/ietf/bin/email-sync-discrepancies b/ietf/bin/email-sync-discrepancies index 83d8fcf7a..cd915fb80 100755 --- a/ietf/bin/email-sync-discrepancies +++ b/ietf/bin/email-sync-discrepancies @@ -8,7 +8,6 @@ basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") - from optparse import OptionParser parser = OptionParser() @@ -17,9 +16,11 @@ parser.add_option("-t", "--to", dest="to", options, args = parser.parse_args() - syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) +import django +django.setup() + from ietf.sync.mails import email_discrepancies receivers = ["iesg-secretary@ietf.org"] diff --git a/ietf/bin/expire-ids b/ietf/bin/expire-ids index 8b5634fc3..ea4dabefb 100755 --- a/ietf/bin/expire-ids +++ b/ietf/bin/expire-ids @@ -5,9 +5,11 @@ import syslog os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") - syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) +import django +django.setup() + from ietf.doc.expire import * if not in_draft_expire_freeze(): diff --git a/ietf/bin/expire-last-calls b/ietf/bin/expire-last-calls index be90e65d3..d296b3740 100755 --- a/ietf/bin/expire-last-calls +++ b/ietf/bin/expire-last-calls @@ -7,6 +7,9 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) +import django +django.setup() + from ietf.doc.lastcall import * drafts = get_expired_last_calls() diff --git a/ietf/bin/expire-submissions b/ietf/bin/expire-submissions index f9a2c7531..9af850ddd 100644 --- a/ietf/bin/expire-submissions +++ b/ietf/bin/expire-submissions @@ -8,6 +8,9 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) +import django +django.setup() + from ietf.person.models import Person from ietf.submit.utils import expirable_submissions, expire_submission diff --git a/ietf/bin/find-submission-confirmation-email-in-postfix-log b/ietf/bin/find-submission-confirmation-email-in-postfix-log index 2270cb7e8..e7854b1d6 100644 --- a/ietf/bin/find-submission-confirmation-email-in-postfix-log +++ b/ietf/bin/find-submission-confirmation-email-in-postfix-log @@ -27,6 +27,9 @@ import time import warnings warnings.filterwarnings('ignore', message='the sets module is deprecated', append=True) +import django +django.setup() + from django.conf import settings from ietf.utils.path import path as Path diff --git a/ietf/bin/generate-draft-aliases b/ietf/bin/generate-draft-aliases index 32411aa33..e49d8a456 100755 --- a/ietf/bin/generate-draft-aliases +++ b/ietf/bin/generate-draft-aliases @@ -33,6 +33,8 @@ sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") import django +django.setup() + from django.conf import settings from ietf.doc.models import Document @@ -40,8 +42,6 @@ from ietf.group.utils import get_group_chairs_emails, get_group_ads_emails from ietf.utils.aliases import * import time -django.setup() - def get_draft_ad_emails(draft): " Get AD email for the given draft, if any. " # If working group document, return current WG ADs diff --git a/ietf/bin/generate-wg-aliases b/ietf/bin/generate-wg-aliases index c3f49dc3a..a13f9f7a4 100755 --- a/ietf/bin/generate-wg-aliases +++ b/ietf/bin/generate-wg-aliases @@ -21,14 +21,14 @@ sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") import django +django.setup() + from django.conf import settings from ietf.group.models import Group from ietf.group.utils import get_group_ads_emails, get_group_chairs_emails, get_area_ads_emails, get_area_chairs_emails from ietf.utils.aliases import dump_sublist -django.setup() - # from secr/utils/group.py.. ACTIVE_STATES=['active', 'bof', 'proposed'] diff --git a/ietf/bin/iana-changes-updates b/ietf/bin/iana-changes-updates index 055f7354c..fd35db16e 100755 --- a/ietf/bin/iana-changes-updates +++ b/ietf/bin/iana-changes-updates @@ -8,6 +8,8 @@ basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") +import django +django.setup() from django.conf import settings from optparse import OptionParser diff --git a/ietf/bin/iana-protocols-updates b/ietf/bin/iana-protocols-updates index f3ee15f28..5d7182c33 100755 --- a/ietf/bin/iana-protocols-updates +++ b/ietf/bin/iana-protocols-updates @@ -11,11 +11,11 @@ sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") import django +django.setup() + from django.conf import settings from ietf.sync.iana import * -django.setup() - def chunks(l, n): """Split list l up in chunks of max size n.""" return (l[i:i+n] for i in xrange(0, len(l), n)) diff --git a/ietf/bin/iana-review-email b/ietf/bin/iana-review-email index 32d615408..fe9750076 100755 --- a/ietf/bin/iana-review-email +++ b/ietf/bin/iana-review-email @@ -11,6 +11,9 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) +import django +django.setup() + from ietf.sync.iana import * from ietf.doc.models import Document diff --git a/ietf/bin/notify-expirations b/ietf/bin/notify-expirations index 987db0661..45cf97367 100755 --- a/ietf/bin/notify-expirations +++ b/ietf/bin/notify-expirations @@ -4,6 +4,9 @@ import datetime, os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") +import django +django.setup() + from ietf.doc.expire import get_soon_to_expire_drafts, send_expire_warning_for_draft diff --git a/ietf/bin/rfc-editor-index-updates b/ietf/bin/rfc-editor-index-updates index 3595ac3c4..430f1fe1a 100755 --- a/ietf/bin/rfc-editor-index-updates +++ b/ietf/bin/rfc-editor-index-updates @@ -11,6 +11,8 @@ basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") +import django +django.setup() from django.conf import settings from optparse import OptionParser diff --git a/ietf/bin/rfc-editor-queue-updates b/ietf/bin/rfc-editor-queue-updates index 213025226..65335bc18 100755 --- a/ietf/bin/rfc-editor-queue-updates +++ b/ietf/bin/rfc-editor-queue-updates @@ -10,13 +10,12 @@ basedir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path = [ basedir ] + sys.path os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") - import django +django.setup() + from django.conf import settings from ietf.sync.rfceditor import * -django.setup() - syslog.syslog("Updating RFC Editor queue states from %s" % settings.RFC_EDITOR_QUEUE_URL) response = fetch_queue_xml(settings.RFC_EDITOR_QUEUE_URL) diff --git a/ietf/bin/send-milestone-reminders b/ietf/bin/send-milestone-reminders index 9ed5d254f..2df17f4c4 100755 --- a/ietf/bin/send-milestone-reminders +++ b/ietf/bin/send-milestone-reminders @@ -11,6 +11,9 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_LOCAL0) +import django +django.setup() + from ietf.group.mails import * today = datetime.date.today() diff --git a/ietf/bin/send-scheduled-mail b/ietf/bin/send-scheduled-mail index 15a8f4c4f..694a2e33f 100755 --- a/ietf/bin/send-scheduled-mail +++ b/ietf/bin/send-scheduled-mail @@ -4,13 +4,15 @@ import datetime, os, sys import syslog os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ietf.settings") +syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) + +import django +django.setup() + from ietf.utils.mail import smtp_error_logging from smtplib import SMTPException -syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_USER) - - if len(sys.argv) != 2 or sys.argv[1] not in ('all', 'rsync', 'specific'): print "USAGE: %s " % os.path.basename(__file__) print "'all' means all not sent" diff --git a/ietf/utils/test_runner.py b/ietf/utils/test_runner.py index 882cf4012..a1c2e6b7f 100644 --- a/ietf/utils/test_runner.py +++ b/ietf/utils/test_runner.py @@ -34,6 +34,7 @@ import socket, re, os, time, importlib import warnings +import coverage from django.conf import settings from django.template import TemplateDoesNotExist @@ -186,6 +187,9 @@ def save_test_results(failures, test_labels): class IetfTestRunner(DiscoverRunner): + def test_code_coverage(self): + pass + def run_tests(self, test_labels, extra_tests=None, **kwargs): # Tests that involve switching back and forth between the real # database and the test database are way too dangerous to run @@ -203,11 +207,20 @@ class IetfTestRunner(DiscoverRunner): old_destroy = connection.creation.__class__.destroy_test_db connection.creation.__class__.destroy_test_db = safe_destroy_0_1 - check_coverage = not test_labels - - if check_coverage: + do_template_coverage = not test_labels + do_url_coverage = not test_labels + do_code_coverage = True + + if do_template_coverage: settings.TEMPLATE_LOADERS = ('ietf.utils.test_runner.template_coverage_loader',) + settings.TEMPLATE_LOADERS + if do_url_coverage: settings.MIDDLEWARE_CLASSES = ('ietf.utils.test_runner.RecordUrlsMiddleware',) + settings.MIDDLEWARE_CLASSES + if do_code_coverage: + import ietf.settings as config + sources = [ os.path.dirname(config.__file__), ] + code_coverage = coverage.coverage(source=sources, cover_pylib=False, + omit = ['^0*']) + code_coverage.start() if not test_labels: # we only want to run our own tests test_labels = [app for app in settings.INSTALLED_APPS if app.startswith("ietf")] @@ -230,10 +243,20 @@ class IetfTestRunner(DiscoverRunner): finally: smtpd_driver.stop() - if check_coverage and not failures: + if do_template_coverage and not failures: check_template_coverage(self.verbosity) + if do_url_coverage and not failures: check_url_coverage(self.verbosity) - + if do_code_coverage and not failures: + code_coverage.stop() + code_coverage.save() + code_coverage_pct = code_coverage.report(file="coverage.txt") + print("Code coverage: %6.3f%%. Details written to coverage.txt" % code_coverage_pct) +# with open("sysinfo.txt", "w") as file: +# import pprint +# pprint.pprint(code_coverage.sysinfo(), file) +# print("Sysinfo written to sysinfo.txt") + if (do_template_coverage or do_url_coverage or do_code_coverage) and not failures: print "0 test failures - coverage shown above" save_test_results(failures, test_labels)