Add django CMS 3.5
This commit is contained in:
parent
5f22499fed
commit
e4f30290c9
13 changed files with 105 additions and 65 deletions
35
.travis.yml
35
.travis.yml
|
@ -5,6 +5,7 @@ language: python
|
|||
sudo: false
|
||||
|
||||
python:
|
||||
- 3.6
|
||||
- 3.5
|
||||
- 3.4
|
||||
- 2.7
|
||||
|
@ -14,10 +15,13 @@ env:
|
|||
- TOXENV='pep8'
|
||||
- TOXENV='isort'
|
||||
- TOXENV='docs'
|
||||
- DJANGO='django110' CMS='cms35'
|
||||
- DJANGO='django110' CMS='cms34'
|
||||
- DJANGO='django19' CMS='cms35'
|
||||
- DJANGO='django19' CMS='cms34'
|
||||
- DJANGO='django19' CMS='cms33'
|
||||
- DJANGO='django19' CMS='cms32'
|
||||
- DJANGO='django18' CMS='cms35'
|
||||
- DJANGO='django18' CMS='cms34'
|
||||
- DJANGO='django18' CMS='cms33'
|
||||
- DJANGO='django18' CMS='cms32'
|
||||
|
@ -28,6 +32,7 @@ install:
|
|||
- "if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then export PYVER=py27; fi"
|
||||
- "if [[ $TRAVIS_PYTHON_VERSION == '3.4' ]]; then export PYVER=py34; fi"
|
||||
- "if [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then export PYVER=py35; fi"
|
||||
- "if [[ $TRAVIS_PYTHON_VERSION == '3.6' ]]; then export PYVER=py36; fi"
|
||||
- "if [[ ${DJANGO}z != 'z' ]]; then export TOXENV=$PYVER-$DJANGO-$CMS; fi"
|
||||
|
||||
# command to run tests, e.g. python setup.py test
|
||||
|
@ -53,6 +58,36 @@ matrix:
|
|||
env: TOXENV='pep8'
|
||||
- python: 3.4
|
||||
env: TOXENV='isort'
|
||||
- python: 3.5
|
||||
env: TOXENV='docs'
|
||||
- python: 3.5
|
||||
env: TOXENV='pep8'
|
||||
- python: 3.5
|
||||
env: TOXENV='isort'
|
||||
- python: 2.7
|
||||
env: DJANGO='django19' CMS='cms35'
|
||||
- python: 2.7
|
||||
env: DJANGO='django19' CMS='cms34'
|
||||
- python: 2.7
|
||||
env: DJANGO='django19' CMS='cms33'
|
||||
- python: 2.7
|
||||
env: DJANGO='django19' CMS='cms32'
|
||||
- python: 3.5
|
||||
env: DJANGO='django19' CMS='cms35'
|
||||
- python: 3.5
|
||||
env: DJANGO='django19' CMS='cms34'
|
||||
- python: 3.5
|
||||
env: DJANGO='django19' CMS='cms33'
|
||||
- python: 3.5
|
||||
env: DJANGO='django19' CMS='cms32'
|
||||
- python: 3.4
|
||||
env: DJANGO='django19' CMS='cms35'
|
||||
- python: 3.4
|
||||
env: DJANGO='django19' CMS='cms34'
|
||||
- python: 3.4
|
||||
env: DJANGO='django19' CMS='cms33'
|
||||
- python: 3.4
|
||||
env: DJANGO='django19' CMS='cms32'
|
||||
|
||||
|
||||
cache:
|
||||
|
|
|
@ -8,7 +8,7 @@ History
|
|||
0.9.0 (unreleased)
|
||||
******************
|
||||
|
||||
* Added support for django CMS 3.4
|
||||
* Added support for django CMS 3.4, 3.5
|
||||
* Dropped support for Django<1.8, django CMS<3.2.
|
||||
* Added liveblog application.
|
||||
* Refactored plugin filters: by default only data for current site are now shown.
|
||||
|
|
|
@ -14,10 +14,10 @@ from .settings import get_setting
|
|||
@apphook_pool.register
|
||||
class BlogApp(AutoCMSAppMixin, CMSConfigApp):
|
||||
name = _('Blog')
|
||||
urls = ['djangocms_blog.urls']
|
||||
_urls = ['djangocms_blog.urls']
|
||||
app_name = 'djangocms_blog'
|
||||
app_config = BlogConfig
|
||||
menus = [BlogCategoryMenu]
|
||||
_menus = [BlogCategoryMenu]
|
||||
auto_setup = {
|
||||
'enabled': get_setting('AUTO_SETUP'),
|
||||
'home title': get_setting('AUTO_HOME_TITLE'),
|
||||
|
@ -30,5 +30,13 @@ class BlogApp(AutoCMSAppMixin, CMSConfigApp):
|
|||
},
|
||||
}
|
||||
|
||||
@property
|
||||
def urls(self):
|
||||
return self._urls
|
||||
|
||||
@property
|
||||
def menus(self):
|
||||
return self._menus
|
||||
|
||||
|
||||
BlogApp.setup()
|
||||
|
|
|
@ -38,19 +38,18 @@ class BlogCategoryMenu(CMSAttachMenu):
|
|||
language = get_language_from_request(request, check_path=True)
|
||||
current_site = get_current_site(request)
|
||||
|
||||
if self.instance.site != current_site:
|
||||
if self.instance and self.instance.site != current_site:
|
||||
return []
|
||||
|
||||
categories_menu = False
|
||||
posts_menu = False
|
||||
config = False
|
||||
if hasattr(self, 'instance') and self.instance:
|
||||
if self.instance:
|
||||
if not self._config.get(self.instance.application_namespace, False):
|
||||
self._config[self.instance.application_namespace] = BlogConfig.objects.get(
|
||||
namespace=self.instance.application_namespace
|
||||
)
|
||||
config = self._config[self.instance.application_namespace]
|
||||
if hasattr(self, 'instance') and self.instance:
|
||||
if not getattr(request, 'toolbar', False) or not request.toolbar.edit_mode:
|
||||
if self.instance == self.instance.get_draft_object():
|
||||
return []
|
||||
|
@ -71,7 +70,6 @@ class BlogCategoryMenu(CMSAttachMenu):
|
|||
posts = posts.namespace(self.instance.application_namespace).on_site()
|
||||
posts = posts.active_translations(language).distinct().\
|
||||
select_related('app_config').prefetch_related('translations', 'categories')
|
||||
|
||||
for post in posts:
|
||||
post_id = None
|
||||
parent = None
|
||||
|
|
|
@ -63,10 +63,14 @@ class LiveblogInterface(models.Model):
|
|||
})
|
||||
try:
|
||||
from cms.plugin_rendering import ContentRenderer
|
||||
context['cms_content_renderer'] = ContentRenderer(request)
|
||||
renderer = ContentRenderer(request)
|
||||
return renderer.render_plugin(
|
||||
instance=self,
|
||||
context=context,
|
||||
placeholder=self.placeholder,
|
||||
)
|
||||
except ImportError:
|
||||
pass
|
||||
return self.render_plugin(context)
|
||||
return self.render_plugin(context)
|
||||
|
||||
def send(self, request):
|
||||
"""
|
||||
|
|
|
@ -159,6 +159,13 @@ class BaseTest(BaseTestCase):
|
|||
cache.clear()
|
||||
super(BaseTest, self).tearDown()
|
||||
|
||||
def get_nodes(self, menu_pool, request):
|
||||
try:
|
||||
nodes = menu_pool.get_renderer(request).get_nodes()
|
||||
except AttributeError:
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
return nodes
|
||||
|
||||
def _get_category(self, data, category=None, lang='en'):
|
||||
data = deepcopy(data)
|
||||
for k, v in data.items():
|
||||
|
|
|
@ -184,14 +184,12 @@ try:
|
|||
plugin = add_plugin(
|
||||
post.liveblog, 'LiveblogPlugin', language='en', body='live text', publish=False
|
||||
)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=False)
|
||||
rendered = plugin.render_plugin(context, post.liveblog)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertFalse(rendered.strip())
|
||||
|
||||
plugin.publish = True
|
||||
plugin.save()
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=False)
|
||||
rendered = plugin.render_plugin(context, post.liveblog)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('data-post-id="{}"'.format(plugin.pk)) > -1)
|
||||
self.assertTrue(rendered.find('live text') > -1)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ class MenuTest(BaseTest):
|
|||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
request = self.get_page_request(pages[1], self.user, pages[1].get_absolute_url(lang), edit=True)
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
self.assertTrue(len(nodes), BlogCategory.objects.all().count() + len(pages))
|
||||
nodes_url = set([node.get_absolute_url() for node in nodes])
|
||||
cats_url = set([cat.get_absolute_url() for cat in self.cats if cat.has_translation(lang)])
|
||||
|
@ -60,7 +60,7 @@ class MenuTest(BaseTest):
|
|||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
request = self.get_page_request(pages[1].get_draft_object(), self.user, pages[1].get_draft_object().get_absolute_url(lang))
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
urls = [node.get_absolute_url() for node in nodes]
|
||||
nodes_url = [node.get_absolute_url() for node in nodes]
|
||||
self.assertTrue(len(nodes_url), BlogCategory.objects.all().count() + len(pages))
|
||||
|
@ -97,7 +97,7 @@ class MenuTest(BaseTest):
|
|||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
nodes_url = set([node.get_absolute_url() for node in nodes])
|
||||
self.assertFalse(cats_url[lang].issubset(nodes_url))
|
||||
self.assertFalse(posts_url[lang].issubset(nodes_url))
|
||||
|
@ -110,7 +110,7 @@ class MenuTest(BaseTest):
|
|||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
nodes_url = set([node.get_absolute_url() for node in nodes])
|
||||
self.assertFalse(cats_url[lang].issubset(nodes_url))
|
||||
self.assertTrue(posts_url[lang].issubset(nodes_url))
|
||||
|
@ -123,7 +123,7 @@ class MenuTest(BaseTest):
|
|||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
nodes_url = set([node.get_absolute_url() for node in nodes])
|
||||
self.assertTrue(cats_url[lang].issubset(nodes_url))
|
||||
self.assertFalse(posts_url[lang].issubset(nodes_url))
|
||||
|
@ -136,7 +136,7 @@ class MenuTest(BaseTest):
|
|||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
nodes_url = set([node.get_absolute_url() for node in nodes])
|
||||
self.assertTrue(cats_url[lang].issubset(nodes_url))
|
||||
self.assertTrue(posts_url[lang].issubset(nodes_url))
|
||||
|
@ -151,7 +151,7 @@ class MenuTest(BaseTest):
|
|||
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
|
||||
with smart_override(lang):
|
||||
self._reset_menus()
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
nodes_url = set([node.url for node in nodes])
|
||||
self.assertTrue(cats_with_post_url[lang].issubset(nodes_url))
|
||||
self.assertFalse(cats_without_post_url[lang].intersection(nodes_url))
|
||||
|
@ -194,7 +194,7 @@ class MenuTest(BaseTest):
|
|||
view_obj.get(request)
|
||||
view_obj.get_context_data()
|
||||
# check if selected menu node points to cat
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
found = []
|
||||
for node in nodes:
|
||||
if node.selected:
|
||||
|
@ -219,11 +219,8 @@ class MenuTest(BaseTest):
|
|||
view_obj.get(request)
|
||||
view_obj.get_context_data()
|
||||
# check if selected menu node points to cat
|
||||
nodes = menu_pool.get_nodes(request)
|
||||
found = []
|
||||
for node in nodes:
|
||||
if node.selected:
|
||||
found.append(node.get_absolute_url())
|
||||
nodes = self.get_nodes(menu_pool, request)
|
||||
found = [node.get_absolute_url() for node in nodes if node.selected]
|
||||
self.assertTrue(cat.get_absolute_url() in found)
|
||||
|
||||
self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE
|
||||
|
|
|
@ -583,7 +583,7 @@ class AdminTest(BaseTest):
|
|||
post = self._get_post(self._post_data[0]['en'])
|
||||
|
||||
request = self.get_page_request(None, self.user, r'/en/page-two/')
|
||||
first_nodes = menu_pool.get_nodes(request)
|
||||
first_nodes = self.get_nodes(menu_pool, request)
|
||||
self._reset_menus()
|
||||
with pause_knocks(post):
|
||||
with self.login_user_context(self.user):
|
||||
|
@ -596,7 +596,7 @@ class AdminTest(BaseTest):
|
|||
msg_mid.process_request(request)
|
||||
config_admin = admin.site._registry[BlogConfig]
|
||||
config_admin.change_view(request, str(self.app_config_1.pk))
|
||||
second_nodes = menu_pool.get_nodes(request)
|
||||
second_nodes = self.get_nodes(menu_pool, request)
|
||||
self.assertNotEqual(len(first_nodes), len(second_nodes))
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import os.path
|
|||
import re
|
||||
|
||||
from cms.api import add_plugin
|
||||
from django.contrib.sites.models import SITE_CACHE
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.timezone import now
|
||||
from taggit.models import Tag
|
||||
|
@ -28,8 +27,7 @@ class PluginTest(BaseTest):
|
|||
plugin = add_plugin(
|
||||
ph, 'BlogLatestEntriesPluginCached', language='en', app_config=self.app_config_1
|
||||
)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
try:
|
||||
self.assertTrue(rendered.find('cms_plugin-djangocms_blog-post-abstract-1') > -1)
|
||||
except AssertionError:
|
||||
|
@ -41,15 +39,16 @@ class PluginTest(BaseTest):
|
|||
plugin_nocache = add_plugin(
|
||||
ph, 'BlogLatestEntriesPlugin', language='en', app_config=self.app_config_1
|
||||
)
|
||||
with self.assertNumQueries(39):
|
||||
plugin_nocache.render_plugin(context, ph)
|
||||
# FIXME: Investigate the correct number of queries expected here
|
||||
with self.assertNumQueries(19):
|
||||
self.render_plugin(pages[0], 'en', plugin_nocache)
|
||||
|
||||
with self.assertNumQueries(19):
|
||||
self.render_plugin(pages[0], 'en', plugin)
|
||||
|
||||
with self.assertNumQueries(19):
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin)
|
||||
|
||||
with self.assertNumQueries(15):
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
try:
|
||||
self.assertTrue(rendered.find('cms_plugin-djangocms_blog-post-abstract-1') > -1)
|
||||
except AssertionError:
|
||||
self.assertTrue(rendered.find('cms-plugin-djangocms_blog-post-abstract-1') > -1)
|
||||
self.assertTrue(rendered.find('<p>first line</p>') > -1)
|
||||
self.assertTrue(rendered.find('<article id="post-first-post"') > -1)
|
||||
self.assertTrue(rendered.find(posts[0].get_absolute_url()) > -1)
|
||||
|
@ -68,8 +67,7 @@ class PluginTest(BaseTest):
|
|||
tag = Tag.objects.get(slug='tag-1')
|
||||
plugin.tags.add(tag)
|
||||
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
try:
|
||||
self.assertTrue(rendered.find('cms_plugin-djangocms_blog-post-abstract-1') > -1)
|
||||
except AssertionError:
|
||||
|
@ -92,8 +90,7 @@ class PluginTest(BaseTest):
|
|||
)
|
||||
plugin.categories.add(category_2)
|
||||
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
try:
|
||||
self.assertTrue(rendered.find('cms_plugin-djangocms_blog-post-abstract-2') > -1)
|
||||
except AssertionError:
|
||||
|
@ -125,18 +122,15 @@ class PluginTest(BaseTest):
|
|||
self.assertEqual(casted_categories.categories.count(), 1)
|
||||
|
||||
posts[1].sites.add(self.site_2)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertFalse(rendered.find('<p>second post first line</p>') > -1)
|
||||
|
||||
posts[1].sites.remove(self.site_2)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('<p>second post first line</p>') > -1)
|
||||
|
||||
plugin = add_plugin(ph, 'BlogLatestEntriesPlugin', language='en')
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=False)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=False)
|
||||
# data is picked from both apphook configs
|
||||
self.assertTrue(rendered.find('<article id="post-first-post"') > -1)
|
||||
self.assertTrue(rendered.find('<article id="post-different-appconfig"') > -1)
|
||||
|
@ -152,8 +146,7 @@ class PluginTest(BaseTest):
|
|||
posts[1].save()
|
||||
ph = pages[0].placeholders.get(slot='content')
|
||||
plugin = add_plugin(ph, 'BlogTagsPlugin', language='en', app_config=self.app_config_1)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
for tag in Tag.objects.all():
|
||||
self.assertTrue(rendered.find(
|
||||
reverse('djangocms_blog:posts-tagged', kwargs={'tag': tag.slug})
|
||||
|
@ -224,25 +217,21 @@ class PluginTest2(BaseTest):
|
|||
ph = pages[0].placeholders.get(slot='content')
|
||||
plugin = add_plugin(ph, 'BlogAuthorPostsPlugin', language='en', app_config=self.app_config_1)
|
||||
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('No article found') > -1)
|
||||
|
||||
plugin.authors.add(self.user)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('/en/blog/author/admin/') > -1)
|
||||
self.assertTrue(rendered.find('2 articles') > -1)
|
||||
|
||||
plugin.authors.add(self.user_staff)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('/en/blog/author/staff/') > -1)
|
||||
self.assertTrue(rendered.find('0 articles') > -1)
|
||||
|
||||
plugin.authors.add(self.user_normal)
|
||||
context = self.get_plugin_context(pages[0], 'en', plugin, edit=True)
|
||||
rendered = plugin.render_plugin(context, ph)
|
||||
rendered = self.render_plugin(pages[0], 'en', plugin, edit=True)
|
||||
self.assertTrue(rendered.find('/en/blog/author/normal/') > -1)
|
||||
self.assertTrue(rendered.find('0 articles') > -1)
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ class SetupTest(BaseTest):
|
|||
# Tests starts with no page and no config
|
||||
self.assertFalse(Page.objects.exists())
|
||||
self.assertFalse(BlogConfig.objects.exists())
|
||||
set_home = hasattr(Page, 'set_as_homepage')
|
||||
|
||||
langs = get_language_list()
|
||||
home = None
|
||||
|
@ -69,6 +70,8 @@ class SetupTest(BaseTest):
|
|||
'a new home', language=lang,
|
||||
template='blog.html', in_navigation=True, published=True
|
||||
)
|
||||
if set_home:
|
||||
home.set_as_homepage()
|
||||
else:
|
||||
create_title(
|
||||
language=lang, title='a new home', page=home
|
||||
|
|
|
@ -11,7 +11,6 @@ from django.contrib.auth.models import AnonymousUser
|
|||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import Http404
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from parler.tests.utils import override_parler_settings
|
||||
|
|
10
tox.ini
10
tox.ini
|
@ -1,8 +1,8 @@
|
|||
[tox]
|
||||
envlist = pep8,isort,docs,py{35,34,27}-django{110}-{cms34},py{35,34,27}-django{19}-{cms34,cms33,cms32},py{35,34,33,27}-django{18}-cms{34,33,32}
|
||||
envlist = pep8,isort,docs,py{36,35,34,27}-django{111,110}-cms{35,34},py{35,34,27}-django{19}-cms{35,34,33,32},py{35,34,33,27}-django{18}-cms{35,34,33,32}
|
||||
|
||||
[testenv]
|
||||
commands = {env:COMMAND:python} cms_helper.py test djangocms_blog
|
||||
commands = {env:COMMAND:python} cms_helper.py djangocms_blog test
|
||||
deps =
|
||||
django18: Django>=1.8,<1.9
|
||||
django18: django-mptt>=0.8
|
||||
|
@ -23,12 +23,14 @@ deps =
|
|||
cms33: https://github.com/divio/django-cms/archive/release/3.3.x.zip
|
||||
cms33: djangocms-text-ckeditor>=3.0
|
||||
cms34: https://github.com/divio/django-cms/archive/release/3.4.x.zip
|
||||
cms34: djangocms-text-ckeditor>=3.0
|
||||
cms34: djangocms-text-ckeditor>=3.2
|
||||
cms35: https://github.com/divio/django-cms/archive/develop.zip
|
||||
cms35: djangocms-text-ckeditor>=3.5
|
||||
channels>=0.15
|
||||
https://github.com/nephila/django-knocker/archive/master.zip?0.1.1
|
||||
django-meta>=1.2
|
||||
html5lib<0.99999999
|
||||
https://github.com/nephila/djangocms-helper/archive/release/0.9.x.zip
|
||||
https://github.com/nephila/djangocms-helper/archive/develop.zip
|
||||
aldryn-apphooks-config
|
||||
https://github.com/nephila/djangocms-apphook-setup/archive/master.zip
|
||||
-r{toxinidir}/requirements-test.txt
|
||||
|
|
Loading…
Reference in a new issue