Skip to content

Commit

Permalink
Add support for Django 1.10
Browse files Browse the repository at this point in the history
  • Loading branch information
yakky committed Jan 3, 2017
1 parent d7a48d9 commit 4a1251e
Show file tree
Hide file tree
Showing 34 changed files with 174 additions and 100 deletions.
27 changes: 15 additions & 12 deletions djangocms_installer/config/__init__.py
Expand Up @@ -6,6 +6,7 @@
import os.path
import sys
import warnings
from distutils.version import LooseVersion

import six
from tzlocal import get_localzone
Expand Down Expand Up @@ -76,10 +77,10 @@ def parse(args):
'be used here. Example: en, fr-FR, it-IT')
parser.add_argument('--django-version', dest='django_version', action='store',
choices=data.DJANGO_SUPPORTED,
default='stable', help='Django version')
default='lts', help='Django version')
parser.add_argument('--cms-version', '-v', dest='cms_version', action='store',
choices=data.DJANGOCMS_SUPPORTED,
default='stable', help='django CMS version')
default='lts', help='django CMS version')
parser.add_argument('--parent-dir', '-p', dest='project_directory',
default='',
action='store', help='Optional project parent directory')
Expand Down Expand Up @@ -255,21 +256,21 @@ def parse(args):

if args.cms_version in ('rc', 'develop'):
requirements.extend(data.REQUIREMENTS['cms-master'])
elif cms_version >= 3.4:
elif LooseVersion(cms_version) >= LooseVersion('3.4'):
requirements.extend(data.REQUIREMENTS['cms-3.4'])
elif cms_version >= 3.3:
elif LooseVersion(cms_version) >= LooseVersion('3.3'):
requirements.extend(data.REQUIREMENTS['cms-3.3'])
elif cms_version >= 3.2:
elif LooseVersion(cms_version) >= LooseVersion('3.2'):
requirements.extend(data.REQUIREMENTS['cms-3.2'])

if not args.no_db_driver:
requirements.append(args.db_driver)
if not args.no_plugins:
if args.cms_version in ('rc', 'develop'):
requirements.extend(data.REQUIREMENTS['plugins-master'])
elif cms_version >= 3.4:
elif LooseVersion(cms_version) >= LooseVersion('3.4'):
requirements.extend(data.REQUIREMENTS['plugins-3.4'])
elif cms_version >= 3.3:
elif LooseVersion(cms_version) >= LooseVersion('3.3'):
requirements.extend(data.REQUIREMENTS['plugins-3.3'])
else:
requirements.extend(data.REQUIREMENTS['plugins-3.2'])
Expand All @@ -293,16 +294,18 @@ def parse(args):
requirements.append('pytz')

# Reversion package version depends on django version
if args.reversion and cms_version in (3.2, 3.3):
if django_version == 1.8:
if args.reversion and cms_version in ('3.2', '3.3'):
if django_version == '1.8':
requirements.extend(data.REQUIREMENTS['reversion-django-1.8'])
elif django_version == 1.9:
elif django_version == '1.9':
requirements.extend(data.REQUIREMENTS['reversion-django-1.9'])

if django_version == 1.8:
if django_version == '1.8':
requirements.extend(data.REQUIREMENTS['django-1.8'])
elif django_version == 1.9:
elif django_version == '1.9':
requirements.extend(data.REQUIREMENTS['django-1.9'])
elif django_version == '1.10':
requirements.extend(data.REQUIREMENTS['django-1.10'])

requirements.extend(data.REQUIREMENTS['default'])

Expand Down
57 changes: 35 additions & 22 deletions djangocms_installer/config/data.py
Expand Up @@ -20,44 +20,52 @@
DJANGOCMS_BETA = 'https://github.com/divio/django-cms/archive/3.0.0.beta3.zip'

if sys.version_info >= (3, 5):
DJANGOCMS_SUPPORTED = ('3.2', '3.3', '3.4', 'stable', 'develop')
DJANGOCMS_STABLE = 3.4
DJANGOCMS_SUPPORTED = ('3.2', '3.3', '3.4', 'stable', 'lts', 'develop')
DJANGOCMS_STABLE = '3.4'
DJANGOCMS_LTS = '3.4'
else:
DJANGOCMS_SUPPORTED = ('3.2', '3.3', '3.4', 'stable', 'develop')
DJANGOCMS_STABLE = 3.4
DJANGOCMS_SUPPORTED = ('3.2', '3.3', '3.4', 'stable', 'lts', 'develop')
DJANGOCMS_STABLE = '3.4'
DJANGOCMS_LTS = '3.4'

DJANGO_DEVELOP = 'https://github.com/django/django/archive/master.zip?{bust}'.format(**bust)
DJANGO_BETA = 'https://github.com/django/django/archive/master.zip?{bust}'.format(**bust)
if sys.version_info >= (3, 5):
DJANGO_SUPPORTED = ('1.8', '1.9', 'stable')
DJANGO_STABLE = 1.8
DJANGO_SUPPORTED = ('1.8', '1.9', '1.10', 'stable', 'lts')
DJANGO_STABLE = '1.10'
DJANGO_LTS = '1.8'
elif sys.version_info >= (3, 4):
DJANGO_SUPPORTED = ('1.8', '1.9', 'stable')
DJANGO_STABLE = 1.8
DJANGO_SUPPORTED = ('1.8', '1.9', '1.10', 'stable', 'lts')
DJANGO_STABLE = '1.10'
DJANGO_LTS = '1.8'
elif sys.version_info >= (3, 3):
DJANGO_SUPPORTED = ('1.8', 'stable')
DJANGO_STABLE = 1.8
DJANGO_SUPPORTED = ('1.8', 'stable', 'lts')
DJANGO_STABLE = '1.8'
DJANGO_LTS = '1.8'
else:
DJANGO_SUPPORTED = ('1.8', '1.9', 'stable')
DJANGO_STABLE = 1.8
DJANGO_SUPPORTED = ('1.8', '1.9', '1.10', 'stable', 'lts')
DJANGO_STABLE = '1.10'
DJANGO_LTS = '1.8'

