Skip to content

Commit

Permalink
Merge pull request #1282 from tulimaki/django-1-11
Browse files Browse the repository at this point in the history
Add Django 1.11 support
  • Loading branch information
tulimaki committed Jun 29, 2018
2 parents 88fe07c + 25a870b commit ef10495
Show file tree
Hide file tree
Showing 45 changed files with 401 additions and 218 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -40,3 +40,4 @@ target/
var/
node_modules
.DS_Store
.vscode
36 changes: 35 additions & 1 deletion .travis.yml
Expand Up @@ -45,11 +45,45 @@ matrix:
- "npm install -g bower"
- {python: 2.7, env: TOXENV=py27-django18-nomigrations}
- {python: 3.4, env: TOXENV=py34-django18-nomigrations}
#- {python: 3.4, env: TOXENV=py34-django18}
# - {python: 3.4, env: TOXENV=py34-django18}
- {python: 2.7, env: TOXENV=py27-django19-nomigrations}
- {python: 3.5, env: TOXENV=py35-django19-nomigrations}
- {python: 3.5, env: TOXENV=py35-django19}
- {python: 3.6, env: TOXENV=py36-django19-nomigrations}
- {python: 2.7, env: TOXENV=py27-django111-nomigrations}
- {python: 3.5, env: TOXENV=py35-django111-nomigrations}
- {python: 3.5, env: TOXENV=py35-django111-nomigrations}
- {python: 3.6, env: TOXENV=py36-django111}
- python: 3.6
env: TOXENV=py36-django111-nomigrations-nocoverage-browser-travis-admin
before_install:
- wget https://github.com/mozilla/geckodriver/releases/download/v0.20.1/geckodriver-v0.20.1-linux64.tar.gz
- mkdir geckodriver
- tar -xzf geckodriver*.tar.gz -C geckodriver
- export PATH=$PATH:$PWD/geckodriver
- "nvm install 8"
- "nvm use 8"
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- "npm install -g selenium-standalone@6.15.1"
- "selenium-standalone install"
- "selenium-standalone start &"
- "npm install -g bower"
- python: 3.6
env: TOXENV=py36-django111-nomigrations-nocoverage-browser-travis-front
before_install:
- wget https://github.com/mozilla/geckodriver/releases/download/v0.20.1/geckodriver-v0.20.1-linux64.tar.gz
- mkdir geckodriver
- tar -xzf geckodriver*.tar.gz -C geckodriver
- export PATH=$PATH:$PWD/geckodriver
- "nvm install 8"
- "nvm use 8"
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- "npm install -g selenium-standalone@6.15.1"
- "selenium-standalone install"
- "selenium-standalone start &"
- "npm install -g bower"
install:
- pip install -U pip
- pip install tox
Expand Down
10 changes: 10 additions & 0 deletions doc/changelog.rst
Expand Up @@ -96,6 +96,16 @@ Front
- Make company registration per shop
- Add option to enable company tax number validation for EU

General/miscellaneous
~~~~~~~~~~~~~~~~~~~~~

- Add support for Django 1.11 and for now on Shuup is installed over Django 1.11
by default. There is still unofficial support for Django 1.8 and 1.9 which
means that after installing Shuup you can downgrade your Django and Django
polymorphic versions. We will also still run tests for these old versions
while adding new features to Shuup. See tox.ini for information about
downgrades required to run Shuup with old Django.


Shuup 1.6.0
-----------
Expand Down
48 changes: 25 additions & 23 deletions setup.py
Expand Up @@ -86,40 +86,40 @@
'pillow>=3.4.2,<4',
'Babel==2.5.3',
'cryptography==1.7.1',
'Django>=1.8,<1.10',
'django-bootstrap3>=6.1,<7',
'django-countries>=3.3,<4',
'django-enumfields>=0.7.2,<0.8',
'Django>=1.8,<2',
'django-bootstrap3>=6.1,<10',
'django-countries>=3.3,<5.3',
'django-enumfields>=0.9,<0.10',
'django-filer>=1.0,<2',
'django-filter>=1.0,<1.1',
'django-jinja>=1.4,<2',
'django-mptt>=0.8.0,<0.9',
'django-parler>=1.5,<1.6.3',
'django-filter>=1.0,<1.2',
'django-jinja>=1.4,<3',
'django-mptt>=0.9,<0.10',
'django-parler>=1.5,<2',
'django-parler-rest>=1.3a1,<2',
'django-polymorphic>=0.8.0,<0.10',
'django-registration-redux>=1.2,<1.5',
'django-reversion==2.0.13',
'django-timezone-field>=1.2,<2',
'django-polymorphic>=0.8,<2.1.0', # For Django 1.8 and 1.9 use version lower 1
'django-registration-redux>=1.5,<1.9',
'django-reversion>=2,<3',
'django-timezone-field>=1.2,<3',
'djangorestframework>=3.5,<3.6',
'djangorestframework-jwt>=1.9,<2',
'django_rest_swagger==2.1.0',
'django_rest_swagger>=2.1.0,<2.2',
'factory-boy==2.7.0',
'fake-factory>=0.5.0,<0.5.4',
'Jinja2>=2.8,<2.9',
'jsonfield>=1.0,<2',
'keyring==10.2',
'keyrings.alt==2.0',
'Jinja2==2.8.1',
'jsonfield>=1',
'keyring>=10',
'keyrings.alt>=2',
'lxml>=4,<4.2.2',
'Markdown>=2.6,<3',
'openpyxl==2.3.5',
'python-dateutil==2.6.0',
'openpyxl>=2.3',
'python-dateutil>=2.5',
'pytoml>=0.1.0,<0.2',
'pytz>=2015.4',
'requests>=2.7,<3',
'secretstorage==2.3.1',
'six>=1.9,<2',
'unicodecsv==0.14.1',
'xlrd==1.0.0'
'xlrd>=1'
]

