From 90e4cd62ef961704467b0069628225f64f0e17b0 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Sat, 6 Aug 2016 03:06:13 +1000 Subject: [PATCH 01/13] removing patterns import --- src/watson/urls.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/watson/urls.py b/src/watson/urls.py index 5644227..de2355f 100644 --- a/src/watson/urls.py +++ b/src/watson/urls.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals -from django.conf.urls import url, patterns +from django.conf.urls import url from watson.views import search, search_json From 30436ab02813eae790b166461480cc3842c5e313 Mon Sep 17 00:00:00 2001 From: Simon J Greenhill Date: Sat, 6 Aug 2016 03:12:35 +1000 Subject: [PATCH 02/13] Adding latest release --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index ec7edf9..9712bbd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,9 @@ env: - DJANGO=django==1.9.5 - DJANGO=django==1.9.5 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" - DJANGO=django==1.9.5 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" + - DJANGO=django==1.10 + - DJANGO=django==1.10 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" + - DJANGO=django==1.10 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" matrix: exclude: - python: 3.5 From 1f67b6b9fd3d0726e0f917452badfacd3dc70335 Mon Sep 17 00:00:00 2001 From: Simon J Greenhill Date: Sat, 6 Aug 2016 03:14:03 +1000 Subject: [PATCH 03/13] Upgrading to latest release versions --- .travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9712bbd..a049756 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,12 +11,12 @@ env: - DJANGO=django==1.7.11 - DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" - DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" - - DJANGO=django==1.8.12 - - DJANGO=django==1.8.12 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" - - DJANGO=django==1.8.12 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" - - DJANGO=django==1.9.5 - - DJANGO=django==1.9.5 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" - - DJANGO=django==1.9.5 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" + - DJANGO=django==1.8.14 + - DJANGO=django==1.8.14 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" + - DJANGO=django==1.8.14 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" + - DJANGO=django==1.9.9 + - DJANGO=django==1.9.9 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" + - DJANGO=django==1.9.9 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" - DJANGO=django==1.10 - DJANGO=django==1.10 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" - DJANGO=django==1.10 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" From 536c41fadc544cac2f958a5f8e7922da6527129e Mon Sep 17 00:00:00 2001 From: Simon J Greenhill Date: Mon, 8 Aug 2016 20:33:36 +1000 Subject: [PATCH 04/13] Update urls.py --- src/tests/urls.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/tests/urls.py b/src/tests/urls.py index 604f3cd..408e7bc 100644 --- a/src/tests/urls.py +++ b/src/tests/urls.py @@ -4,7 +4,4 @@ should be added within the test folders, and use TestCase.urls to set them. This helps the tests remain isolated. """ -from django.conf.urls import patterns - - -urlpatterns = patterns("") +urlpatterns = [] From 9c5f19e1479e7aaf16acc3119260ff5be6214041 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 12:00:19 +1200 Subject: [PATCH 05/13] removing deprecated TestCase.urls setting and replacing with override_settings --- src/tests/test_watson/tests.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/tests/test_watson/tests.py b/src/tests/test_watson/tests.py index 5618852..a2fdbb4 100644 --- a/src/tests/test_watson/tests.py +++ b/src/tests/test_watson/tests.py @@ -16,6 +16,7 @@ except: from django.utils.unittest import skipUnless from django.test import TestCase +from django.test.utils import override_settings from django.core.management import call_command from django.conf import settings from django.contrib.auth.models import User @@ -559,10 +560,9 @@ class ComplexRegistrationTest(SearchTestBase): self.assertEqual(complex_registration_search_engine.filter(WatsonTestModel2, "DESCRIPTION").count(), 0) +@override_settings(ROOT_URLCONF="test_watson.urls") class AdminIntegrationTest(SearchTestBase): - - urls = "test_watson.urls" - + def setUp(self): super(AdminIntegrationTest, self).setUp() self.user = User( @@ -600,10 +600,9 @@ class AdminIntegrationTest(SearchTestBase): del self.user +@override_settings(ROOT_URLCONF="test_watson.urls") class SiteSearchTest(SearchTestBase): - urls = "test_watson.urls" - def testSiteSearch(self): # Test a search than should find everything. response = self.client.get("/simple/?q=title") From 0dc92173b67ce04bfbdb4a1132404cefc1e6aa0a Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 12:00:59 +1200 Subject: [PATCH 06/13] updating urls.py for new django 1.8 syntax --- src/tests/test_watson/urls.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/tests/test_watson/urls.py b/src/tests/test_watson/urls.py index 3985be0..42b01c0 100644 --- a/src/tests/test_watson/urls.py +++ b/src/tests/test_watson/urls.py @@ -1,8 +1,8 @@ -from django.conf.urls import patterns, url, include +from django.conf.urls import url, include from django.contrib import admin -urlpatterns = patterns("", +urlpatterns = [ url("^simple/", include("watson.urls")), @@ -17,5 +17,4 @@ urlpatterns = patterns("", }), url("^admin/", include(admin.site.urls)), - -) +] From 0cd131891924e2bf083e6f908d6e041fa168ba38 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 17:23:02 +1200 Subject: [PATCH 07/13] fixing tests --- src/tests/test_watson/tests.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/tests/test_watson/tests.py b/src/tests/test_watson/tests.py index a2fdbb4..8b7d3c3 100644 --- a/src/tests/test_watson/tests.py +++ b/src/tests/test_watson/tests.py @@ -30,6 +30,17 @@ from watson.backends import escape_query from test_watson.models import WatsonTestModel1, WatsonTestModel2 from test_watson import admin # Force early registration of all admin models. +# test settings to override +SETTINGS_OVERRIDE = { + 'TEMPLATES': [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': ['templates'], + 'APP_DIRS': True, + }, + ], + 'ROOT_URLCONF': 'test_watson.urls', +} class RegistrationTest(TestCase): @@ -560,7 +571,7 @@ class ComplexRegistrationTest(SearchTestBase): self.assertEqual(complex_registration_search_engine.filter(WatsonTestModel2, "DESCRIPTION").count(), 0) -@override_settings(ROOT_URLCONF="test_watson.urls") +@override_settings(**SETTINGS_OVERRIDE) class AdminIntegrationTest(SearchTestBase): def setUp(self): @@ -600,9 +611,8 @@ class AdminIntegrationTest(SearchTestBase): del self.user -@override_settings(ROOT_URLCONF="test_watson.urls") +@override_settings(**SETTINGS_OVERRIDE) class SiteSearchTest(SearchTestBase): - def testSiteSearch(self): # Test a search than should find everything. response = self.client.get("/simple/?q=title") From ede900f56f3fc5dfd1acf02e30fd3056cd1d05f7 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 17:41:05 +1200 Subject: [PATCH 08/13] converting buildwatson command to use argparse --- src/watson/management/commands/buildwatson.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/watson/management/commands/buildwatson.py b/src/watson/management/commands/buildwatson.py index e6e06a4..b2d6c5d 100644 --- a/src/watson/management/commands/buildwatson.py +++ b/src/watson/management/commands/buildwatson.py @@ -58,11 +58,13 @@ class Command(BaseCommand): args = "[[--engine=search_engine] ... ]" help = "Rebuilds the database indices needed by django-watson. You can (re-)build index for selected models by specifying them" - option_list = BaseCommand.option_list + ( - make_option("--engine", - help="Search engine models are registered with"), + def add_arguments(self, parser): + parser.add_argument("apps", nargs="*", action="store", default=[]) + parser.add_argument('--engine', + action="store", + help='Search engine models are registered with' ) - + @transaction.atomic() def handle(self, *args, **options): """Runs the management command.""" @@ -76,12 +78,11 @@ class Command(BaseCommand): else: engine_slug = "default" engine_selected = False - + # get the search engine we'll be checking registered models for, may be "default" search_engine = get_engine(engine_slug) - models = [] - for model_name in args: + for model_name in options['apps']: try: model = apps.get_model(*model_name.split(".")) # app label, model name except TypeError: # were we given only model name without app_name? From 08fbd996a616f7698913f8861b814bdc4f517c8d Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 18:45:36 +1200 Subject: [PATCH 09/13] tweak --- src/watson/management/commands/buildwatson.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/watson/management/commands/buildwatson.py b/src/watson/management/commands/buildwatson.py index b2d6c5d..fce1cb5 100644 --- a/src/watson/management/commands/buildwatson.py +++ b/src/watson/management/commands/buildwatson.py @@ -82,7 +82,7 @@ class Command(BaseCommand): # get the search engine we'll be checking registered models for, may be "default" search_engine = get_engine(engine_slug) models = [] - for model_name in options['apps']: + for model_name in options.get('apps', []): try: model = apps.get_model(*model_name.split(".")) # app label, model name except TypeError: # were we given only model name without app_name? From 8705c763be7a67bba21ea9014b89d2cbc370a1f7 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Fri, 12 Aug 2016 19:07:41 +1200 Subject: [PATCH 10/13] another tweak --- src/watson/management/commands/buildwatson.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/watson/management/commands/buildwatson.py b/src/watson/management/commands/buildwatson.py index fce1cb5..ad4b0e1 100644 --- a/src/watson/management/commands/buildwatson.py +++ b/src/watson/management/commands/buildwatson.py @@ -70,9 +70,9 @@ class Command(BaseCommand): """Runs the management command.""" activate(settings.LANGUAGE_CODE) verbosity = int(options.get("verbosity", 1)) - + # see if we're asked to use a specific search engine - if options['engine']: + if options.get('engine'): engine_slug = options['engine'] engine_selected = True else: From 777e3b0d286c0dc7428344e97418921e51073d24 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Sat, 13 Aug 2016 14:09:29 +1200 Subject: [PATCH 11/13] backing out settings overrides in tests.py and moving to runtests.py --- src/tests/runtests.py | 8 +++++++- src/tests/test_watson/tests.py | 15 --------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/tests/runtests.py b/src/tests/runtests.py index 51c5afd..de8ab0e 100755 --- a/src/tests/runtests.py +++ b/src/tests/runtests.py @@ -72,7 +72,7 @@ def main(): DATABASES={ "default": database_setting }, - ROOT_URLCONF="urls", + ROOT_URLCONF='test_watson.urls', INSTALLED_APPS=( "django.contrib.auth", "django.contrib.contenttypes", @@ -93,6 +93,12 @@ def main(): USE_TZ=True, STATIC_URL="/static/", TEST_RUNNER="django.test.runner.DiscoverRunner", + TEMPLATES=[{ + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': ['templates'], + 'APP_DIRS': True, + }], + ) # Run Django setup (1.7+). import django diff --git a/src/tests/test_watson/tests.py b/src/tests/test_watson/tests.py index 8b7d3c3..54085d6 100644 --- a/src/tests/test_watson/tests.py +++ b/src/tests/test_watson/tests.py @@ -16,7 +16,6 @@ except: from django.utils.unittest import skipUnless from django.test import TestCase -from django.test.utils import override_settings from django.core.management import call_command from django.conf import settings from django.contrib.auth.models import User @@ -30,18 +29,6 @@ from watson.backends import escape_query from test_watson.models import WatsonTestModel1, WatsonTestModel2 from test_watson import admin # Force early registration of all admin models. -# test settings to override -SETTINGS_OVERRIDE = { - 'TEMPLATES': [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': ['templates'], - 'APP_DIRS': True, - }, - ], - 'ROOT_URLCONF': 'test_watson.urls', -} - class RegistrationTest(TestCase): def testRegistration(self): @@ -571,7 +558,6 @@ class ComplexRegistrationTest(SearchTestBase): self.assertEqual(complex_registration_search_engine.filter(WatsonTestModel2, "DESCRIPTION").count(), 0) -@override_settings(**SETTINGS_OVERRIDE) class AdminIntegrationTest(SearchTestBase): def setUp(self): @@ -611,7 +597,6 @@ class AdminIntegrationTest(SearchTestBase): del self.user -@override_settings(**SETTINGS_OVERRIDE) class SiteSearchTest(SearchTestBase): def testSiteSearch(self): # Test a search than should find everything. From a0372683a158cb64c45c9b1ec2813f494e24bb76 Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Sun, 14 Aug 2016 10:11:15 +1200 Subject: [PATCH 12/13] remove 1.7 from travis --- .travis.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index a049756..17c2cc1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,9 +8,6 @@ cache: directories: - $HOME/.cache/pip env: - - DJANGO=django==1.7.11 - - DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" - - DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" - DJANGO=django==1.8.14 - DJANGO=django==1.8.14 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" - DJANGO=django==1.8.14 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" @@ -21,13 +18,6 @@ env: - DJANGO=django==1.10 DB_ENGINE="django.db.backends.postgresql" DB_NAME="test_project" DB_USER="postgres" - DJANGO=django==1.10 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" matrix: - exclude: - - python: 3.5 - env: DJANGO=django==1.7.11 - - python: 3.5 - env: DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.postgresql_psycopg2" DB_NAME="test_project" DB_USER="postgres" - - python: 3.5 - env: DJANGO=django==1.7.11 DB_ENGINE="django.db.backends.mysql" DB_NAME="test_project" DB_USER="travis" fast_finish: true services: - postgresql From 6519e364cf264d23e3cb966a2f2ad46567d3d1ea Mon Sep 17 00:00:00 2001 From: SimonGreenhill Date: Tue, 16 Aug 2016 13:52:40 +0200 Subject: [PATCH 13/13] fixing args handling in buildwatson --- src/watson/management/commands/buildwatson.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/watson/management/commands/buildwatson.py b/src/watson/management/commands/buildwatson.py index ad4b0e1..de257c1 100644 --- a/src/watson/management/commands/buildwatson.py +++ b/src/watson/management/commands/buildwatson.py @@ -79,10 +79,16 @@ class Command(BaseCommand): engine_slug = "default" engine_selected = False + # work-around for legacy optparser hack in BaseCommand. In Django=1.10 the + # args are collected in options['apps'], but in earlier versions they are + # kept in args. + if len(options['apps']): + args = options['apps'] + # get the search engine we'll be checking registered models for, may be "default" search_engine = get_engine(engine_slug) models = [] - for model_name in options.get('apps', []): + for model_name in args: try: model = apps.get_model(*model_name.split(".")) # app label, model name except TypeError: # were we given only model name without app_name?