From e366661549a434a5d7e55d61a1672df97e31a093 Mon Sep 17 00:00:00 2001 From: Iacopo Spalletti Date: Sun, 30 Jun 2019 02:58:04 +0200 Subject: [PATCH] Fix starting page script for django CMS 3.5+ --- djangocms_installer/share/starting_page.py | 9 +++-- tests/django.py | 38 ++++++++++++++++++++-- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/djangocms_installer/share/starting_page.py b/djangocms_installer/share/starting_page.py index 186e0a0..d089395 100644 --- a/djangocms_installer/share/starting_page.py +++ b/djangocms_installer/share/starting_page.py @@ -47,12 +47,17 @@ def create_pages(): target=col) # In order to publish the page there needs to be at least one user + try: + page.set_as_homepage() + except AttributeError: + pass if User.objects.count() > 0: + user = User.objects.first() try: - publish_page(page, User.objects.all()[0], lang) + publish_page(page, user, lang) except TypeError: # supporting old cms versions - publish_page(page, User.objects.all()[0]) + publish_page(page, user) if __name__ == '__main__': diff --git a/tests/django.py b/tests/django.py index 6621e5f..2029447 100644 --- a/tests/django.py +++ b/tests/django.py @@ -560,19 +560,51 @@ def test_starting_page(self): django.setup_database(config_data) django.load_starting_page(config_data) project_db = sqlite3.connect(os.path.join(config_data.project_directory, 'test.db')) + project_db.row_factory = sqlite3.Row # Check loaded data query = project_db.execute('SELECT * FROM cms_page') row = query.fetchone() - self.assertTrue('fullwidth.html' in row) + self.assertTrue(row['is_home']) + self.assertEqual('fullwidth.html', row['template']) query = project_db.execute('SELECT * FROM cms_title') row = query.fetchone() - self.assertTrue('Home' in row) + self.assertEqual('Home', row['title']) query = project_db.execute('SELECT * FROM cms_cmsplugin') row = query.fetchone() - self.assertTrue('TextPlugin' in row) + self.assertEqual('TextPlugin', row['plugin_type']) + + @unittest.skipIf(sys.version_info[:2] not in ((2, 7), (3, 4), (3, 5), (3, 6), (3, 7),), + reason='django 1.11 only supports python 2.7, 3.4, 3.5, 3.6 and 3.7,') + def test_starting_page_36(self): + config_data = config.parse(['--db=sqlite://localhost/test.db', + '-q', '-u', '--django-version=1.11', + '--cms-version=3.6', '--starting-page=yes', + '-p' + self.project_dir, 'cms_project']) + install.requirements(config_data.requirements) + django.create_project(config_data) + django.patch_settings(config_data) + django.copy_files(config_data) + django.setup_database(config_data) + django.load_starting_page(config_data) + project_db = sqlite3.connect(os.path.join(config_data.project_directory, 'test.db')) + project_db.row_factory = sqlite3.Row + + # Check loaded data + query = project_db.execute('SELECT * FROM cms_page') + row = query.fetchone() + self.assertTrue(row['is_home']) + self.assertEqual('fullwidth.html', row['template']) + + query = project_db.execute('SELECT * FROM cms_title') + row = query.fetchone() + self.assertEqual('Home', row['title']) + + query = project_db.execute('SELECT * FROM cms_cmsplugin') + row = query.fetchone() + self.assertEqual('TextPlugin', row['plugin_type']) @unittest.skipIf(sys.version_info[:2] not in ((2, 7), (3, 4), (3, 5), (3, 6), (3, 7),), reason='django 1.8 only supports python 2.7, 3.4, 3.5, 3.6 and 3.7,')