REQUIRES_FOR_PYTHON2_ONLY = [
Expand All @@ -135,9 +135,11 @@
],
'testing': utils.get_test_requirements_from_tox_ini(TOPDIR),
'coding-style': [
'flake8>=2.4,<3',
'flake8-print>=2.0.2,<3',
'pep8-naming>=0.2,<1',
'flake8==3.3.0',
'flake8-isort==2.1.3',
'flake8-polyfill==1.0.1',
'isort==4.2.5',
'pep8-naming==0.4.1'
],
}
EXTRAS_REQUIRE['everything'] = list(
Expand Down
2 changes: 1 addition & 1 deletion shuup/admin/form_modifier.py
Expand Up @@ -72,7 +72,7 @@ def add_extra_fields(self, form, object=None):
for field_key, field in extend_class().get_extra_fields(object) or []:
form.fields[field_key] = field

def get_form(self):
def get_form(self, form_class=None):
form = super(ModifiableViewMixin, self).get_form(self.form_class)
self.add_extra_fields(form, self.object)
return form
Expand Down
2 changes: 1 addition & 1 deletion shuup/admin/forms/__init__.py
Expand Up @@ -10,5 +10,5 @@

__all__ = [
"EmailAuthenticationForm",
"ShuupAdminForm",
"ShuupAdminForm"
]
107 changes: 107 additions & 0 deletions shuup/admin/forms/_quick_select.py
@@ -0,0 +1,107 @@
# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2018, Shuup Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from django.forms import Select, SelectMultiple
from django.forms.utils import flatatt
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _


class QuickAddRelatedObjectSelect(Select):
url = ""
model = ""
template_name = "shuup/admin/forms/widgets/quick_add_select.jinja"

def get_context(self, name, value, attrs):
context = super(QuickAddRelatedObjectSelect, self).get_context(name, value, attrs)
context["quick_add_model"] = self.model
context["quick_add_url"] = "{}?mode=iframe&quick_add_target={}".format(self.url, name)
context["quick_add_btn_title"] = _("Create New")
return context


class QuickAddRelatedObjectMultiSelect(SelectMultiple):
url = ""
template_name = "shuup/admin/forms/widgets/quick_add_select.jinja"

def get_context(self, name, value, attrs):
attrs["multiple"] = True
context = super(QuickAddRelatedObjectMultiSelect, self).get_context(name, value, attrs)
context["quick_add_url"] = "{}?mode=iframe&quick_add_target={}".format(self.url, name)
context["quick_add_btn_title"] = _("Create New")
return context


class QuickAddRelatedObjectSelectWithoutTemplate(Select):
"""
Old implementation for Django 1.9 and 1.8 where the select
still has the render.
"""
url = ""
model = ""

def render(self, name, value, attrs=None, choices=()):
if value is None:
value = ''
final_attrs = self.build_attrs(attrs, name=name)
if self.model:
final_attrs['data-model'] = self.model
choices = []
output = [format_html('<select{}>', flatatt(final_attrs))]
options = self.render_options(choices, [value])
if options:
output.append(options)
output.append('</select>')
quick_add_button = """
<span class="quick-add-btn">
<a
class="btn"
data-url="%s?mode=iframe&quick_add_target=%s"
data-toggle="popover"
data-placement="bottom"
data-trigger="manual"
data-content="%s">
<i class="fa fa-plus text-primary"></i>
</a>
</span>
""".strip()
output.append(quick_add_button % (self.url, name, _("Create New")))
return mark_safe('\n'.join(output))


class QuickAddRelatedObjectMultiSelectWithoutTemplate(SelectMultiple):
"""
Old implementation for Django 1.9 and 1.8 where the select
still has the render.
"""
url = ""

def render(self, name, value, attrs=None, choices=()):
if value is None:
value = []
final_attrs = self.build_attrs(attrs, name=name)
output = [format_html('<select multiple="multiple"{}>', flatatt(final_attrs))]
options = self.render_options(choices, value)
if options:
output.append(options)
output.append('</select>')
quick_add_button = """
<span class="quick-add-btn">
<a
class="btn"
data-url="%s?mode=iframe&quick_add_target=%s"
data-toggle="popover"
data-placement="bottom"
data-trigger="hover"
data-content="%s">
<i class="fa fa-plus text-primary"></i>
</a>
</span>
""".strip()
output.append(quick_add_button % (self.url, name, _("Create New")))
return mark_safe('\n'.join(output))

0 comments on commit ef10495

Please sign in to comment.