CMS_VERSION_MATRIX = {
'stable': DJANGOCMS_STABLE,
'rc': 3.5,
'beta': 3.5,
'develop': 3.5
'lts': DJANGOCMS_LTS,
'rc': '3.5',
'beta': '3.5',
'develop': '3.5'
}
DJANGO_VERSION_MATRIX = {
'stable': DJANGO_STABLE,
'rc': 1.9,
'beta': 1.9,
'develop': 1.9
'lts': DJANGO_LTS,
'rc': '1.11',
'beta': '1.11',
'develop': '1.11'
}
VERSION_MATRIX = {
3.2: (1.8, 1.9),
3.3: (1.8, 1.9),
3.4: (1.8, 1.9, 1.10),
3.5: (1.8, 1.9, 1.10),
'3.2': ('1.8', '1.9'),
'3.3': ('1.8', '1.9'),
'3.4': ('1.8', '1.10'),
'3.5': ('1.8', '1.10'),
}

REQUIREMENTS = {
Expand All @@ -73,12 +81,17 @@
],
'django-1.9': [
],
'django-1.10': [
],
'reversion-django-1.8': [
'django-reversion>=1.10,<1.11',
],
'reversion-django-1.9': [
'django-reversion>=1.10,<2.0',
],
'reversion-django-1.10': [
'django-reversion>=2.0,<2.1',
],
'cms-3.2': [
'djangocms-admin-style>=1.1.1,<1.3',
'django-treebeard>=4.0,<5.0',
Expand Down
5 changes: 3 additions & 2 deletions djangocms_installer/django/__init__.py
Expand Up @@ -11,6 +11,7 @@
import textwrap
import zipfile
from copy import copy, deepcopy
from distutils.version import LooseVersion

from six import BytesIO, iteritems

Expand Down Expand Up @@ -223,7 +224,7 @@ def patch_settings(config_data):
)

for item in overridden_settings:
if config_data.django_version >= 1.9:
if LooseVersion(config_data.django_version) >= LooseVersion('1.9'):
item_re = re.compile(r'{0} = [^\]]+\]'.format(item), re.DOTALL | re.MULTILINE)
else:
item_re = re.compile(r'{0} = [^\)]+\)'.format(item), re.DOTALL | re.MULTILINE)
Expand Down Expand Up @@ -278,7 +279,7 @@ def _build_settings(config_data):

if config_data.aldryn: # pragma: no cover
apps.extend(vars.ALDRYN_APPLICATIONS)
if config_data.reversion and config_data.cms_version < 3.4:
if config_data.reversion and LooseVersion(config_data.cms_version) < LooseVersion('3.4'):
apps.extend(vars.REVERSION_APPLICATIONS)
text.append('INSTALLED_APPS = (\n{0}{1}\n)'.format(
spacer, (',\n' + spacer).join(['\'{0}\''.format(var) for var in apps] +
Expand Down
30 changes: 19 additions & 11 deletions djangocms_installer/utils.py
Expand Up @@ -4,6 +4,9 @@
import os
import sys

from decimal import Decimal, InvalidOperation
from distutils.version import LooseVersion

from six import text_type

from . import compat
Expand Down Expand Up @@ -43,8 +46,7 @@ def query_yes_no(question, default=None): # pragma: no cover
elif choice in valid:
return valid[choice]
else:
sys.stdout.write('Please answer with "yes" or "no" '
'(or "y" or "n").\n')
sys.stdout.write('Please answer with "yes" or "no" (or "y" or "n").\n')


def supported_versions(django, cms):
Expand All @@ -53,26 +55,29 @@ def supported_versions(django, cms):
"""
cms_version = None
django_version = None

try:
cms_version = float(cms)
except ValueError:
cms_version = Decimal(cms)
except (ValueError, InvalidOperation):
try:
cms_version = CMS_VERSION_MATRIX[cms]
cms_version = CMS_VERSION_MATRIX[str(cms)]
except KeyError:
pass

try:
django_version = float(django)
except ValueError:
django_version = Decimal(django)
except (ValueError, InvalidOperation):
try:
django_version = DJANGO_VERSION_MATRIX[django]
django_version = DJANGO_VERSION_MATRIX[str(django)]
except KeyError: # pragma: no cover
pass

try:
if (
cms_version and django_version and
not (VERSION_MATRIX[cms_version][0] <= django_version <=
VERSION_MATRIX[cms_version][1])
not (LooseVersion(VERSION_MATRIX[compat.unicode(cms_version)][0]) <=
LooseVersion(compat.unicode(django_version)) <=
LooseVersion(VERSION_MATRIX[compat.unicode(cms_version)][1]))
):
raise RuntimeError(
'Django and django CMS versions doesn\'t match: '
Expand All @@ -83,7 +88,10 @@ def supported_versions(django, cms):
'Django and django CMS versions doesn\'t match: '
'Django {0} is not supported by django CMS {1}'.format(django_version, cms_version)
)
return django_version, cms_version
return (
compat.unicode(django_version) if django_version else django_version,
compat.unicode(cms_version) if cms_version else cms_version
)


def less_than_version(value):
Expand Down

0 comments on commit 4a1251e

Please sign in to comment.