From 93f5c82864d7a6af6164bbe585aa134ebec9edfd Mon Sep 17 00:00:00 2001 From: DylannCordel <d.cordel@webu.coop> Date: Wed, 16 Nov 2016 15:44:05 +0100 Subject: [PATCH] pep8 --- newsbox/admin.py | 40 +-- newsbox/models.py | 42 +-- .../templatetags/get_placeholder_content.py | 2 +- newsbox/urls.py | 43 ++- newsbox/utils.py | 5 - newsbox/views.py | 14 +- newsbox_cms/admin.py | 9 +- newsbox_cms/cms_plugins.py | 23 +- newsbox_cms/models.py | 7 +- newsbox_i18n/admin.py | 12 +- newsbox_i18n/views.py | 6 +- setup.py | 8 +- tests/myapp/admin.py | 1 + tests/myapp/models.py | 7 +- tests/myapp/tests.py | 27 +- tests/myapp/urls.py | 12 +- tests/myapp_all/admin.py | 1 + tests/myapp_all/cms_app.py | 1 + tests/myapp_all/cms_plugins.py | 4 +- tests/myapp_all/models.py | 11 +- tests/myapp_all/tests.py | 72 ++--- tests/myapp_all/urls.py | 4 +- tests/myapp_cms/admin.py | 1 + tests/myapp_cms/cms_app.py | 1 + tests/myapp_cms/cms_plugins.py | 2 +- tests/myapp_cms/models.py | 4 +- tests/myapp_cms/tests.py | 43 +-- tests/myapp_cms/urls.py | 4 +- tests/myapp_cms/urls_news.py | 2 +- tests/myapp_i18n/models.py | 4 +- tests/myapp_i18n/tests.py | 15 +- tests/myapp_i18n/urls.py | 4 +- tests/settings.py | 1 - tests/settings_all30.py | 14 +- tests/settings_all31.py | 14 +- tests/settings_cms30.py | 19 +- tests/settings_cms31.py | 17 +- tests/settings_i18n.py | 10 +- tests/utils.py | 291 +++++++++--------- 39 files changed, 389 insertions(+), 408 deletions(-) delete mode 100644 newsbox/utils.py diff --git a/newsbox/admin.py b/newsbox/admin.py index 197122e..76d42f7 100644 --- a/newsbox/admin.py +++ b/newsbox/admin.py @@ -14,6 +14,7 @@ from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext_lazy as _, ungettext_lazy from django.utils import six, formats + def get_fieldset_by_field(name, fieldsets): """ Return fieldset containing a field given by name @@ -118,10 +119,9 @@ class NewsboxBaseAdmin(admin.ModelAdmin): save_as = True def get_prepopulated_fields(self, request, object=None): - prepopulated_fields = super(NewsboxBaseAdmin, self).get_prepopulated_fields(request, object) - prepopulated_fields = prepopulated_fields or {} - prepopulated_fields.update({"newsbox_slug": ("newsbox_title",)}) - return prepopulated_fields + pfields = super(NewsboxBaseAdmin, self).get_prepopulated_fields(request, object) or {} + pfields.update({'newsbox_slug': ('newsbox_title',)}) + return pfields def changestatus_link(self, obj): if obj.newsbox_published: @@ -138,7 +138,6 @@ class NewsboxBaseAdmin(admin.ModelAdmin): reverse('admin:%s' % url_name, args=[obj.pk, ]), title, icon_url, obj.newsbox_published) - changestatus_link.allow_tags = True changestatus_link.admin_order_field = 'newsbox_published' changestatus_link.short_description = _('published') @@ -284,11 +283,13 @@ class NewsboxBaseAdmin(admin.ModelAdmin): 'Unpublish selected %(verbose_name_plural)s') def ensure_slug_uniq_queryset(self, request, obj, slug): - queryset = type(obj).objects.all() - queryset = queryset.filter(newsbox_publication_start_date__year=obj.newsbox_publication_start_date.year) - queryset = queryset.filter(newsbox_publication_start_date__month=obj.newsbox_publication_start_date.month) - queryset = queryset.filter(newsbox_publication_start_date__day=obj.newsbox_publication_start_date.day) - queryset = queryset.filter(newsbox_slug=slug) + y, m, d = (obj.newsbox_publication_start_date.year, + obj.newsbox_publication_start_date.month, + obj.newsbox_publication_start_date.day) + queryset = type(obj).objects.filter(newsbox_publication_start_date__year=y, + newsbox_publication_start_date__month=m, + newsbox_publication_start_date__day=d, + newsbox_slug=slug) if obj.pk: queryset = queryset.exclude(pk=obj.pk) return queryset @@ -325,23 +326,23 @@ class NewsboxExpiredAdmin(NewsboxBaseAdmin): if not obj.newsbox_publication_start_date: title.append(_('always')) else: - title.append( - formats.date_format(obj.newsbox_publication_start_date, 'DATETIME_FORMAT')) - output.append('<span class="from">%s</span>' % \ - formats.date_format(obj.newsbox_publication_start_date, 'SHORT_DATE_FORMAT') - ) + title.append(formats.date_format(obj.newsbox_publication_start_date, + 'DATETIME_FORMAT')) + output.append('<span class="from">%s</span>' % + formats.date_format(obj.newsbox_publication_start_date, + 'SHORT_DATE_FORMAT')) css_class.append('from') if not obj.newsbox_publication_end_date: title.append(_('never')) else: title.append( formats.date_format(obj.newsbox_publication_end_date, 'DATETIME_FORMAT')) - output.append('<span class="to">%s</span>' % \ - formats.date_format(obj.newsbox_publication_end_date, 'SHORT_DATE_FORMAT') - ) + output.append('<span class="to">%s</span>' % + formats.date_format(obj.newsbox_publication_end_date, + 'SHORT_DATE_FORMAT')) css_class.append('to') css_class = '_'.join(css_class) - title = _('from %(from)s to %(to)s') % {'from':title[0], 'to':title[1]} + title = _('from %(from)s to %(to)s') % {'from': title[0], 'to': title[1]} output = ('<span> %s </span>' % _('to')).join(output) return '<abbr class="newsbox_pub_dates %s" title="%s">%s</abbr>' % ( css_class, title, output) @@ -371,6 +372,7 @@ class NewsboxExpiredAdmin(NewsboxBaseAdmin): list_display.append('newsbox_publication_dates_short') return list_display + class NewsboxSEOAdmin(NewsboxBaseAdmin): def get_fieldsets(self, request, obj=None): diff --git a/newsbox/models.py b/newsbox/models.py index 2ddb8a4..d6bda6f 100644 --- a/newsbox/models.py +++ b/newsbox/models.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- + from __future__ import unicode_literals + import sys from datetime import datetime @@ -12,6 +14,7 @@ from django.utils import six newsbox_models = [] + def newsbox_mcls_processor(mcls, class_name, class_bases, class_attrs, base, newsbox_opts): if 'newsbox_title' not in class_attrs: class_attrs['newsbox_title'] = models.CharField( @@ -33,6 +36,7 @@ def newsbox_mcls_processor(mcls, class_name, class_bases, class_attrs, base, new null=False, blank=True) newsbox_opts['trans_fieldnames'].append('newsbox_body') + def newsboxseo_mcls_processor(mcls, class_name, class_bases, class_attrs, base, newsbox_opts): class_attrs['newsbox_meta_description'] = models.TextField( verbose_name=_('meta description'), @@ -41,9 +45,10 @@ def newsboxseo_mcls_processor(mcls, class_name, class_bases, class_attrs, base, verbose_name=_('meta keywords'), max_length=255, blank=True, null=True) - newsbox_opts['trans_fieldnames']+=[ + newsbox_opts['trans_fieldnames'] += [ 'newsbox_meta_description', 'newsbox_meta_keywords'] + class NewsboxManager(models.Manager): """ Filter published news @@ -74,12 +79,13 @@ class NewsboxModelBase(models.base.ModelBase): # Also ensure initialization is only performed for subclasses of Model # (excluding Model class itself). - parents = [b for b in class_bases if isinstance(b, NewsboxModelBase) and - not (b.__name__ == 'NewBase' and b.__mro__ == (b, object))] + # parents = [b for b in class_bases + # if isinstance(b, NewsboxModelBase) and + # not (b.__name__ == 'NewBase' and b.__mro__ == (b, object))] - #retrieve newsbox options in Meta class and delete these from the - #Meta class to avoid django complain about unsupported keys. - #We register our meta options in `_newsbox_meta` + # retrieve newsbox options in Meta class and delete these from the + # Meta class to avoid django complain about unsupported keys. + # We register our meta options in `_newsbox_meta` attr_meta = class_attrs.get('Meta', None) if attr_meta and not getattr(attr_meta, 'ordering', None): class_attrs['Meta'].ordering = ('-newsbox_publication_start_date',) @@ -102,8 +108,8 @@ class NewsboxModelBase(models.base.ModelBase): # register newsbox_objects manager class_attrs['newsbox_objects'] = NewsboxManager() - #Call specific metaclass processor of all bases - if not abstract : + # Call specific metaclass processor of all bases + if not abstract: for base in class_bases: try: processor = base._newsbox_meta['metaclass_base_processor'] @@ -120,22 +126,20 @@ class NewsboxModelBase(models.base.ModelBase): processor = getattr(sys.modules[base.__module__], processor) processor(mcls, class_name, class_bases, class_attrs, base, newsbox_opts) - if not 'default_manager' in class_attrs: + if 'default_manager' not in class_attrs: class_attrs['default_manager'] = class_attrs['newsbox_objects'] - if not 'objects' in class_attrs: + if 'objects' not in class_attrs: class_attrs['objects'] = class_attrs['newsbox_objects'] # contructs class cls = super_new(mcls, class_name, class_bases, class_attrs) - #Add the detail_url_name to _newsbox_meta. if not defined, we build the - #default one with this format : <app_label>_<model_name>_detail - #Names ar lowered. + # Add the detail_url_name to _newsbox_meta. if not defined, we build the + # default one with this format : <app_label>_<model_name>_detail + # Names ar lowered. if not abstract: - detail_url_name = newsbox_opts.get( - 'detail_url_name', - "%s_%s_detail" % (cls._meta.app_label.lower(), - cls._meta.model_name.lower(),) - ) + detail_url_name = newsbox_opts.get('detail_url_name', + '%s_%s_detail' % (cls._meta.app_label.lower(), + cls._meta.model_name.lower(), )) newsbox_opts.update( detail_url_name=detail_url_name, @@ -236,6 +240,7 @@ class NewsboxBase(six.with_metaclass(NewsboxModelBase, models.Model)): ordering = ('-newsbox_publication_start_date', ) newsbox_metaclass_base_processor = 'newsbox_mcls_processor' + class NewsboxExpiredBase(six.with_metaclass(NewsboxModelBase, models.Model)): """ Define News which expires in time and will not be displayed in front @@ -261,6 +266,7 @@ class NewsboxExpiredBase(six.with_metaclass(NewsboxModelBase, models.Model)): class Meta: abstract = True + class NewsboxSEOBase(six.with_metaclass(NewsboxModelBase, models.Model)): """ Define News which have SEO fields diff --git a/newsbox/templatetags/get_placeholder_content.py b/newsbox/templatetags/get_placeholder_content.py index 188dd54..dfe5170 100644 --- a/newsbox/templatetags/get_placeholder_content.py +++ b/newsbox/templatetags/get_placeholder_content.py @@ -41,7 +41,7 @@ class GetPlaceholderContent(RenderPlaceholder): def get_value(self, context, nodelist, **kwargs): placeholder_output = None varname = kwargs.get('varname', None) - if kwargs.get('placeholder',None): + if kwargs.get('placeholder', None): placeholder_output = super(GetPlaceholderContent, self).get_value( context, **kwargs) diff --git a/newsbox/urls.py b/newsbox/urls.py index b0164b0..a715a3d 100644 --- a/newsbox/urls.py +++ b/newsbox/urls.py @@ -1,58 +1,57 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils.text import slugify -from django.conf.urls import patterns, url, include -from django.conf.urls.i18n import i18n_patterns +from django.conf.urls import patterns, url from .models import newsbox_models from .views import NewsboxArchiveView, NewsboxYearArchiveView, \ NewsboxMonthArchiveView, NewsboxDayArchiveView, NewsboxDetailView + def get_urls( - archive_view=NewsboxArchiveView, - year_archive_view=NewsboxYearArchiveView, - month_archive_view=NewsboxMonthArchiveView, - day_archive_view=NewsboxDayArchiveView, - detail_view=NewsboxDetailView): - - urls = ['',] - for model in newsbox_models : + archive_view=NewsboxArchiveView, + year_archive_view=NewsboxYearArchiveView, + month_archive_view=NewsboxMonthArchiveView, + day_archive_view=NewsboxDayArchiveView, + detail_view=NewsboxDetailView +): + + urls = ['', ] + for model in newsbox_models: app_name = model._meta.app_label.lower() model_name = model.__name__.lower() - - viewurl = 'newsbox/%s/%s/'\ - % (app_name, model_name,) + + viewurl = 'newsbox/%s/%s/' % (app_name, model_name, ) urls.append( url( - r'^%s$' % viewurl, + r'^%s$' % viewurl, archive_view.as_view( model=model,), name='%s_%s_list' % (app_name, model_name), ), ) - viewurl=viewurl+'(?P<year>\d{4})/' + viewurl = viewurl + '(?P<year>\d{4})/' urls.append( url( - r'^%s$' % viewurl, + r'^%s$' % viewurl, year_archive_view.as_view( model=model,), name='%s_%s_list_y' % (app_name, model_name), ), ) - viewurl=viewurl+'(?P<month>\d{2})/' + viewurl = viewurl + '(?P<month>\d{2})/' urls.append( url( - r'^%s$' % viewurl, + r'^%s$' % viewurl, month_archive_view.as_view( model=model,), name='%s_%s_list_ym' % (app_name, model_name), ), ) - viewurl=viewurl+'(?P<day>\d{2})/' + viewurl = viewurl + '(?P<day>\d{2})/' urls.append( url( - r'^%s$' % viewurl, + r'^%s$' % viewurl, day_archive_view.as_view( model=model,), name='%s_%s_list_ymd' % (app_name, model_name), @@ -60,7 +59,7 @@ def get_urls( ) urls.append( url( - r'^%s(?P<slug>[0-9a-zA-Z_-]+)/$' % viewurl, + r'^%s(?P<slug>[0-9a-zA-Z_-]+)/$' % viewurl, detail_view.as_view( model=model,), name='%s_%s_detail' % (app_name, model_name), diff --git a/newsbox/utils.py b/newsbox/utils.py deleted file mode 100644 index c53eac0..0000000 --- a/newsbox/utils.py +++ /dev/null @@ -1,5 +0,0 @@ -# -*- coding: utf-8 -*- - -def get_newsmodels_list(): - from django.db.models import get_app, get_models - pass diff --git a/newsbox/views.py b/newsbox/views.py index 871dc7b..27c0bc8 100644 --- a/newsbox/views.py +++ b/newsbox/views.py @@ -30,17 +30,17 @@ class NewsboxBaseArchiveView(object): context['newsset'].next_page_number = context['page_obj'].next_page_number context['newsset'].previous_page_number = context['page_obj'].previous_page_number context['newsset'].paginator = context['paginator'] - if self.title == None: + if self.title is None: title = self.model._meta.verbose_name_plural.capitalize() else: - title=self.title + title = self.title context.update({ 'instance': None, 'title': title, 'title_url': '', - 'newsbox_opts':self.model._newsbox_meta, + 'newsbox_opts': self.model._newsbox_meta, 'with_pager': with_pager, - 'date_list_period':self.date_list_period, + 'date_list_period': self.date_list_period, }) return context @@ -90,11 +90,11 @@ class NewsboxDetailView(DateDetailView): return context def get_object(self, queryset=None): - # We check user permission + # We check user permission obj = super(NewsboxDetailView, self).get_object(queryset) if( - not obj.is_published() - and not obj.has_change_permission(self.request) + not obj.is_published() and + not obj.has_change_permission(self.request) ): raise Http404 return obj diff --git a/newsbox_cms/admin.py b/newsbox_cms/admin.py index 8aab300..0db34e7 100644 --- a/newsbox_cms/admin.py +++ b/newsbox_cms/admin.py @@ -73,19 +73,20 @@ def CustomModelCMSAdminFactory( output = '<a class="edit" href="{edit_url}" title="{edit_label}"></a>' if show_url: - output += '<a class="title" href="{show_url}" target="_parent" title="{show_label}">{title}</a>' + output += ('<a class="title" href="{show_url}" target="_parent" ' + 'title="{show_label}">{title}</a>') else: output += '<span class="title">{title}</span>' return output.format( edit_url=edit_url, show_url=show_url, show_label=_("show object's page"), - title=self.edit_link_title(obj, object_title), edit_label=_("edit object's parameters")) + title=self.edit_link_title(obj, object_title), + edit_label=_("edit object's parameters")) edit_link.allow_tags = True edit_link.short_description = edit_link_short_description edit_link.admin_order_field = edit_link_admin_order_field - def get_list_display(self, request): list_display = super(CustomModelCMSAdmin, self).get_list_display(request) list_display = list(list_display) @@ -109,7 +110,7 @@ def newsbox_admin_title(obj): class NewsboxCMSAdmin( - #XXX: hvad TranslatableAdmin doesn't support admin_order_field on translated field + # XXX: hvad TranslatableAdmin doesn't support admin_order_field on translated field # CustomModelCMSAdminFactory(edit_link_admin_order_field='newsbox_title'), CustomModelCMSAdminFactory(object_title=newsbox_admin_title, edit_link_admin_order_field='newsbox_publication_start_date'), diff --git a/newsbox_cms/cms_plugins.py b/newsbox_cms/cms_plugins.py index 22e003f..dddc048 100644 --- a/newsbox_cms/cms_plugins.py +++ b/newsbox_cms/cms_plugins.py @@ -5,10 +5,11 @@ from django.utils.translation import ugettext as _ from cms.plugin_base import CMSPluginBase from newsbox.models import NewsboxBase + class NewsboxPluginBase(CMSPluginBase): - name = _("News list") # Name of the plugin - render_template = "newsbox_cms/list-cms.html" # template to render the plugin - raw_id_fields = ('page_link',) + name = _("News list") + render_template = 'newsbox_cms/list-cms.html' + raw_id_fields = ('page_link', ) def get_instance_queryset(self, instance, request): NewsboxModel = instance.newsbox_model @@ -25,10 +26,10 @@ class NewsboxPluginBase(CMSPluginBase): instance=instance, request=context['request']) - if instance.numitems > 0 : + if instance.numitems > 0: with_pager = instance.with_pager - if with_pager : + if with_pager: from django.core.paginator import Paginator, \ EmptyPage, PageNotAnInteger @@ -42,21 +43,21 @@ class NewsboxPluginBase(CMSPluginBase): except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. newsset = paginator.page(paginator.num_pages) - else : + else: newsset = newsset[:instance.numitems] - else : + else: with_pager = False context.update({ 'instance': instance, 'title': instance.title, - 'newsset':newsset, - 'newsbox_opts':NewsboxModel._newsbox_meta, - 'with_pager':with_pager, + 'newsset': newsset, + 'newsbox_opts': NewsboxModel._newsbox_meta, + 'with_pager': with_pager, }) if instance.page_link: context.update({ - 'title_url' : instance.page_link.get_absolute_url(), + 'title_url': instance.page_link.get_absolute_url(), 'all_news_url': instance.page_link.get_absolute_url(), }) return context diff --git a/newsbox_cms/models.py b/newsbox_cms/models.py index ce379ef..7b0b439 100644 --- a/newsbox_cms/models.py +++ b/newsbox_cms/models.py @@ -34,12 +34,13 @@ class NewsboxPluginBase(CMSPlugin): verbose_name=_('Number of news'), default=2, help_text=_('Number of news to display. ' - '"0" allow you to display ALL news')) + '"0" allow you to display ALL news')) with_pager = models.BooleanField( verbose_name=_('Display a pager'), default=False) - page_link = PageField(verbose_name=_('All news page'), + page_link = PageField( + verbose_name=_('All news page'), null=True, blank=True, help_text=_('Page displaying all news')) @@ -49,7 +50,7 @@ class NewsboxPluginBase(CMSPlugin): 'Display of a news', 'Display of %(nb)d news', self.numitems - ) % {'nb':self.numitems}) + ) % {'nb': self.numitems}) return six.text_type(_('Display of all news')) class Meta: diff --git a/newsbox_i18n/admin.py b/newsbox_i18n/admin.py index c374638..7c93689 100644 --- a/newsbox_i18n/admin.py +++ b/newsbox_i18n/admin.py @@ -36,11 +36,13 @@ class NewsboxI18NBaseAdmin(TranslatableAdmin): def ensure_slug_uniq_queryset(self, request, obj, slug): language = self.get_form_language(request, obj) - queryset = type(obj).objects.all() - queryset = queryset.filter(newsbox_publication_start_date__year=obj.newsbox_publication_start_date.year) - queryset = queryset.filter(newsbox_publication_start_date__month=obj.newsbox_publication_start_date.month) - queryset = queryset.filter(newsbox_publication_start_date__day=obj.newsbox_publication_start_date.day) - queryset = queryset.translated(language, newsbox_slug=slug) + y, m, d = (obj.newsbox_publication_start_date.year, + obj.newsbox_publication_start_date.month, + obj.newsbox_publication_start_date.day) + queryset = type(obj).objects.filter(newsbox_publication_start_date__year=y, + newsbox_publication_start_date__month=m, + newsbox_publication_start_date__day=d)\ + .translated(language, newsbox_slug=slug) if obj.pk: queryset = queryset.exclude(pk=obj.pk) return queryset diff --git a/newsbox_i18n/views.py b/newsbox_i18n/views.py index 26a8c2b..52e14e0 100644 --- a/newsbox_i18n/views.py +++ b/newsbox_i18n/views.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +from django.http.response import Http404 from newsbox.views import NewsboxDetailView from django.utils.translation import get_language @@ -26,9 +27,6 @@ class NewsboxI18NDetailView(NewsboxDetailView): queryset = self.get_queryset() language = get_language() obj = queryset.translated(language, newsbox_slug=self.kwargs[self.slug_url_kwarg]).get() - if( - not obj.is_published() - and not obj.has_change_permission(self.request) - ): + if not obj.is_published() and not obj.has_change_permission(self.request): raise Http404 return obj diff --git a/setup.py b/setup.py index 96064ff..c410bf5 100755 --- a/setup.py +++ b/setup.py @@ -17,9 +17,9 @@ CLASSIFIERS = [ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Application Frameworks', - "Programming Language :: Python :: 2.6", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3.3", + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.3', ] setup( @@ -36,7 +36,7 @@ setup( install_requires=[ 'Django>=1.6,<1.9', ], - packages=find_packages(exclude=["project", "project.*"]), + packages=find_packages(exclude=['project', 'project.*']), include_package_data=True, zip_safe=False, ) diff --git a/tests/myapp/admin.py b/tests/myapp/admin.py index 10fbc62..7af6cbf 100644 --- a/tests/myapp/admin.py +++ b/tests/myapp/admin.py @@ -5,6 +5,7 @@ from newsbox.admin import NewsboxAdmin, NewsboxSEOAdmin, NewsboxExpiredAdmin from .models import News, NewsSEO, NewsExpired, NewsComplete, NewsExtended + class NewsAdmin(NewsboxAdmin): pass diff --git a/tests/myapp/models.py b/tests/myapp/models.py index 90291d4..0bba3b9 100644 --- a/tests/myapp/models.py +++ b/tests/myapp/models.py @@ -3,31 +3,36 @@ from __future__ import unicode_literals from django.db import models from newsbox.models import NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase + class News(NewsboxBase): class Meta: verbose_name = 'news - Basic' verbose_name_plural = 'news - Basic' + class NewsSEO(NewsboxSEOBase, NewsboxBase): class Meta: verbose_name = 'news - SEO' verbose_name_plural = 'news - SEO' + class NewsExpired(NewsboxExpiredBase, NewsboxBase): class Meta: verbose_name = 'news - Expirable' verbose_name_plural = 'news - Expirable' + class NewsComplete(NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): class Meta: verbose_name = 'news - Complete' verbose_name_plural = 'news - Complete' + class NewsExtended(NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): general_field = models.CharField(max_length=50) content_field = models.CharField(max_length=50) seo_field = models.CharField(max_length=50) - + class Meta: verbose_name = 'news - Extended' verbose_name_plural = 'news - Extended' diff --git a/tests/myapp/tests.py b/tests/myapp/tests.py index 03ddb48..738c7a8 100644 --- a/tests/myapp/tests.py +++ b/tests/myapp/tests.py @@ -8,22 +8,19 @@ from .models import News, NewsSEO, NewsExpired, NewsComplete, NewsExtended class NewsboxAbstractModelsTests(TestCase): - fixtures = ['tests_data.json',] - + fixtures = ['tests_data.json', ] + def test_01_manager_published(self): """ Test if we only get really published news via the manager """ - newsClasses = [ - News, NewsSEO, NewsExpired, NewsComplete, NewsExtended, - ] + newsClasses = [News, NewsSEO, NewsExpired, NewsComplete, NewsExtended, ] for cls in newsClasses: returned_ids = list(cls.objects.published().values_list( 'id', flat=True).order_by('id')) - self.assertEqual( - (cls.__name__,returned_ids), - (cls.__name__,[1, 4, 6, 7,])) - + self.assertEqual((cls.__name__, returned_ids), + (cls.__name__, [1, 4, 6, 7, ])) + def test_02_view_archive_200(self): """ Test if generic archive view return right informations. @@ -40,8 +37,7 @@ class NewsboxAbstractModelsTests(TestCase): self.assertTrue(r.context['newsset'].has_next()) self.assertRaises(EmptyPage, r.context['newsset'].previous_page_number) self.assertEqual(r.context['newsset'].next_page_number(), 2) - - + def test_03_view_year_archive_200(self): """ Test if generic year views return right informations. @@ -66,7 +62,7 @@ class NewsboxAbstractModelsTests(TestCase): c = Client() r = c.get('/newsbox/myapp/news/1985/') self.assertEqual(r.status_code, 404) - + def test_05_view_month_archive_200(self): """ Test if generic month views return right informations. @@ -85,7 +81,7 @@ class NewsboxAbstractModelsTests(TestCase): c = Client() r = c.get('/newsbox/myapp/news/1985/07/') self.assertEqual(r.status_code, 404) - + def test_07_view_day_archive_200(self): """ Test if generic day views return right informations. @@ -98,7 +94,7 @@ class NewsboxAbstractModelsTests(TestCase): def test_08_view_month_archive_404(self): """ - Test if generic day views return a 404 with an URL with a date without + Test if generic day views return a 404 with an URL with a date without any news. """ c = Client() @@ -116,7 +112,7 @@ class NewsboxAbstractModelsTests(TestCase): def test_10_view_detail_404(self): """ - Test if generic day views return a 404 with an URL with a date without + Test if generic day views return a 404 with an URL with a date without any news. """ c = Client() @@ -169,6 +165,5 @@ class NewsboxAbstractModelsTests(TestCase): r = c.get('/news/2005/') news = self.get_news_in_list_by_summary(r, 'Summary of the news 6') self.assertIsNotNone(news) - found = self.has_readmore_link(news) self.assertTrue(found) diff --git a/tests/myapp/urls.py b/tests/myapp/urls.py index ddb3e69..3b5194d 100644 --- a/tests/myapp/urls.py +++ b/tests/myapp/urls.py @@ -3,20 +3,20 @@ from __future__ import unicode_literals from django.conf.urls import url, include, patterns from django.contrib import admin -from django.conf import settings from newsbox.views import NewsboxYearArchiveView, NewsboxArchiveView from .models import News admin.autodiscover() -urlpatterns = patterns('', +urlpatterns = patterns( + '', url(r'^admin/', include(admin.site.urls)), url(r'^', include('newsbox.urls')), - url(r'^news/$', - NewsboxArchiveView.as_view(model=News, paginate_by=1), + url(r'^news/$', + NewsboxArchiveView.as_view(model=News, paginate_by=1), name='news_list',), - url(r'^news/(?P<year>\d{4})/$', - NewsboxYearArchiveView.as_view(model=News, paginate_by=1), + url(r'^news/(?P<year>\d{4})/$', + NewsboxYearArchiveView.as_view(model=News, paginate_by=1), name='news_list_y',), ) diff --git a/tests/myapp_all/admin.py b/tests/myapp_all/admin.py index 1598e28..7d30b60 100644 --- a/tests/myapp_all/admin.py +++ b/tests/myapp_all/admin.py @@ -9,6 +9,7 @@ from newsbox_i18n.admin import NewsboxI18NAdmin from .models import News, NewsComplete, NewsExtended + class NewsAdmin(NewsboxI18NAdmin, NewsboxCMSAdmin): pass diff --git a/tests/myapp_all/cms_app.py b/tests/myapp_all/cms_app.py index d25c3be..1f0302f 100644 --- a/tests/myapp_all/cms_app.py +++ b/tests/myapp_all/cms_app.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals from cms.app_base import CMSApp from cms.apphook_pool import apphook_pool + class NewsApphook(CMSApp): name = 'News' urls = ["myapp_all.urls_news"] diff --git a/tests/myapp_all/cms_plugins.py b/tests/myapp_all/cms_plugins.py index ae20326..67078c6 100644 --- a/tests/myapp_all/cms_plugins.py +++ b/tests/myapp_all/cms_plugins.py @@ -9,7 +9,7 @@ from .models import NewsPlugin as NewsPluginModel class NewsPlugin(NewsboxPluginBase): - name = "News list ALL" # Name of the plugin + name = "News list ALL" # Name of the plugin model = NewsPluginModel -plugin_pool.register_plugin(NewsPlugin) +plugin_pool.register_plugin(NewsPlugin) diff --git a/tests/myapp_all/models.py b/tests/myapp_all/models.py index dd3fc9b..7c7f5e7 100644 --- a/tests/myapp_all/models.py +++ b/tests/myapp_all/models.py @@ -6,19 +6,24 @@ from newsbox.models import NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase from newsbox_cms.models import NewsboxCMSBase, NewsboxPluginBase from newsbox_i18n.models import NewsboxI18NBase + class News(NewsboxI18NBase, NewsboxCMSBase, NewsboxBase): class Meta: verbose_name = 'news - I18NCMS' verbose_name_plural = 'news - I18NCMS' newsbox_detail_url_name = 'news_detail' -class NewsComplete(NewsboxI18NBase, NewsboxCMSBase, NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): + +class NewsComplete(NewsboxI18NBase, NewsboxCMSBase, + NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): class Meta: verbose_name = 'news - CompleteI18NCMS' verbose_name_plural = 'news - CompleteI18NCMS' newsbox_detail_url_name = 'newscomplete_detail' -class NewsExtended(NewsboxI18NBase, NewsboxCMSBase, NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): + +class NewsExtended(NewsboxI18NBase, NewsboxCMSBase, + NewsboxSEOBase, NewsboxExpiredBase, NewsboxBase): general_field = models.CharField(max_length=50) content_field = models.CharField(max_length=50) seo_field = models.CharField(max_length=50) @@ -30,7 +35,5 @@ class NewsExtended(NewsboxI18NBase, NewsboxCMSBase, NewsboxSEOBase, NewsboxExpir newsbox_detail_url_name = 'newsextended_detail' - class NewsPlugin(NewsboxPluginBase): newsbox_model = News - diff --git a/tests/myapp_all/tests.py b/tests/myapp_all/tests.py index 06a2feb..b1950eb 100644 --- a/tests/myapp_all/tests.py +++ b/tests/myapp_all/tests.py @@ -1,24 +1,21 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from copy import copy from django.test import TestCase, Client from django.contrib.auth.models import User from django.core.paginator import EmptyPage from django.utils.translation import activate from cms.test_utils.testcases import CMSTestCase -from cms.plugin_rendering import render_plugin -from cms.api import create_page, add_plugin, publish_page, create_title +from cms.api import create_page, add_plugin, create_title from djangocms_text_ckeditor.fields import HTMLField -from .models import News, NewsComplete, NewsExtended, NewsPlugin as NewsPluginModel +from .models import News, NewsComplete, NewsExtended from .cms_plugins import NewsPlugin class NewsboxAbstractModelsTests(TestCase): - fixtures = ['tests_data.json',] - + fixtures = ['tests_data.json', ] def test_01_manager_published(self): """ @@ -30,9 +27,8 @@ class NewsboxAbstractModelsTests(TestCase): for cls in newsClasses: returned_ids = list(cls.objects.published().values_list( 'id', flat=True).order_by('id')) - self.assertEqual( - (cls.__name__,returned_ids), - (cls.__name__,[1, 4, 6, 7,])) + self.assertEqual((cls.__name__, returned_ids), + (cls.__name__, [1, 4, 6, 7, ])) def test_02_summary_as_html_field(self): """ @@ -48,72 +44,59 @@ class NewsboxAbstractModelsTests(TestCase): summary_field = transmodel._meta.get_field('newsbox_summary') except: self.fail('%s is not properly configured' % cls) - self.assertIsInstance(summary_field,HTMLField) + self.assertIsInstance(summary_field, HTMLField) class NewsboxPageIntegrationTests(CMSTestCase): - fixtures = ['tests_data.json',] + fixtures = ['tests_data.json', ] def setUp(self): self.super_user = User(username="test", is_staff=True, is_active=True, is_superuser=True) self.super_user.set_password("test") self.super_user.save() - - home = create_page(title='Home', slug='home', - template='page.html', - language='en', published=True, - reverse_id='home', in_navigation=True) + + home = create_page(title='Home', slug='home', template='page.html', + language='en', published=True, reverse_id='home', in_navigation=True) create_title('fr', 'Accueil', home, slug='accueil') home.publish('en') home.publish('fr') - self.page = create_page(title='News page', slug='news-page', - template='page.html', parent=home, - language='en', published=True, apphook='NewsApphook', - reverse_id='newspage', in_navigation=True) + self.page = create_page(title='News page', slug='news-page', template='page.html', + parent=home, language='en', published=True, apphook='NewsApphook', + reverse_id='newspage', in_navigation=True) create_title('fr', 'page Actualités', self.page, slug='page-actualites') self.placeholder = self.page.placeholders.get(slot='main') - self.plugin_en = add_plugin( - self.placeholder, 'NewsPlugin', 'en', - title = 'News', - numitems = 1, - with_pager = True, - page_link = None,) + self.plugin_en = add_plugin(self.placeholder, 'NewsPlugin', 'en', title='News', + numitems=1, with_pager=True, page_link=None, ) self.plugin_en.save() - self.plugin_fr = add_plugin( - self.placeholder, 'NewsPlugin', 'fr', - title = 'Actualités', - numitems = 1, - with_pager = True, - page_link = None,) + self.plugin_fr = add_plugin(self.placeholder, 'NewsPlugin', 'fr', title='Actualités', + numitems=1, with_pager=True, page_link=None, ) self.plugin_fr.save() - + self.page.publish('en') self.page.publish('fr') self.page.reload() - + self.newsPlugin = NewsPlugin() self.placeholder = self.page.placeholders.get(slot='main') def test_01_cmsplugin_context(self): - expected_results = {'en':'News 7', 'fr':'Actualité 7',} + expected_results = {'en': 'News 7', 'fr': 'Actualité 7', } for lang in expected_results: activate(lang) context = self.get_context( self.page.get_absolute_url(), page=self.page) - self.newsPlugin.render( - context, - getattr(self, 'plugin_%s' % lang), - self.placeholder) + self.newsPlugin.render(context, + getattr(self, 'plugin_%s' % lang), + self.placeholder) self.assertIn('newsset', context) self.assertEqual(context['newsset'][0].pk, 7) - self.assertEqual( - context['newsset'][0].newsbox_title, - expected_results[lang]) + self.assertEqual(context['newsset'][0].newsbox_title, + expected_results[lang]) self.assertEqual(context['newsset'].number, 1) self.assertEqual(context['newsset'].paginator.num_pages, 4) self.assertFalse(context['newsset'].has_previous()) @@ -132,9 +115,8 @@ class NewsboxPageIntegrationTests(CMSTestCase): def test_03_get_absolute_url(self): news7 = News.objects.get(pk=7) - expected_results = { - 'en':'/en/news-page/2020/01/01/news-7/', - 'fr':'/fr/page-actualites/2020/01/01/actualite-7/',} + expected_results = {'en': '/en/news-page/2020/01/01/news-7/', + 'fr': '/fr/page-actualites/2020/01/01/actualite-7/', } for lang in expected_results: activate(lang) self.assertEqual(news7.get_absolute_url(), expected_results[lang]) diff --git a/tests/myapp_all/urls.py b/tests/myapp_all/urls.py index 1753ed9..fbeaec0 100644 --- a/tests/myapp_all/urls.py +++ b/tests/myapp_all/urls.py @@ -4,11 +4,11 @@ from __future__ import unicode_literals from django.conf.urls import url, include from django.conf.urls.i18n import i18n_patterns from django.contrib import admin -from django.conf import settings admin.autodiscover() -urlpatterns = i18n_patterns('', +urlpatterns = i18n_patterns( + '', url(r'^admin/', include(admin.site.urls)), url(r'', include('cms.urls')), ) diff --git a/tests/myapp_cms/admin.py b/tests/myapp_cms/admin.py index 05fbf1c..1f2a71b 100644 --- a/tests/myapp_cms/admin.py +++ b/tests/myapp_cms/admin.py @@ -7,6 +7,7 @@ from newsbox.admin import NewsboxSEOAdmin, NewsboxExpiredAdmin from .models import News, NewsComplete, NewsExtended + class NewsAdmin(NewsboxCMSAdmin): pass diff --git a/tests/myapp_cms/cms_app.py b/tests/myapp_cms/cms_app.py index 3e60259..98cd2af 100644 --- a/tests/myapp_cms/cms_app.py +++ b/tests/myapp_cms/cms_app.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals from cms.app_base import CMSApp from cms.apphook_pool import apphook_pool + class NewsApphook(CMSApp): name = 'News' urls = ["myapp_cms.urls_news"] diff --git a/tests/myapp_cms/cms_plugins.py b/tests/myapp_cms/cms_plugins.py index 3581717..50957e6 100644 --- a/tests/myapp_cms/cms_plugins.py +++ b/tests/myapp_cms/cms_plugins.py @@ -10,4 +10,4 @@ from .models import NewsPlugin as NewsPluginModel class NewsPlugin(NewsboxPluginBase): model = NewsPluginModel -plugin_pool.register_plugin(NewsPlugin) +plugin_pool.register_plugin(NewsPlugin) diff --git a/tests/myapp_cms/models.py b/tests/myapp_cms/models.py index 4f29db4..507e736 100644 --- a/tests/myapp_cms/models.py +++ b/tests/myapp_cms/models.py @@ -5,6 +5,7 @@ from django.db import models from newsbox.models import NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase from newsbox_cms.models import NewsboxCMSBase, NewsboxPluginBase + class News(NewsboxCMSBase, NewsboxBase): class Meta: verbose_name = 'news - CMS' @@ -23,7 +24,7 @@ class NewsExtended(NewsboxSEOBase, NewsboxExpiredBase, NewsboxCMSBase, NewsboxBa general_field = models.CharField(max_length=50) content_field = models.CharField(max_length=50) seo_field = models.CharField(max_length=50) - + class Meta: verbose_name = 'news - ExtendedCMS' verbose_name_plural = 'news - ExtendedCMS' @@ -32,4 +33,3 @@ class NewsExtended(NewsboxSEOBase, NewsboxExpiredBase, NewsboxCMSBase, NewsboxBa class NewsPlugin(NewsboxPluginBase): newsbox_model = News - diff --git a/tests/myapp_cms/tests.py b/tests/myapp_cms/tests.py index f0a5284..7577357 100644 --- a/tests/myapp_cms/tests.py +++ b/tests/myapp_cms/tests.py @@ -10,14 +10,13 @@ from cms.plugin_rendering import render_plugin from cms.api import create_page, add_plugin, publish_page from djangocms_text_ckeditor.fields import HTMLField -from .models import News, NewsComplete, NewsExtended, NewsPlugin as NewsPluginModel +from .models import News, NewsComplete, NewsExtended from .cms_plugins import NewsPlugin class NewsboxAbstractModelsTests(TestCase): - fixtures = ['tests_data.json',] - + fixtures = ['tests_data.json', ] def test_01_manager_published(self): """ @@ -29,9 +28,8 @@ class NewsboxAbstractModelsTests(TestCase): for cls in newsClasses: returned_ids = list(cls.objects.published().values_list( 'id', flat=True).order_by('id')) - self.assertEqual( - (cls.__name__,returned_ids), - (cls.__name__,[1, 4, 6, 7,])) + self.assertEqual((cls.__name__, returned_ids), + (cls.__name__, [1, 4, 6, 7, ])) def test_02_summary_as_html_field(self): """ @@ -51,30 +49,23 @@ class NewsboxAbstractModelsTests(TestCase): class NewsboxPageIntegrationTests(CMSTestCase): - fixtures = ['tests_data.json',] + fixtures = ['tests_data.json', ] def setUp(self): self.super_user = User(username="test", is_staff=True, is_active=True, is_superuser=True) self.super_user.set_password("test") self.super_user.save() - - home = create_page(title='Home', - template='page.html', - language='en', published=True, - reverse_id='home', in_navigation=True) - self.page = create_page(title='News page', - template='page.html', parent=home, - language='en', published=True, apphook='NewsApphook', - reverse_id='newspage', in_navigation=True) + home = create_page(title='Home', template='page.html', language='en', published=True, + reverse_id='home', in_navigation=True) + + self.page = create_page(title='News page', template='page.html', parent=home, + language='en', published=True, apphook='NewsApphook', + reverse_id='newspage', in_navigation=True) self.placeholder = self.page.placeholders.get(slot='main') - self.plugin = add_plugin( - self.placeholder, 'NewsPlugin', 'en', - title = 'News', - numitems = 1, - with_pager = True, - page_link = None,) + self.plugin = add_plugin(self.placeholder, 'NewsPlugin', 'en', + title='News', numitems=1, with_pager=True, page_link=None,) self.plugin.save() self.newsPlugin = NewsPlugin() self.page = publish_page(self.page, self.super_user, 'en') @@ -115,9 +106,9 @@ class NewsboxPageIntegrationTests(CMSTestCase): context = self.get_context(self.page.get_absolute_url(), page=self.page) self.newsPlugin.render(context, self.plugin, self.placeholder) html = render_plugin( - context, - self.newsPlugin, - self.placeholder, + context, + self.newsPlugin, + self.placeholder, self.newsPlugin.render_template) self.assertIn('<a href="/news-page/2020/01/01/news-7/">News 7</a>', html) self.assertIn('<a class="next" href="?page=2">Next news</a>', html) @@ -133,7 +124,7 @@ class NewsboxPageIntegrationTests(CMSTestCase): def test_06_app_view_detail_404(self): """ - Test if generic day views return a 404 with an URL with a date without + Test if generic day views return a 404 with an URL with a date without any news. """ c = Client() diff --git a/tests/myapp_cms/urls.py b/tests/myapp_cms/urls.py index 2a7ddb5..0b107b7 100644 --- a/tests/myapp_cms/urls.py +++ b/tests/myapp_cms/urls.py @@ -3,11 +3,11 @@ from __future__ import unicode_literals from django.conf.urls import url, include, patterns from django.contrib import admin -from django.conf import settings admin.autodiscover() -urlpatterns = patterns('', +urlpatterns = patterns( + '', url(r'^admin/', include(admin.site.urls)), url(r'', include('cms.urls')), ) diff --git a/tests/myapp_cms/urls_news.py b/tests/myapp_cms/urls_news.py index a9a706d..5c39728 100644 --- a/tests/myapp_cms/urls_news.py +++ b/tests/myapp_cms/urls_news.py @@ -9,7 +9,7 @@ from .models import News urlpatterns = patterns( '', url( - r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[0-9a-zA-Z_-]+)/$', + r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[0-9a-zA-Z_-]+)/$', NewsboxDetailView.as_view( model=News,), name='news_detail'), diff --git a/tests/myapp_i18n/models.py b/tests/myapp_i18n/models.py index 332d9e8..2b542e9 100644 --- a/tests/myapp_i18n/models.py +++ b/tests/myapp_i18n/models.py @@ -5,16 +5,19 @@ from django.db import models from newsbox.models import NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase from newsbox_i18n.models import NewsboxI18NBase + class News(NewsboxI18NBase, NewsboxBase): class Meta: verbose_name = 'news - I18N' verbose_name_plural = 'news - I18N' + class NewsComplete(NewsboxI18NBase, NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase): class Meta: verbose_name = 'news - CompleteI18N' verbose_name_plural = 'news - CompleteI18N' + class NewsExtended(NewsboxI18NBase, NewsboxBase, NewsboxSEOBase, NewsboxExpiredBase): general_field = models.CharField(max_length=50) content_field = models.CharField(max_length=50) @@ -24,4 +27,3 @@ class NewsExtended(NewsboxI18NBase, NewsboxBase, NewsboxSEOBase, NewsboxExpiredB verbose_name = 'news - ExtendedI18N' verbose_name_plural = 'news - ExtendedI18N' newsbox_trans_fieldnames = ['content_field', 'seo_field'] - diff --git a/tests/myapp_i18n/tests.py b/tests/myapp_i18n/tests.py index 12183fc..ac1d90c 100644 --- a/tests/myapp_i18n/tests.py +++ b/tests/myapp_i18n/tests.py @@ -8,11 +8,9 @@ from django.utils.translation import activate from .models import News, NewsComplete, NewsExtended - - class NewsboxAbstractModelsTests(TestCase): - fixtures = ['tests_data.json',] + fixtures = ['tests_data.json', ] def test_01_manager_published(self): """ @@ -24,9 +22,8 @@ class NewsboxAbstractModelsTests(TestCase): for cls in newsClasses: returned_ids = list(cls.objects.published().values_list( 'id', flat=True).order_by('id')) - self.assertEqual( - (cls.__name__,returned_ids), - (cls.__name__,[1, 4, 6, 7,])) + self.assertEqual((cls.__name__, returned_ids), + (cls.__name__, [1, 4, 6, 7, ])) def test_02_extra_translated_fields(self): news = NewsExtended.objects.get(pk=1) @@ -60,7 +57,6 @@ class NewsboxAbstractModelsTests(TestCase): self.assertRaises(EmptyPage, r.context['newsset'].previous_page_number) self.assertEqual(r.context['newsset'].next_page_number(), 2) - def test_04_view_detail_200(self): """ Test if generic day views return right informations. @@ -98,9 +94,8 @@ class NewsboxAbstractModelsTests(TestCase): def test_08_get_absolute_url(self): news6 = News.objects.get(pk=6) - expected_results = { - 'en':'/en/newsbox/myapp_i18n/news/2005/07/15/news-6/', - 'fr':'/fr/newsbox/myapp_i18n/news/2005/07/15/actualite-6/',} + expected_results = {'en': '/en/newsbox/myapp_i18n/news/2005/07/15/news-6/', + 'fr': '/fr/newsbox/myapp_i18n/news/2005/07/15/actualite-6/', } for lang in expected_results: activate(lang) self.assertEqual(news6.get_absolute_url(), expected_results[lang]) diff --git a/tests/myapp_i18n/urls.py b/tests/myapp_i18n/urls.py index 252d85c..fbce4f8 100644 --- a/tests/myapp_i18n/urls.py +++ b/tests/myapp_i18n/urls.py @@ -4,14 +4,14 @@ from __future__ import unicode_literals from django.conf.urls import url, include from django.conf.urls.i18n import i18n_patterns from django.contrib import admin -from django.conf import settings from newsbox.views import NewsboxYearArchiveView, NewsboxArchiveView from .models import News admin.autodiscover() -urlpatterns = i18n_patterns('', +urlpatterns = i18n_patterns( + '', url(r'^admin/', include(admin.site.urls)), url(r'^', include('newsbox_i18n.urls')), url(r'^news/$', diff --git a/tests/settings.py b/tests/settings.py index e32d25c..92e01b4 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -22,7 +22,6 @@ INSTALLED_APPS = ( 'django.contrib.sites', 'django.contrib.staticfiles', 'django.contrib.admin', - 'newsbox', 'myapp', ) diff --git a/tests/settings_all30.py b/tests/settings_all30.py index 230561b..689584d 100644 --- a/tests/settings_all30.py +++ b/tests/settings_all30.py @@ -1,17 +1,17 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from settings_cms30 import * +from settings_cms30 import * # noqa -INSTALLED_APPS = list(INSTALLED_APPS + ('myapp_all',)) +INSTALLED_APPS = list(INSTALLED_APPS + ('myapp_all', )) INSTALLED_APPS.remove('myapp_cms') INSTALLED_APPS = tuple(INSTALLED_APPS) -LANGUAGES = [('en', 'English',), ('fr', 'French',),] +LANGUAGES = [('en', 'English', ), ('fr', 'French', ), ] PARLER_DEFAULT_LANGUAGE_CODE = 'fr' PARLER_LANGUAGES = { None: ( - {'code': 'en',}, - {'code': 'fr',}, + {'code': 'en', }, + {'code': 'fr', }, ), 'default': { 'fallbacks': ['fr'], @@ -19,7 +19,7 @@ PARLER_LANGUAGES = { } } ROOT_URLCONF = 'myapp_all.urls' -MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES+( +MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', @@ -30,6 +30,6 @@ MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES+( CMS_PLACEHOLDER_CONF = { 'main': { 'name': "Main content", - 'plugins': ['NewsPlugin','TextPlugin'], + 'plugins': ['NewsPlugin', 'TextPlugin'], }, } diff --git a/tests/settings_all31.py b/tests/settings_all31.py index 2e9fe81..caefcfd 100644 --- a/tests/settings_all31.py +++ b/tests/settings_all31.py @@ -1,17 +1,17 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from settings_cms31 import * +from settings_cms31 import * # noqa -INSTALLED_APPS = list(INSTALLED_APPS + ('myapp_all',)) +INSTALLED_APPS = list(INSTALLED_APPS + ('myapp_all', )) INSTALLED_APPS.remove('myapp_cms') INSTALLED_APPS = tuple(INSTALLED_APPS) -LANGUAGES = [('en', 'English',), ('fr', 'French',),] +LANGUAGES = [('en', 'English', ), ('fr', 'French', ), ] PARLER_DEFAULT_LANGUAGE_CODE = 'fr' PARLER_LANGUAGES = { None: ( - {'code': 'en',}, - {'code': 'fr',}, + {'code': 'en', }, + {'code': 'fr', }, ), 'default': { 'fallbacks': ['fr'], @@ -19,7 +19,7 @@ PARLER_LANGUAGES = { } } ROOT_URLCONF = 'myapp_all.urls' -MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES+( +MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', @@ -30,6 +30,6 @@ MIDDLEWARE_CLASSES=MIDDLEWARE_CLASSES+( CMS_PLACEHOLDER_CONF = { 'main': { 'name': "Main content", - 'plugins': ['NewsPlugin','TextPlugin'], + 'plugins': ['NewsPlugin', 'TextPlugin'], }, } diff --git a/tests/settings_cms30.py b/tests/settings_cms30.py index aff9a8d..53ccf89 100644 --- a/tests/settings_cms30.py +++ b/tests/settings_cms30.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from settings import * +from settings import * # noqa SITE_ID = 1 INSTALLED_APPS = list(INSTALLED_APPS + ( - #cms requirements - 'cms', # django CMS itself - 'mptt', # utilities for implementing a modified pre-order traversal tree - 'menus', # helper for model independent hierarchical website navigation - 'south', # intelligent schema and data migrations - 'sekizai', # for javascript and css management - 'djangocms_admin_style', # for the admin skin. You **must** add 'djangocms_admin_style' in the list before 'django.contrib.admin'. - 'django.contrib.messages', # to enable messages framework (see :ref:`Enable messages <enable-messages>`) + 'cms', + 'mptt', + 'menus', + 'south', + 'sekizai', + 'djangocms_admin_style', + 'django.contrib.messages', 'djangocms_text_ckeditor', 'newsbox_cms', 'myapp_cms', @@ -48,6 +47,6 @@ ROOT_URLCONF = 'myapp_cms.urls' CMS_PLACEHOLDER_CONF = { 'main': { 'name': "Main content", - 'plugins': ['NewsPlugin',], + 'plugins': ['NewsPlugin', ], }, } diff --git a/tests/settings_cms31.py b/tests/settings_cms31.py index 03df6e3..14b41b3 100644 --- a/tests/settings_cms31.py +++ b/tests/settings_cms31.py @@ -1,16 +1,15 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from settings import * +from settings import * # noqa SITE_ID = 1 INSTALLED_APPS = list(INSTALLED_APPS + ( - #cms requirements - 'cms', # django CMS itself - 'treebeard', # utilities for implementing a modified pre-order traversal tree - 'menus', # helper for model independent hierarchical website navigation - 'sekizai', # for javascript and css management - 'djangocms_admin_style', # for the admin skin. You **must** add 'djangocms_admin_style' in the list before 'django.contrib.admin'. - 'django.contrib.messages', # to enable messages framework (see :ref:`Enable messages <enable-messages>`) + 'cms', + 'treebeard', + 'menus', + 'sekizai', + 'djangocms_admin_style', + 'django.contrib.messages', 'djangocms_text_ckeditor', 'newsbox_cms', 'myapp_cms', @@ -61,6 +60,6 @@ ROOT_URLCONF = 'myapp_cms.urls' CMS_PLACEHOLDER_CONF = { 'main': { 'name': "Main content", - 'plugins': ['NewsPlugin',], + 'plugins': ['NewsPlugin', ], }, } diff --git a/tests/settings_i18n.py b/tests/settings_i18n.py index b6a6573..016917b 100644 --- a/tests/settings_i18n.py +++ b/tests/settings_i18n.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from settings import * +from settings import * # noqa -LANGUAGES = [('en', 'English'),('fr', 'French'),] +LANGUAGES = [('en', 'English'), ('fr', 'French'), ] PARLER_DEFAULT_LANGUAGE_CODE = 'fr' PARLER_LANGUAGES = { None: ( - {'code': 'en',}, - {'code': 'fr',}, + {'code': 'en', }, + {'code': 'fr', }, ), 'default': { 'fallbacks': ['fr'], @@ -15,7 +15,7 @@ PARLER_LANGUAGES = { } } ROOT_URLCONF = 'myapp_i18n.urls' -MIDDLEWARE_CLASSES=( +MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', diff --git a/tests/utils.py b/tests/utils.py index 3a98796..26e5cab 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,21 +1,24 @@ # -*- coding: utf-8 -*- + from __future__ import unicode_literals + from myapp.models import News, NewsExpired, NewsSEO, NewsComplete, NewsExtended -from myapp_cms.models import News as cms_News, \ - NewsComplete as cms_NewsComplete, \ - NewsExtended as cms_NewsExtended -from myapp_i18n.models import News as i18n_News, \ - NewsComplete as i18n_NewsComplete, \ - NewsExtended as i18n_NewsExtended -from myapp_all.models import News as all_News, \ - NewsComplete as all_NewsComplete, \ - NewsExtended as all_NewsExtended +from myapp_cms.models import News as cms_News +from myapp_cms.models import NewsComplete as cms_NewsComplete +from myapp_cms.models import NewsExtended as cms_NewsExtended +from myapp_i18n.models import News as i18n_News +from myapp_i18n.models import NewsComplete as i18n_NewsComplete +from myapp_i18n.models import NewsExtended as i18n_NewsExtended +from myapp_all.models import News as all_News +from myapp_all.models import NewsComplete as all_NewsComplete +from myapp_all.models import NewsExtended as all_NewsExtended from cms.models.placeholdermodel import Placeholder from cms.api import add_plugin + def get_fields_values(newsTypes, newsType, i, inherited): - fields_values={} - if newsType in inherited : + fields_values = {} + if newsType in inherited: return fields_values inherited.append(newsType) @@ -25,231 +28,229 @@ def get_fields_values(newsTypes, newsType, i, inherited): fields_values.update(newsTypes[newsType]['overwrites'][i]) return fields_values + def create_tests_data(app=None): - #Translations of translatable fields + # Translations of translatable fields translations = { - 'en':{ - #default content is already in english + 'en': { + # default content is already in english }, - 'fr':{ - 'newsbox_slug':'actualite-%d', - 'newsbox_title':'Actualité %d', - 'newsbox_summary':'Résumé de l\'actualité %d', - 'newsbox_body':'Corps de l\'actualité %d', - 'newsbox_meta_description':'Meta description de l\'actualité %d', - 'newsbox_meta_keywords':'motclef1, motclef2, actualite-%d', - 'content_field':'Contenu additionnel de l\'actualité %d', - 'seo_field':'SEO additionnel de l\'actualité %d', + 'fr': { + 'newsbox_slug': 'actualite-%d', + 'newsbox_title': 'Actualité %d', + 'newsbox_summary': 'Résumé de l\'actualité %d', + 'newsbox_body': 'Corps de l\'actualité %d', + 'newsbox_meta_description': 'Meta description de l\'actualité %d', + 'newsbox_meta_keywords': 'motclef1, motclef2, actualite-%d', + 'content_field': 'Contenu additionnel de l\'actualité %d', + 'seo_field': 'SEO additionnel de l\'actualité %d', }, } translatable_fields = translations['fr'].keys() - #array of available NewsTypes - #for each NewsType, we define a subarray with the model to use and - #default fields values in "overwrites" which is a subarray too : + # array of available NewsTypes + # for each NewsType, we define a subarray with the model to use and + # default fields values in "overwrites" which is a subarray too : # - inherit is a list of other NewsTypes to get default fields.from their conf # - key 0 is the default values for all news # - keys 1 to N is an array with values to overwrite for news 1 to N. # Can also contain a "languages" list with language code for translations. - #Only used for I18N Models. Translations are in "translations" variable. + # Only used for I18N Models. Translations are in "translations" variable. newsTypes = { - 'News' : { - 'model':News, - 'overwrites':{ - 'inherit':[], - #0 is for base values - 0:{ - 'newsbox_slug':'news-%d', - 'newsbox_title':'News %d', - 'newsbox_date':'2014-02-22T10:00:00+02:00', - 'newsbox_publication_start_date':'1985-07-02T10:00:00+02:00', - 'newsbox_published':True, - 'newsbox_summary':'Summary of the news %d', - 'newsbox_body':'Body of the news %d', + 'News': { + 'model': News, + 'overwrites': { + 'inherit': [], + # 0 is for base values + 0: { + 'newsbox_slug': 'news-%d', + 'newsbox_title': 'News %d', + 'newsbox_date': '2014-02-22T10:00:00+02:00', + 'newsbox_publication_start_date': '1985-07-02T10:00:00+02:00', + 'newsbox_published': True, + 'newsbox_summary': 'Summary of the news %d', + 'newsbox_body': 'Body of the news %d', }, - 1:{}, - 2:{'newsbox_published':False}, - 3:{'newsbox_publication_start_date':'2020-01-01T10:00:00+02:00'}, - 4:{'newsbox_body':''}, - 5:{'newsbox_published':False}, - 6:{'newsbox_date':'2005-07-15T10:00:00+02:00'}, - 7:{'newsbox_date':'2020-01-01T10:00:00+02:00'}, + 1: {}, + 2: {'newsbox_published': False}, + 3: {'newsbox_publication_start_date': '2020-01-01T10:00:00+02:00'}, + 4: {'newsbox_body': ''}, + 5: {'newsbox_published': False}, + 6: {'newsbox_date': '2005-07-15T10:00:00+02:00'}, + 7: {'newsbox_date': '2020-01-01T10:00:00+02:00'}, }, }, - 'NewsExpired' : { - 'model':NewsExpired, - 'overwrites':{ - 'inherit':['News',], - 5:{ - 'newsbox_published':True, - 'newsbox_publication_end_date':'2000-01-01T10:00:00+02:00', + 'NewsExpired': { + 'model': NewsExpired, + 'overwrites': { + 'inherit': ['News', ], + 5: { + 'newsbox_published': True, + 'newsbox_publication_end_date': '2000-01-01T10:00:00+02:00', }, }, }, - 'NewsSEO' : { - 'model':NewsSEO, - 'overwrites':{ - 'inherit':['News',], - 0:{ - 'newsbox_indexed':True, - 'newsbox_meta_description':'Meta description of the news %d', - 'newsbox_meta_keywords':'keyword1, keyword2, news-%d', + 'NewsSEO': { + 'model': NewsSEO, + 'overwrites': { + 'inherit': ['News', ], + 0: { + 'newsbox_indexed': True, + 'newsbox_meta_description': 'Meta description of the news %d', + 'newsbox_meta_keywords': 'keyword1, keyword2, news-%d', }, - 6:{ - 'newsbox_indexed':False, + 6: { + 'newsbox_indexed': False, }, }, }, - 'NewsComplete' : { - 'model':NewsComplete, - 'overwrites':{ - 'inherit':['NewsExpired', 'NewsSEO'], + 'NewsComplete': { + 'model': NewsComplete, + 'overwrites': { + 'inherit': ['NewsExpired', 'NewsSEO'], }, }, - 'NewsExtended' : { - 'model':NewsExtended, - 'overwrites':{ - 'inherit':['NewsComplete'], - 0:{ - 'general_field':'Test', - 'content_field':'Extra content of the news %d', - 'seo_field':'Extra SEO of the news %d', + 'NewsExtended': { + 'model': NewsExtended, + 'overwrites': { + 'inherit': ['NewsComplete'], + 0: { + 'general_field': 'Test', + 'content_field': 'Extra content of the news %d', + 'seo_field': 'Extra SEO of the news %d', }, } }, - #CMS Models - 'cms_News' : { - 'model':cms_News, - 'overwrites':{ - 'inherit':['News',], - 0:{ - 'newsbox_summary':'<p>Summary of the news %d</p>', - 'newsbox_body':'<p>Body of the news %d</p>', + # CMS Models + 'cms_News': { + 'model': cms_News, + 'overwrites': { + 'inherit': ['News', ], + 0: { + 'newsbox_summary': '<p>Summary of the news %d</p>', + 'newsbox_body': '<p>Body of the news %d</p>', }, }, }, - 'cms_NewsComplete' : { - 'model':cms_NewsComplete, - 'overwrites':{ - 'inherit':['NewsComplete', 'cms_News'], + 'cms_NewsComplete': { + 'model': cms_NewsComplete, + 'overwrites': { + 'inherit': ['NewsComplete', 'cms_News'], }, }, - 'cms_NewsExtended' : { - 'model':cms_NewsExtended, - 'overwrites':{ - 'inherit':['cms_NewsComplete'], + 'cms_NewsExtended': { + 'model': cms_NewsExtended, + 'overwrites': { + 'inherit': ['cms_NewsComplete'], }, }, - #I18N Models - 'i18n_News' : { - 'languages':['en', 'fr',], - 'model':i18n_News, - 'overwrites':{ - 'inherit':['News',], + # I18N Models + 'i18n_News': { + 'languages': ['en', 'fr', ], + 'model': i18n_News, + 'overwrites': { + 'inherit': ['News', ], }, }, - 'i18n_NewsComplete' : { - 'languages':['en', 'fr',], - 'model':i18n_NewsComplete, - 'overwrites':{ - 'inherit':['NewsComplete', 'i18n_News'], + 'i18n_NewsComplete': { + 'languages': ['en', 'fr', ], + 'model': i18n_NewsComplete, + 'overwrites': { + 'inherit': ['NewsComplete', 'i18n_News'], }, }, - 'i18n_NewsExtended' : { - 'languages':['en', 'fr',], - 'model':i18n_NewsExtended, - 'overwrites':{ - 'inherit':['NewsExtended', 'i18n_NewsComplete'], + 'i18n_NewsExtended': { + 'languages': ['en', 'fr', ], + 'model': i18n_NewsExtended, + 'overwrites': { + 'inherit': ['NewsExtended', 'i18n_NewsComplete'], }, }, - #ALL Models - 'all_News' : { - 'languages':['en', 'fr',], - 'model':all_News, - 'overwrites':{ - 'inherit':['News',], - 0:{ - 'newsbox_summary':'<p>Summary of the news %d</p>', - 'newsbox_body':'<p>Body of the news %d</p>', + # ALL Models + 'all_News': { + 'languages': ['en', 'fr', ], + 'model': all_News, + 'overwrites': { + 'inherit': ['News', ], + 0: { + 'newsbox_summary': '<p>Summary of the news %d</p>', + 'newsbox_body': '<p>Body of the news %d</p>', }, }, }, - 'all_NewsComplete' : { - 'languages':['en', 'fr',], - 'model':all_NewsComplete, - 'overwrites':{ - 'inherit':['NewsComplete', 'all_News'], + 'all_NewsComplete': { + 'languages': ['en', 'fr', ], + 'model': all_NewsComplete, + 'overwrites': { + 'inherit': ['NewsComplete', 'all_News'], }, }, - 'all_NewsExtended' : { - 'languages':['en', 'fr',], - 'model':all_NewsExtended, - 'overwrites':{ - 'inherit':['NewsExtended', 'all_NewsComplete'], + 'all_NewsExtended': { + 'languages': ['en', 'fr', ], + 'model': all_NewsExtended, + 'overwrites': { + 'inherit': ['NewsExtended', 'all_NewsComplete'], }, }, } nb_news_a_creer = len(newsTypes['News']['overwrites'])-2 for newsType, infos in newsTypes.items(): - if app and app +'_' not in newsType: + if app and (app + '_') not in newsType: continue base_kwargs = get_fields_values(newsTypes, newsType, 0, []) - print '\n%s\n' % newsType + '-' * len(newsType) for i in range(1, nb_news_a_creer+1): - - if not 'languages' in infos: - infos['languages'] = [None,] + if 'languages' not in infos: + infos['languages'] = [None, ] for lang in infos['languages']: kwargs = base_kwargs.copy() kwargs.update(get_fields_values(newsTypes, newsType, i, [])) - #Retrieve translated values if a lang is specified + # Retrieve translated values if a lang is specified if lang and lang in translations and translations[lang]: for k in translations[lang]: - if k in kwargs : + if k in kwargs: if kwargs[k][0:3] == '<p>': kwargs[k] = '<p>'+translations[lang][k]+'</p>' else: kwargs[k] = translations[lang][k] - #Add the "nth" informations for fields which need it + # Add the "nth" informations for fields which need it for k in kwargs: if type(kwargs[k]) in (str, unicode) and '%d' in kwargs[k]: kwargs[k] = kwargs[k] % i try: - #Transform field into placeholders if needed + # Transform field into placeholders if needed ph_names = getattr(infos['model']._meta, 'placeholder_field_names') for ph_name in ph_names: - if not ph_name in kwargs: + if ph_name not in kwargs: continue ph = Placeholder.objects.create(slot=ph_name) - add_plugin(ph, 'TextPlugin', lang if lang != None else 'en', body=kwargs[ph_name]) + add_plugin(ph, 'TextPlugin', lang if lang is not None else 'en', + body=kwargs[ph_name]) kwargs[ph_name] = ph except AttributeError: pass - translatable_values = {k:v - for k, v in kwargs.items() - if k in translatable_fields} + translatable_values = {k: v for k, v in kwargs.items() + if k in translatable_fields} untranslatable_fields = list(set(kwargs) - set(translatable_fields)) - untranslatable_values = {k:v - for k, v in kwargs.items() - if k in untranslatable_fields} + untranslatable_values = {k: v for k, v in kwargs.items() + if k in untranslatable_fields} langstr = ' (%s)' % lang if lang else '' print ' - %d%s : %s' % (i, langstr, kwargs['newsbox_title']) if lang == infos['languages'][0]: news = infos['model'](**untranslatable_values) - if lang : + if lang: news.translate(lang) for k in translatable_values: setattr(news, k, translatable_values[k]) -- GitLab