Merge remote-tracking branch 'upstream/develop' into develop

* upstream/develop: (69 commits)
  Bump development version
  Add travis cache
  Test travis cache
  Update history
  Fixing #209
  Test copy relations
  fix error in wizard tests
  Fix test
  Add Django 1.9 to travis
  Django 1.9 compatible admin
  Add support for moved ThumbnailOption
  Update changelog
  use post.get_title() to get fallback title from meta
  don't repeat blog title in search index twice
  remove defunct test
  fix Post.get_keywords to handle empty keywords, cleanup search_indexes
  Fix test
  Fix string formatting
  Fix selecting current menu item according to menu layout
  Update history
  ...

Conflicts:
	djangocms_blog/locale/sl/LC_MESSAGES/django.mo
	djangocms_blog/locale/sl/LC_MESSAGES/django.po
This commit is contained in:
Zan Anderle 2016-03-01 09:31:48 +01:00
commit 2fbb07dc52
73 changed files with 2184 additions and 1075 deletions

4
.checkignore Normal file
View file

@ -0,0 +1,4 @@
tests/*
docs/*
djangocms_blog/south_migrations/*
djangocms_blog/migrations/*

5
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,5 @@
# This file is generated by GitLab CI
ci:
script:
- COMMAND="coverage run" tox -epep8,isort,py35-django19-cms32,py34-django18-cms31,py27-django16-cms30
- if [[ $? -eq 0 ]]; then coverage report; fi

View file

@ -15,6 +15,7 @@ env:
matrix: matrix:
- TOXENV='pep8' - TOXENV='pep8'
- TOXENV='isort' - TOXENV='isort'
- DJANGO='django19' CMS='cms32'
- DJANGO='django18' CMS='cms32' - DJANGO='django18' CMS='cms32'
- DJANGO='django18' CMS='cms31' - DJANGO='django18' CMS='cms31'
- DJANGO='django17' CMS='cms32' - DJANGO='django17' CMS='cms32'
@ -27,7 +28,6 @@ env:
# command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors # command to install dependencies, e.g. pip install -r requirements.txt --use-mirrors
install: install:
- pip install -U tox>=1.8 coveralls
- "if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then export PYVER=py26; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then export PYVER=py26; fi"
- "if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then export PYVER=py27; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '2.7' ]]; then export PYVER=py27; fi"
- "if [[ $TRAVIS_PYTHON_VERSION == '3.3' ]]; then export PYVER=py33; fi" - "if [[ $TRAVIS_PYTHON_VERSION == '3.3' ]]; then export PYVER=py33; fi"
@ -39,7 +39,7 @@ install:
script: COMMAND='coverage run' tox -e$TOXENV script: COMMAND='coverage run' tox -e$TOXENV
before_install: before_install:
- pip install codecov - pip install -U tox>=1.8 coveralls codecov wheel pip
after_success: after_success:
- codecov - codecov
- coveralls - coveralls
@ -72,6 +72,10 @@ matrix:
env: DJANGO='django18' CMS='cms31' env: DJANGO='django18' CMS='cms31'
- python: 2.6 - python: 2.6
env: DJANGO='django18' CMS='cms32' env: DJANGO='django18' CMS='cms32'
- python: 2.6
env: DJANGO='django19' CMS='cms32'
- python: 3.3
env: DJANGO='django19' CMS='cms32'
- python: 3.5 - python: 3.5
env: DJANGO='django16' CMS='cms30' env: DJANGO='django16' CMS='cms30'
- python: 3.5 - python: 3.5
@ -85,26 +89,10 @@ matrix:
- python: 3.5 - python: 3.5
env: DJANGO='django17' CMS='cms32' env: DJANGO='django17' CMS='cms32'
allow_failures:
- python: 2.6 cache:
env: DJANGO='django16' CMS='cms32' directories:
- python: 2.7 - $HOME/.pip-accel
env: DJANGO='django16' CMS='cms32' - $HOME/.cache/pip
- python: 2.7
env: DJANGO='django17' CMS='cms32'
- python: 2.7
env: DJANGO='django18' CMS='cms32'
- python: 3.3
env: DJANGO='django16' CMS='cms32'
- python: 3.3
env: DJANGO='django17' CMS='cms32'
- python: 3.3
env: DJANGO='django18' CMS='cms32'
- python: 3.4
env: DJANGO='django16' CMS='cms32'
- python: 3.4
env: DJANGO='django17' CMS='cms32'
- python: 3.4
env: DJANGO='django18' CMS='cms32'
- python: 3.5
env: DJANGO='django18' CMS='cms32'

View file

@ -25,3 +25,4 @@ Contributors
* Stefan Wehrmeyer * Stefan Wehrmeyer
* Sylvain Fankhauser * Sylvain Fankhauser
* Tadas Dailyda * Tadas Dailyda
* Olivier Tabone

View file

@ -3,11 +3,27 @@
History History
------- -------
0.6.3 (XXXX-XX-XX) 0.7.0 (unreleased)
++++++++++++++++++ ++++++++++++++++++
* Make categories non required
* Fix tests with parler>=1.6
* Use all_languages_column to admin
* Add publish button
* Fix issues in migrations. Thanks @skirsdeda
* Fix selecting current menu item according to menu layout
* Fix some issues with haystack indexes
* Add support for moved ThumbnailOption
* Fix Django 1.9 issues
* Fix copy relations method in plugins
0.6.3 (2015-12-22)
++++++++++++++++++
* Add BLOG_ADMIN_POST_FIELDSET_FILTER to filter admin fieldsets
* Ensure correct creation of full URL for canonical urls * Ensure correct creation of full URL for canonical urls
* Move constants to settings * Move constants to settings
* Fix error when no config is found
0.6.2 (2015-11-16) 0.6.2 (2015-11-16)
++++++++++++++++++ ++++++++++++++++++

View file

@ -30,7 +30,7 @@ djangocms-blog
:target: https://codeclimate.com/github/nephila/djangocms-blog :target: https://codeclimate.com/github/nephila/djangocms-blog
:alt: Code Climate :alt: Code Climate
A djangoCMS 3 blog application. django CMS blog application - Support for multilingual posts, placeholders, social network meta tags and configurable apphooks.
Supported Django versions: Supported Django versions:
@ -47,6 +47,11 @@ Supported django CMS versions:
A datamigration is in place to migrate the data, but check that A datamigration is in place to migrate the data, but check that
works ok for your project before upgrading, as this might delete works ok for your project before upgrading, as this might delete
some relevant data. some relevant data.
Some plugins have a broken tag management prior to 0.6, in case
you have issues with tags, upgrade to latest version to have it fixed.
.. warning:: When upgrading to version 0.6, check that every post as an attached
category, or select a menu without categories.
.. warning:: Starting from version 0.5, this package does not declare dependency .. warning:: Starting from version 0.5, this package does not declare dependency
on South anymore; please install it separately if using this on South anymore; please install it separately if using this
@ -88,6 +93,7 @@ Add ``djangocms_blog`` and its dependencies to INSTALLED_APPS::
... ...
'filer', 'filer',
'easy_thumbnails', 'easy_thumbnails',
'aldryn_apphooks_config',
'cmsplugin_filer_image', 'cmsplugin_filer_image',
'parler', 'parler',
'taggit', 'taggit',
@ -98,7 +104,7 @@ Add ``djangocms_blog`` and its dependencies to INSTALLED_APPS::
... ...
] ]
If you installed the **admin-enhancer** variant, add ``admin_enhancer`` to ``INSTALLED_APPS:: If you installed the **admin-enhancer** variant, add ``admin_enhancer`` to ``INSTALLED_APPS``::
INSTALLED_APPS = [ INSTALLED_APPS = [
... ...
@ -170,6 +176,9 @@ suited for your deployment.
{'code': 'it',}, {'code': 'it',},
{'code': 'fr',}, {'code': 'fr',},
), ),
'default': {
'fallbacks': ['en', 'it', 'fr'],
}
} }
* Add the following to your ``urls.py``:: * Add the following to your ``urls.py``::
@ -181,12 +190,17 @@ suited for your deployment.
`Auto setup <auto_setup>`_: `Auto setup <auto_setup>`_:
* Create a new django CMS page * Create a new django CMS page
* Go to Advanced settings and select Blog from the Application selector and * Go to **Advanced settings** and select Blog from the **Application** selector and
create an application configuration; create an **Application configuration**;
* Eventually customise the Application instance name; * Eventually customise the Application instance name;
* Publish the page * Publish the page
* Restart the project instance to properly load blog urls. * Restart the project instance to properly load blog urls.
.. warning:: After adding the apphook to the page you **cannot** change the **Instance Namspace**
field for the defined **AppHokConfig**; if you want to change it, create a new one
with the correct namespace, go in the CMS page **Advanced settings** and switch to the
new **Application configuration**
* Add and edit blog by creating them in the admin or using the toolbar, * Add and edit blog by creating them in the admin or using the toolbar,
and the use the `django CMS frontend editor <http://django-cms.readthedocs.org/en/support-3.0.x/user/reference/page_admin.html#the-interface>`_ and the use the `django CMS frontend editor <http://django-cms.readthedocs.org/en/support-3.0.x/user/reference/page_admin.html#the-interface>`_
to edit the blog content: to edit the blog content:
@ -226,11 +240,14 @@ Menu
``djangocms_blog`` provides support for django CMS menu framework. ``djangocms_blog`` provides support for django CMS menu framework.
By default all the categories and posts are added to the menu, in a hierarcical structure. By default all the categories and posts are added to the menu, in a hierarchical structure.
Is it possibile to configure per Apphook, whether the menu includes post and categories Is it possibile to configure per Apphook, whether the menu includes post and categories
(the default), only categorie, only posts or no item. (the default), only categorie, only posts or no item.
If "post and categories" or "only categories" are set, all the posts not associated with a
category are not added to the menu.
Templates Templates
+++++++++ +++++++++
@ -363,6 +380,16 @@ Global Settings
used; (default: ``True``) used; (default: ``True``)
* BLOG_DEFAULT_PUBLISHED: If posts are marked as published by default; * BLOG_DEFAULT_PUBLISHED: If posts are marked as published by default;
(default: ``False``) (default: ``False``)
* BLOG_ADMIN_POST_FIELDSET_FILTER: Callable function to change(add or filter)
fields to fieldsets for admin post edit form; (default: ``False``). Function simple example::
def fieldset_filter_function(fsets, request, obj=None):
if request.user.groups.filter(name='Editor').exists():
fsets[1][1]['fields'][0].append('author') # adding 'author' field if user is Editor
return fsets
* BLOG_AVAILABLE_PERMALINK_STYLES: Choices of permalinks styles; * BLOG_AVAILABLE_PERMALINK_STYLES: Choices of permalinks styles;
* BLOG_PERMALINK_URLS: URLConf corresponding to * BLOG_PERMALINK_URLS: URLConf corresponding to
BLOG_AVAILABLE_PERMALINK_STYLES; BLOG_AVAILABLE_PERMALINK_STYLES;

View file

@ -4,7 +4,8 @@ from __future__ import absolute_import, print_function, unicode_literals
from tempfile import mkdtemp from tempfile import mkdtemp
gettext = lambda s: s
def gettext(s): return s
HELPER_SETTINGS = dict( HELPER_SETTINGS = dict(
ROOT_URLCONF='tests.test_utils.urls', ROOT_URLCONF='tests.test_utils.urls',
@ -68,7 +69,7 @@ HELPER_SETTINGS = dict(
{'code': 'en'}, {'code': 'en'},
), ),
'default': { 'default': {
'fallback': 'en', 'fallbacks': ['en'],
'hide_untranslated': False, 'hide_untranslated': False,
} }
}, },
@ -91,7 +92,7 @@ HELPER_SETTINGS = dict(
), ),
FILE_UPLOAD_TEMP_DIR=mkdtemp(), FILE_UPLOAD_TEMP_DIR=mkdtemp(),
SITE_ID=1, SITE_ID=1,
HAYSTACK_CONNECTIONS = { HAYSTACK_CONNECTIONS={
"default": {} "default": {}
} }
) )

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__author__ = 'Iacopo Spalletti' __author__ = 'Iacopo Spalletti'
__email__ = 'i.spalletti@nephila.it' __email__ = 'i.spalletti@nephila.it'
__version__ = '0.6.2.post1' __version__ = '0.7.0.b1'
default_app_config = 'djangocms_blog.apps.BlogAppConfig' default_app_config = 'djangocms_blog.apps.BlogAppConfig'

View file

@ -7,9 +7,12 @@ from aldryn_apphooks_config.admin import BaseAppHookConfig, ModelAppHookConfig
from cms.admin.placeholderadmin import FrontendEditableAdminMixin, PlaceholderAdminMixin from cms.admin.placeholderadmin import FrontendEditableAdminMixin, PlaceholderAdminMixin
from django import forms from django import forms
from django.conf import settings from django.conf import settings
from django.conf.urls import url
from django.contrib import admin from django.contrib import admin
from django.contrib.auth import get_user_model from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _ from django.http import HttpResponseRedirect
from django.utils.six import callable
from django.utils.translation import get_language_from_request, ugettext_lazy as _
from parler.admin import TranslatableAdmin from parler.admin import TranslatableAdmin
from .cms_appconfig import BlogConfig from .cms_appconfig import BlogConfig
@ -25,6 +28,7 @@ except ImportError:
class BlogCategoryAdmin(EnhancedModelAdminMixin, ModelAppHookConfig, TranslatableAdmin): class BlogCategoryAdmin(EnhancedModelAdminMixin, ModelAppHookConfig, TranslatableAdmin):
def get_prepopulated_fields(self, request, obj=None): def get_prepopulated_fields(self, request, obj=None):
app_config_default = self._app_config_select(request, obj) app_config_default = self._app_config_select(request, obj)
if app_config_default is None and request.method == 'GET': if app_config_default is None and request.method == 'GET':
@ -41,7 +45,8 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
ModelAppHookConfig, TranslatableAdmin): ModelAppHookConfig, TranslatableAdmin):
form = PostAdminForm form = PostAdminForm
list_display = [ list_display = [
'title', 'author', 'date_published', 'app_config', 'languages', 'date_published_end' 'title', 'author', 'date_published', 'app_config', 'all_languages_column',
'date_published_end'
] ]
list_filter = ('app_config',) list_filter = ('app_config',)
date_hierarchy = 'date_published' date_hierarchy = 'date_published'
@ -71,8 +76,35 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
'default_published': 'publish' 'default_published': 'publish'
} }
def languages(self, obj): def get_urls(self):
return ','.join(obj.get_available_languages()) """
Customize the modeladmin urls
"""
urls = [
url(r'^publish/([0-9]+)/$', self.admin_site.admin_view(self.publish_post),
name='djangocms_blog_publish_article'),
]
urls.extend(super(PostAdmin, self).get_urls())
return urls
def publish_post(self, request, pk):
"""
Admin view to publish a single post
:param request: request
:param pk: primary key of the post to publish
:return: Redirect to the post itself (if found) or fallback urls
"""
language = get_language_from_request(request, check_path=True)
try:
post = Post.objects.get(pk=int(pk))
post.publish = True
post.save()
return HttpResponseRedirect(post.get_absolute_url(language))
except Exception:
try:
return HttpResponseRedirect(request.META['HTTP_REFERER'])
except KeyError:
return HttpResponseRedirect(reverse('djangocms_blog:posts-latest'))
def formfield_for_dbfield(self, db_field, **kwargs): def formfield_for_dbfield(self, db_field, **kwargs):
field = super(PostAdmin, self).formfield_for_dbfield(db_field, **kwargs) field = super(PostAdmin, self).formfield_for_dbfield(db_field, **kwargs)
@ -85,6 +117,12 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
return field return field
def get_fieldsets(self, request, obj=None): def get_fieldsets(self, request, obj=None):
"""
Customize the fieldsets according to the app settings
:param request: request
:param obj: post
:return: fieldsets configuration
"""
app_config_default = self._app_config_select(request, obj) app_config_default = self._app_config_select(request, obj)
if app_config_default is None and request.method == 'GET': if app_config_default is None and request.method == 'GET':
return super(PostAdmin, self).get_fieldsets(request, obj) return super(PostAdmin, self).get_fieldsets(request, obj)
@ -108,18 +146,16 @@ class PostAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin,
fsets[1][1]['fields'][0].append('sites') fsets[1][1]['fields'][0].append('sites')
if request.user.is_superuser: if request.user.is_superuser:
fsets[1][1]['fields'][0].append('author') fsets[1][1]['fields'][0].append('author')
filter_function = get_setting('ADMIN_POST_FIELDSET_FILTER')
if callable(filter_function):
fsets = filter_function(fsets, request, obj=obj)
return fsets return fsets
def get_prepopulated_fields(self, request, obj=None): def get_prepopulated_fields(self, request, obj=None):
return {'slug': ('title',)} return {'slug': ('title',)}
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):
if not obj.author_id and obj.app_config.set_author: obj._set_default_author(request.user)
if get_setting('AUTHOR_DEFAULT') is True:
user = request.user
else:
user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT'))
obj.author = user
super(PostAdmin, self).save_model(request, obj, form, change) super(PostAdmin, self).save_model(request, obj, form, change)
class Media: class Media:
@ -132,6 +168,12 @@ class BlogConfigAdmin(BaseAppHookConfig, TranslatableAdmin):
@property @property
def declared_fieldsets(self): def declared_fieldsets(self):
return self.get_fieldsets(None)
def get_fieldsets(self, request, obj=None):
"""
Fieldsets configuration
"""
return [ return [
(None, { (None, {
'fields': ('type', 'namespace', 'app_title', 'object_name') 'fields': ('type', 'namespace', 'app_title', 'object_name')

View file

@ -23,6 +23,10 @@ class BlogConfig(TranslatableModel, AppHookConfig):
), ),
) )
class Meta:
verbose_name = _('blog config')
verbose_name_plural = _('blog configs')
def get_app_title(self): def get_app_title(self):
return getattr(self, 'app_title', _('untitled')) return getattr(self, 'app_title', _('untitled'))

View file

@ -3,6 +3,7 @@ from __future__ import absolute_import, print_function, unicode_literals
from cms.toolbar_base import CMSToolbar from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool from cms.toolbar_pool import toolbar_pool
from cms.utils.urlutils import admin_reverse
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.translation import override, ugettext_lazy as _ from django.utils.translation import override, ugettext_lazy as _
@ -33,6 +34,22 @@ class BlogToolbar(CMSToolbar):
'admin:djangocms_blog_post_change', args=(current_post.pk,)), 'admin:djangocms_blog_post_change', args=(current_post.pk,)),
active=True) active=True)
def add_publish_button(self):
"""
Adds the publish button to the toolbar if the current post is unpublished
"""
current_post = getattr(self.request, get_setting('CURRENT_POST_IDENTIFIER'), None)
if (self.toolbar.edit_mode and current_post and
not current_post.publish and
self.request.user.has_perm('djangocms_blog.change_post')
): # pragma: no cover # NOQA
classes = ['cms-btn-action', 'blog-publish']
title = _('Publish {0} now').format(current_post.app_config.object_name)
url = admin_reverse('djangocms_blog_publish_article', args=(current_post.pk,))
self.toolbar.add_button(title, url=url, extra_classes=classes, side=self.toolbar.RIGHT)
def post_template_populate(self): def post_template_populate(self):
current_post = getattr(self.request, get_setting('CURRENT_POST_IDENTIFIER'), None) current_post = getattr(self.request, get_setting('CURRENT_POST_IDENTIFIER'), None)
if current_post and self.request.user.has_perm('djangocms_blog.change_post'): # pragma: no cover # NOQA if current_post and self.request.user.has_perm('djangocms_blog.change_post'): # pragma: no cover # NOQA
@ -52,3 +69,4 @@ class BlogToolbar(CMSToolbar):
menu.remove_item(pagetags) menu.remove_item(pagetags)
except ImportError: except ImportError:
pass pass
self.add_publish_button()

View file

@ -1,6 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
from cms.utils.permissions import get_current_user
try: try:
from cms.wizards.wizard_base import Wizard from cms.wizards.wizard_base import Wizard
from cms.wizards.wizard_pool import wizard_pool from cms.wizards.wizard_pool import wizard_pool
@ -35,6 +37,10 @@ try:
class Media: class Media:
js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',) js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',)
def save(self, commit=True):
self.instance._set_default_author(get_current_user())
return super(PostWizardForm, self).save(commit)
class PostWizard(Wizard): class PostWizard(Wizard):
pass pass

View file

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Arabic (http://www.transifex.com/nephila/djangocms-blog/language/ar/)\n" "Language-Team: Arabic (http://www.transifex.com/nephila/djangocms-blog/language/ar/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -26,8 +26,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "المدونة" msgstr "المدونة"
@ -40,155 +39,144 @@ msgid "object name"
msgstr "" msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "" msgstr ""
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "آخر مواضيع المدونة"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "ناشر مواضيع المدونة"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "علامات"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "الأقسام"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "الأرشيف"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "قائمة المواضيع" msgstr "قائمة المواضيع"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "إضافة موضوع" msgstr "إضافة موضوع"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "التعديل على موضوع" msgstr "التعديل على موضوع"
@ -223,7 +211,7 @@ msgstr ""
msgid "modified at" msgid "modified at"
msgstr "" msgstr ""
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -333,52 +321,52 @@ msgstr ""
msgid "blog articles" msgid "blog articles"
msgstr "" msgstr ""
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr ""
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "" msgstr ""
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "" msgstr ""
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr ""
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "" msgstr ""
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr ""
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "" msgstr ""
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -439,6 +427,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "آخر مواضيع المدونة"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "ناشر مواضيع المدونة"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "علامات"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "الأقسام"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "الأرشيف"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "" msgstr ""

View file

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: German (http://www.transifex.com/nephila/djangocms-blog/language/de/)\n" "Language-Team: German (http://www.transifex.com/nephila/djangocms-blog/language/de/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -26,8 +26,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Blog" msgstr "Blog"
@ -40,155 +39,144 @@ msgid "object name"
msgstr "" msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "" msgstr ""
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Letzte Blog-Einträge"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Autoren Blog-Artikel"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tags"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategorien"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archiv"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Post Liste" msgstr "Post Liste"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Post hinzufügen" msgstr "Post hinzufügen"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Post bearbeiten" msgstr "Post bearbeiten"
@ -223,7 +211,7 @@ msgstr "erstellt am"
msgid "modified at" msgid "modified at"
msgstr "bearbeitet am" msgstr "bearbeitet am"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -333,52 +321,52 @@ msgstr "Blog-Artikel"
msgid "blog articles" msgid "blog articles"
msgstr "Blog-Artikel" msgstr "Blog-Artikel"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr ""
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "Anzahl der anzuzeigenden letzten Artikel" msgstr "Anzahl der anzuzeigenden letzten Artikel"
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Nur die Blog-Einträge mit dem ausgewählten Tag anzeigen" msgstr "Nur die Blog-Einträge mit dem ausgewählten Tag anzeigen"
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr ""
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Nur die Blog-Einträge der ausgewählten Kategorie anzeigen" msgstr "Nur die Blog-Einträge der ausgewählten Kategorie anzeigen"
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr ""
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "Die Anzahl der anzuzeigenden Autoren-Artikel" msgstr "Die Anzahl der anzuzeigenden Autoren-Artikel"
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -439,6 +427,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Letzte Blog-Einträge"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Autoren Blog-Artikel"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tags"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategorien"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archiv"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "weiterlesen" msgstr "weiterlesen"

View file

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2014-03-05 18:09+0100\n" "PO-Revision-Date: 2014-03-05 18:09+0100\n"
"Last-Translator: Iacopo Spalletti\n" "Last-Translator: Iacopo Spalletti\n"
"Language-Team: Italian <i.spalletti@nephila.it>\n" "Language-Team: Italian <i.spalletti@nephila.it>\n"
@ -25,8 +25,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Blog" msgstr "Blog"
@ -40,157 +39,148 @@ msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#, fuzzy #, fuzzy
#| msgid "blog categories"
msgid "blog config"
msgstr "blog categories"
#: cms_appconfig.py:28
#, fuzzy
#| msgid "blog categories"
msgid "blog configs"
msgstr "blog categories"
#: cms_appconfig.py:31
#, fuzzy
msgid "untitled" msgid "untitled"
msgstr "Title" msgstr "Title"
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
#, fuzzy #, fuzzy
msgid "Set author" msgid "Set author"
msgstr "Author" msgstr "Author"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
#, fuzzy #, fuzzy
msgid "Facebook author" msgid "Facebook author"
msgstr "Author" msgstr "Author"
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Latest Blog Articles"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Author Blog Articles"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tags"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categories"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archive"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Post list" msgstr "Post list"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Add post" msgstr "Add post"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "" msgstr ""
@ -226,7 +216,7 @@ msgstr "created at"
msgid "modified at" msgid "modified at"
msgstr "modified at" msgstr "modified at"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -349,55 +339,55 @@ msgstr "blog article"
msgid "blog articles" msgid "blog articles"
msgstr "blog articles" msgstr "blog articles"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
#, fuzzy #, fuzzy
msgid "articles" msgid "articles"
msgstr "0 articles" msgstr "0 articles"
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "The number of latests articles to be displayed." msgstr "The number of latests articles to be displayed."
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Show only the blog articles tagged with chosen tags." msgstr "Show only the blog articles tagged with chosen tags."
#: models.py:304 #: models.py:301
#, fuzzy #, fuzzy
msgid "filter by category" msgid "filter by category"
msgstr "blog category" msgstr "blog category"
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Show only the blog articles tagged with chosen categories." msgstr "Show only the blog articles tagged with chosen categories."
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
#, fuzzy #, fuzzy
msgid "authors" msgid "authors"
msgstr "Authors" msgstr "Authors"
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "The number of author articles to be displayed." msgstr "The number of author articles to be displayed."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -462,6 +452,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Latest Blog Articles"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Author Blog Articles"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tags"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categories"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archive"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "read more" msgstr "read more"

View file

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Spanish (http://www.transifex.com/nephila/djangocms-blog/language/es/)\n" "Language-Team: Spanish (http://www.transifex.com/nephila/djangocms-blog/language/es/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -26,8 +26,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Blog" msgstr "Blog"
@ -40,155 +39,144 @@ msgid "object name"
msgstr "" msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "" msgstr ""
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Últimos artículos del blog"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Artículos del blog por author"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Etiquetas"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categorías"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archivo"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Lista de entradas" msgstr "Lista de entradas"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Añadir entradas" msgstr "Añadir entradas"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Editar entrada" msgstr "Editar entrada"
@ -223,7 +211,7 @@ msgstr "Creado en"
msgid "modified at" msgid "modified at"
msgstr "Actualizado en" msgstr "Actualizado en"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -333,52 +321,52 @@ msgstr "artículo del blog"
msgid "blog articles" msgid "blog articles"
msgstr "artículos del blog" msgstr "artículos del blog"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr ""
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "El número de últimos artículos a mostrar." msgstr "El número de últimos artículos a mostrar."
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Mostrar solo los artículos del blog etiquetados con las etiquetas elegidas." msgstr "Mostrar solo los artículos del blog etiquetados con las etiquetas elegidas."
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr ""
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Mostrar solo los artículos del blog etiquetados con las categorías elegidas." msgstr "Mostrar solo los artículos del blog etiquetados con las categorías elegidas."
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr ""
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "El número de autores de artículo a mostrar." msgstr "El número de autores de artículo a mostrar."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -439,6 +427,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Últimos artículos del blog"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Artículos del blog por author"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Etiquetas"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categorías"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archivo"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "leer más" msgstr "leer más"

Binary file not shown.

View file

@ -0,0 +1,541 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Iacopo Spalletti, 2014.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2016-01-20 19:12+0100\n"
"Last-Translator: Olivier Tabone <olivier.tabone@ripplemotion.fr>\n"
"Language-Team: FR <>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.7\n"
#: admin.py:169 admin.py:177 admin.py:185
msgid "You can provide plain strings, Post model attribute or method names"
msgstr ""
"Vous pouvez préciser des chaines de caractères, des attributs ou des "
"methodes du modèle Post"
#: apps.py:15
msgid "django CMS Blog"
msgstr "django CMS Blog"
#: cms_app.py:15 cms_toolbar.py:19 settings.py:111
msgid "Blog"
msgstr "Blog"
#: cms_appconfig.py:20
msgid "application title"
msgstr "TItre de lapplication"
#: cms_appconfig.py:22
msgid "object name"
msgstr "Nom de lobjet"
#: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr "Catégorie du blog"
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr "Catégories du blog"
#: cms_appconfig.py:31
msgid "untitled"
msgstr "Titre"
#: cms_appconfig.py:36
msgid "Post published by default"
msgstr "Post publié par défaut"
#: cms_appconfig.py:40
msgid "Permalink structure"
msgstr "Structure permalien"
#: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body"
msgstr "Utiliser une balise et des plugins pour le corps de larticle"
#: cms_appconfig.py:49
msgid "Use abstract field"
msgstr "Utiliser un champ abstrait"
#: cms_appconfig.py:53
msgid "Set author"
msgstr "Auteur"
#: cms_appconfig.py:53
msgid "Set author by default"
msgstr "Spécifier lauteur par défaut"
#: cms_appconfig.py:57
msgid "Paginate size"
msgstr "Nombre darticle par page"
#: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?"
msgstr ""
"Lors de la pagination des listes, combien souhaitez vous afficher darticles "
"par page ?"
#: cms_appconfig.py:61
msgid "Template prefix"
msgstr "Prefixe dans le template"
#: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from"
msgstr "Répertoire alternatif à partir du quel charger les templates du blog"
#: cms_appconfig.py:65
msgid "Menu structure"
msgstr "Structure du menu"
#: cms_appconfig.py:67
msgid "Structure of the django CMS menu"
msgstr "Structure du menu django CMS"
#: cms_appconfig.py:70
msgid "Sitemap changefreq"
msgstr "changefreq de la Sitemap"
#: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items"
msgstr "Attribut Changfreq pour chaque entrée de la sitemap."
#: cms_appconfig.py:76
msgid "Sitemap priority"
msgstr "Priorité de la sitemap"
#: cms_appconfig.py:78
msgid "Priority attribute for sitemap items"
msgstr "Priorité de chaque entrée de la sitemap"
#: cms_appconfig.py:81
msgid "Object type"
msgstr "Type de lobjet"
#: cms_appconfig.py:85
msgid "Facebook type"
msgstr "Facebook type"
#: cms_appconfig.py:89
msgid "Facebook application ID"
msgstr "Facebook application ID"
#: cms_appconfig.py:93
msgid "Facebook profile ID"
msgstr "Facebook profile ID"
#: cms_appconfig.py:97
msgid "Facebook page URL"
msgstr "Facebook page URL"
#: cms_appconfig.py:101
msgid "Facebook author URL"
msgstr "Facebook author URL"
#: cms_appconfig.py:105
msgid "Facebook author"
msgstr "Auteur"
#: cms_appconfig.py:109
msgid "Twitter type"
msgstr "Twitter type"
#: cms_appconfig.py:113
msgid "Twitter site handle"
msgstr "Twitter site handle"
#: cms_appconfig.py:117
msgid "Twitter author handle"
msgstr "Twitter author handle"
#: cms_appconfig.py:121
msgid "Google+ type"
msgstr "Google+ type"
#: cms_appconfig.py:125
msgid "Google+ author name"
msgstr "Google+ author name"
#: cms_toolbar.py:22
msgid "Post list"
msgstr "Post list"
#: cms_toolbar.py:24
msgid "Add post"
msgstr "Add post"
#: cms_toolbar.py:28
msgid "Edit configuration"
msgstr "Modifier la configuration"
#: cms_toolbar.py:32
msgid "Edit Post"
msgstr "Modifier Post"
#: cms_wizards.py:47
#, python-brace-format
msgid "New {0}"
msgstr "Nouveau {0}"
#: cms_wizards.py:51
#, python-brace-format
msgid "Create a new {0} in {1}"
msgstr "Ajouter un nouveau {0} dans {1}"
#: feeds.py:24
#, python-format
msgid "Blog articles on %(site_name)s"
msgstr "Articles de blog sur le site %(site_name)s"
#: menu.py:16
msgid "Blog menu"
msgstr "Catégorie du blog"
#: models.py:34
msgid "parent"
msgstr "père"
#: models.py:35
msgid "created at"
msgstr "crée le"
#: models.py:36
msgid "modified at"
msgstr "modifié le"
#: models.py:38 models.py:123 models.py:275
msgid "app. config"
msgstr "app. config"
#: models.py:42
msgid "name"
msgstr "nom"
#: models.py:43 models.py:128
msgid "slug"
msgstr "slug"
#: models.py:50
msgid "blog category"
msgstr "catégorie du blog"
#: models.py:51
msgid "blog categories"
msgstr "catégories du blog"
#: models.py:91
msgid "author"
msgstr "auteur"
#: models.py:94
msgid "created"
msgstr "crée le"
#: models.py:95
msgid "last modified"
msgstr "modifié le"
#: models.py:96
msgid "published since"
msgstr "publié depuis"
#: models.py:98
msgid "published until"
msgstr "publié jusquà"
#: models.py:100
msgid "publish"
msgstr "publier"
#: models.py:101
msgid "category"
msgstr "catégorie"
#: models.py:103
msgid "main image"
msgstr "Image principale"
#: models.py:107
msgid "main image thumbnail"
msgstr "Miniature image principale"
#: models.py:112
msgid "main image full"
msgstr "Image principale taille réelle"
#: models.py:116
msgid "enable comments on post"
msgstr "Activer les commentaires sur larticle"
#: models.py:118
msgid "Site(s)"
msgstr "Site(s)"
#: models.py:119
msgid ""
"Select sites in which to show the post. If none is set it will be visible in "
"all the configured sites."
msgstr ""
"Selectionnez les sites dans lesquels afficher larticle. Si aucun site nest "
"selectionné, larticle sera visible dans tous les sites."
#: models.py:127
msgid "title"
msgstr "Titre"
#: models.py:129
msgid "abstract"
msgstr "abstract"
#: models.py:130
msgid "post meta description"
msgstr "Description meta de larticle"
#: models.py:132
msgid "post meta keywords"
msgstr "Mots clés meta de larticle"
#: models.py:134
msgid "post meta title"
msgstr "Titre meta de larticle"
#: models.py:135
msgid "used in title tag and social sharing"
msgstr "Visible dans le titre et dans le partage sur les réseaux sociaux"
#: models.py:138
msgid "text"
msgstr "texte"
#: models.py:175
msgid "blog article"
msgstr "article du blog"
#: models.py:176
msgid "blog articles"
msgstr "articles du blog"
#: models.py:294 models.py:328
#, fuzzy
msgid "articles"
msgstr "0 articles"
#: models.py:295
msgid "The number of latests articles to be displayed."
msgstr "Nombre darticles récents à afficher."
#: models.py:297
msgid "filter by tag"
msgstr "filtrer par tag"
#: models.py:298
msgid "Show only the blog articles tagged with chosen tags."
msgstr "Afficher seulement les articles qui ont les tags séléctionnés."
#: models.py:301
msgid "filter by category"
msgstr "filtrer par catégorie"
#: models.py:302
msgid "Show only the blog articles tagged with chosen categories."
msgstr "Afficher seulement les articles des catégories séléctionnées"
#: models.py:306
#, python-format
msgid "%s latest articles by tag"
msgstr "%s derniers articles par tag"
#: models.py:324
msgid "authors"
msgstr "Auteurs"
#: models.py:329
msgid "The number of author articles to be displayed."
msgstr "Le nombre darticles de lauteur à afficher"
#: models.py:333
#, python-format
msgid "%s latest articles by author"
msgstr "%s derniers articles par auteur"
#: models.py:362
msgid "generic blog plugin"
msgstr "plugin générique pour le blog"
#: settings.py:16
msgid "Full date"
msgstr "Date complète"
#: settings.py:17
msgid "Year / Month"
msgstr "Année / Mois"
#: settings.py:18 templates/djangocms_blog/post_list.html:14
msgid "Category"
msgstr "Catégorie"
#: settings.py:19
#, fuzzy
msgid "Just slug"
msgstr "slug"
#: settings.py:28
msgid "Categories and posts"
msgstr "Catégories"
#: settings.py:29
msgid "Categories only"
msgstr "Catégories"
#: settings.py:30
msgid "Posts only"
msgstr "Articles"
#: settings.py:31
msgid "None"
msgstr "Aucun"
#: settings.py:34
msgid "always"
msgstr "toujours"
#: settings.py:35
msgid "hourly"
msgstr "toutes les heures"
#: settings.py:36
msgid "daily"
msgstr "quotidien"
#: settings.py:37
msgid "weekly"
msgstr "hebdomadaire"
#: settings.py:38
msgid "monthly"
msgstr "mensuel"
#: settings.py:39
msgid "yearly"
msgstr "annuel"
#: settings.py:40
msgid "never"
msgstr "jamais"
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Articles récents du blog"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Articles de lauteur"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tags"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Catégories"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archive"
#: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more"
msgstr "lire la suite"
#: templates/djangocms_blog/includes/blog_meta.html:6
msgid "by"
msgstr "par"
#: templates/djangocms_blog/plugins/archive.html:17
#: templates/djangocms_blog/plugins/authors.html:10
#: templates/djangocms_blog/plugins/categories.html:10
#: templates/djangocms_blog/plugins/tags.html:10
#, python-format
msgid "1 article"
msgid_plural "%(articles)s articles"
msgstr[0] "1 article"
msgstr[1] "%(articles)s articles"
#: templates/djangocms_blog/plugins/archive.html:18
#: templates/djangocms_blog/plugins/authors.html:11
#: templates/djangocms_blog/plugins/categories.html:11
#: templates/djangocms_blog/plugins/tags.html:11
msgid "0 articles"
msgstr "0 articles"
#: templates/djangocms_blog/plugins/archive.html:26
#: templates/djangocms_blog/plugins/authors.html:15
#: templates/djangocms_blog/plugins/latest_entries.html:7
#: templates/djangocms_blog/plugins/tags.html:15
#: templates/djangocms_blog/post_list.html:21
msgid "No article found."
msgstr "Aucun article trouvé"
#: templates/djangocms_blog/plugins/authors.html:3
msgid "Authors"
msgstr "Auteurs"
#: templates/djangocms_blog/plugins/categories.html:15
msgid "No categories found."
msgstr "Aucune catégorie trouvé"
#: templates/djangocms_blog/post_list.html:11
msgid "Articles by"
msgstr "Articles écrits par"
#: templates/djangocms_blog/post_list.html:13
msgid "Tag"
msgstr "Tag"
#: templates/djangocms_blog/post_list.html:24
msgid "Back"
msgstr "Retour"
#: templates/djangocms_blog/post_list.html:29
msgid "previous"
msgstr "précédent"
#: templates/djangocms_blog/post_list.html:32
msgid "Page"
msgstr "Page"
#: templates/djangocms_blog/post_list.html:32
msgid "of"
msgstr "sur"
#: templates/djangocms_blog/post_list.html:35
msgid "next"
msgstr "suivant"
#, fuzzy
#~ msgid "Article"
#~ msgstr "Articles"
#~ msgid "Text"
#~ msgstr "Text"
#~ msgid "blog post"
#~ msgstr "blog post"
#~ msgid "Entries by"
#~ msgstr "Entries by"
#~ msgid "No entry found."
#~ msgstr "No entry found."

View file

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:24+0000\n" "PO-Revision-Date: 2015-12-20 16:19+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Italian (http://www.transifex.com/nephila/djangocms-blog/language/it/)\n" "Language-Team: Italian (http://www.transifex.com/nephila/djangocms-blog/language/it/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -27,8 +27,7 @@ msgstr "Puoi inserire stringhe, attributi o metodi del model Post"
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "django CMS Blog" msgstr "django CMS Blog"
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Blog" msgstr "Blog"
@ -41,155 +40,144 @@ msgid "object name"
msgstr "Nome oggetto" msgstr "Nome oggetto"
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr "Configurazione del blog"
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr "Configurazioni del blog"
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "Senza titolo" msgstr "Senza titolo"
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "Articoli pubblicati di default" msgstr "Articoli pubblicati di default"
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "Struttura permalink" msgstr "Struttura permalink"
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "Usa placeholder e plugin per il contenuto" msgstr "Usa placeholder e plugin per il contenuto"
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "Usa campo abstract" msgstr "Usa campo abstract"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "Imposta autore" msgstr "Imposta autore"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "Imposta autore di default" msgstr "Imposta autore di default"
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "Dimensione paginazione" msgstr "Dimensione paginazione"
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "Se la lista è paginata, quanti articoli visualizzati per pagina?" msgstr "Se la lista è paginata, quanti articoli visualizzati per pagina?"
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "Prefisso template" msgstr "Prefisso template"
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "Directory alternativa da cui caricare i template" msgstr "Directory alternativa da cui caricare i template"
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "Struttura del menu" msgstr "Struttura del menu"
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "Struttura del menu django CMS" msgstr "Struttura del menu django CMS"
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "Frequenza aggiornamento Sitemap" msgstr "Frequenza aggiornamento Sitemap"
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "Attributo Changefreq per gli oggetti della sitemap" msgstr "Attributo Changefreq per gli oggetti della sitemap"
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "Priorità sitemap" msgstr "Priorità sitemap"
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "Attributo priorità per gli oggetti nella sitemap" msgstr "Attributo priorità per gli oggetti nella sitemap"
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "Tipo oggetto" msgstr "Tipo oggetto"
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "Tipo oggetto Facebook" msgstr "Tipo oggetto Facebook"
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "ID Applicazione Facebook" msgstr "ID Applicazione Facebook"
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "ID Profilo Facebook" msgstr "ID Profilo Facebook"
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "URL Pagina Facebook" msgstr "URL Pagina Facebook"
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "URL Autore Facebook" msgstr "URL Autore Facebook"
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "Autore Facebook" msgstr "Autore Facebook"
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "Tipo oggetto Twitter" msgstr "Tipo oggetto Twitter"
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "Nome Twitter del sito" msgstr "Nome Twitter del sito"
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "Nome Twitter autore" msgstr "Nome Twitter autore"
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "Tipo oggetto Google+" msgstr "Tipo oggetto Google+"
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "Nome Google+ autore" msgstr "Nome Google+ autore"
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Ultimi articoli"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Articoli per autore"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tag"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categorie"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archivio"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Lista degli articoli" msgstr "Lista degli articoli"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Aggiungi articolo" msgstr "Aggiungi articolo"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "Modifica configurazione" msgstr "Modifica configurazione"
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Modifica articolo" msgstr "Modifica articolo"
@ -224,7 +212,7 @@ msgstr "creato il"
msgid "modified at" msgid "modified at"
msgstr "modificato il" msgstr "modificato il"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "config. app." msgstr "config. app."
@ -334,52 +322,52 @@ msgstr "articolo del blog"
msgid "blog articles" msgid "blog articles"
msgstr "articoli del blog" msgstr "articoli del blog"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr "plugin blog"
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "articoli" msgstr "articoli"
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "Il numero di articoli da mostrare." msgstr "Il numero di articoli da mostrare."
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "filtra per tag" msgstr "filtra per tag"
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Mostra solo gli articoli marcati con i tag selezionati." msgstr "Mostra solo gli articoli marcati con i tag selezionati."
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "filtra per categoria" msgstr "filtra per categoria"
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Mostra solo gli articoli marcati con i categorie selezionati." msgstr "Mostra solo gli articoli marcati con i categorie selezionati."
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "ultimi %s articoli per tag" msgstr "ultimi %s articoli per tag"
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "autori" msgstr "autori"
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "Numero di elementi per autore da mostrare." msgstr "Numero di elementi per autore da mostrare."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "ultimi %s articoli per autore" msgstr "ultimi %s articoli per autore"
#: models.py:362
msgid "generic blog plugin"
msgstr "plugin blog"
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "Data completa" msgstr "Data completa"
@ -440,6 +428,27 @@ msgstr "ogni anno"
msgid "never" msgid "never"
msgstr "mai" msgstr "mai"
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Ultimi articoli"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Articoli per autore"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Tag"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Categorie"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archivio"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "leggi" msgstr "leggi"

View file

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Lithuanian (http://www.transifex.com/nephila/djangocms-blog/language/lt/)\n" "Language-Team: Lithuanian (http://www.transifex.com/nephila/djangocms-blog/language/lt/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -26,8 +26,7 @@ msgstr "Galite pateikti paprasto teksto eilutes, įrašo modelio atributą arba
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "django CMS Tinklaraštis" msgstr "django CMS Tinklaraštis"
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Tinklaraštis" msgstr "Tinklaraštis"
@ -37,170 +36,159 @@ msgstr "aplikacijos pavadinimas"
#: cms_appconfig.py:22 #: cms_appconfig.py:22
msgid "object name" msgid "object name"
msgstr "" msgstr "objekto pavadinimas"
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "be pavadinimo" msgstr "be pavadinimo"
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "Pagal numatymą įrašas publikuojamas" msgstr "Pagal numatymą įrašas publikuojamas"
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "Nuolatinės nuorodos struktūra" msgstr "Nuolatinės nuorodos struktūra"
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "Straipsnio tekstui naudokite rezervuotą vietą ir įskiepiuis" msgstr "Straipsnio tekstui naudokite rezervuotą vietą ir įskiepiuis"
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "Naudoti santraukos lauką" msgstr "Naudoti santraukos lauką"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "Nustatyti autorių" msgstr "Nustatyti autorių"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "Pagal numatymą nustatyti autorių" msgstr "Pagal numatymą nustatyti autorių"
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "Puslapiavimo dydis" msgstr "Puslapiavimo dydis"
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "Kai puslapiuojamas sąrašas, kiek straipsnių atvaizduoti puslapyje?" msgstr "Kai puslapiuojamas sąrašas, kiek straipsnių atvaizduoti puslapyje?"
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "Šablono priešdėlis" msgstr "Šablono priešdėlis"
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "Alternatyvus katalogas iš kurio būtų užkraunami šablonai" msgstr "Alternatyvus katalogas iš kurio būtų užkraunami šablonai"
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "Meniu struktūra" msgstr "Meniu struktūra"
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "Django CMS meniu struktūra" msgstr "Django CMS meniu struktūra"
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr "Tinklalapio medžio keitimo dažnumas"
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr "Keitimo dažnumo atributas tinklalapio medžio objektams"
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr "Tinklalapio medžio prioritetas"
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr "Prioriteto atributas tinklalapio medžio objektams"
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "Objekto tipas" msgstr "Objekto tipas"
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "Facebook tipas" msgstr "Facebook tipas"
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "Facebook aplikacijos ID" msgstr "Facebook aplikacijos ID"
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "Facebook profilio ID" msgstr "Facebook profilio ID"
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "Facebook puslapio URL" msgstr "Facebook puslapio URL"
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "Facebook autoriaus URL" msgstr "Facebook autoriaus URL"
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "Facebook autorius" msgstr "Facebook autorius"
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "Twitter tipas" msgstr "Twitter tipas"
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "Twitter tinklalapio vardas" msgstr "Twitter tinklalapio vardas"
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "Twitter autoriaus vardas" msgstr "Twitter autoriaus vardas"
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "Google+ tipas" msgstr "Google+ tipas"
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "Goggle+ autoriaus vardas" msgstr "Goggle+ autoriaus vardas"
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Naujausi tinklaraščio straipsniai"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Tinklaraščio straipsnių autorius"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Žymenos"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategorijos"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archyvas"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Straipsnių sąrašas" msgstr "Straipsnių sąrašas"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Pridėti straipsnį" msgstr "Pridėti straipsnį"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "Redaguoti nustatymus" msgstr "Redaguoti nustatymus"
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Redaguoti straipsnį" msgstr "Redaguoti straipsnį"
#: cms_wizards.py:47 #: cms_wizards.py:47
#, python-brace-format #, python-brace-format
msgid "New {0}" msgid "New {0}"
msgstr "" msgstr "Naujas {0}"
#: cms_wizards.py:51 #: cms_wizards.py:51
#, python-brace-format #, python-brace-format
msgid "Create a new {0} in {1}" msgid "Create a new {0} in {1}"
msgstr "" msgstr "Kurti naują {0} viduje {1}"
#: feeds.py:24 #: feeds.py:24
#, python-format #, python-format
@ -223,7 +211,7 @@ msgstr "sukurta"
msgid "modified at" msgid "modified at"
msgstr "redaguota" msgstr "redaguota"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "aplikacijos nustatymai" msgstr "aplikacijos nustatymai"
@ -333,52 +321,52 @@ msgstr "tinklaraščio straipsnis"
msgid "blog articles" msgid "blog articles"
msgstr "tinklaraščio straipsniai" msgstr "tinklaraščio straipsniai"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr "bendras tinklaraščio įskiepis"
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "straipsniai" msgstr "straipsniai"
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "Atvaizduojamas naujausių straipsnių kiekis." msgstr "Atvaizduojamas naujausių straipsnių kiekis."
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "filtruoti pagal žymeną" msgstr "filtruoti pagal žymeną"
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Atvaizduoti straipsnius su pasirinktomis žymenomis." msgstr "Atvaizduoti straipsnius su pasirinktomis žymenomis."
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "filtruoti pagal kategoriją" msgstr "filtruoti pagal kategoriją"
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Atvaizduoti straipsnius su pasirinktomis kategorijomis." msgstr "Atvaizduoti straipsnius su pasirinktomis kategorijomis."
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "%s paskutiniai straipsniai pagal žymeną" msgstr "%s paskutiniai straipsniai pagal žymeną"
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "autoriai" msgstr "autoriai"
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "Atvaizduojamas autoriaus straipsnių kiekis." msgstr "Atvaizduojamas autoriaus straipsnių kiekis."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "%s paskutiniai straipsniai pagal autorių" msgstr "%s paskutiniai straipsniai pagal autorių"
#: models.py:362
msgid "generic blog plugin"
msgstr "bendras tinklaraščio įskiepis"
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "Pilna data" msgstr "Pilna data"
@ -413,31 +401,52 @@ msgstr "Niekas"
#: settings.py:34 #: settings.py:34
msgid "always" msgid "always"
msgstr "" msgstr "visada"
#: settings.py:35 #: settings.py:35
msgid "hourly" msgid "hourly"
msgstr "" msgstr "kas valandą"
#: settings.py:36 #: settings.py:36
msgid "daily" msgid "daily"
msgstr "" msgstr "kas dieną"
#: settings.py:37 #: settings.py:37
msgid "weekly" msgid "weekly"
msgstr "" msgstr "kas savaitę"
#: settings.py:38 #: settings.py:38
msgid "monthly" msgid "monthly"
msgstr "" msgstr "kas mėnesį"
#: settings.py:39 #: settings.py:39
msgid "yearly" msgid "yearly"
msgstr "" msgstr "kas metus"
#: settings.py:40 #: settings.py:40
msgid "never" msgid "never"
msgstr "" msgstr "niekada"
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Naujausi tinklaraščio straipsniai"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Tinklaraščio straipsnių autorius"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Žymenos"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategorijos"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Archyvas"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"

View file

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/nephila/djangocms-blog/language/pt_BR/)\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/nephila/djangocms-blog/language/pt_BR/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -25,8 +25,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "" msgstr ""
@ -39,155 +38,144 @@ msgid "object name"
msgstr "" msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "" msgstr ""
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr ""
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr ""
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr ""
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr ""
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr ""
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "" msgstr ""
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "" msgstr ""
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "" msgstr ""
@ -222,7 +210,7 @@ msgstr ""
msgid "modified at" msgid "modified at"
msgstr "" msgstr ""
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -332,52 +320,52 @@ msgstr ""
msgid "blog articles" msgid "blog articles"
msgstr "" msgstr ""
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr ""
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "" msgstr ""
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "" msgstr ""
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr ""
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "" msgstr ""
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr ""
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "" msgstr ""
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -438,6 +426,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr ""
#: settings.py:115
msgid "Author Blog Articles"
msgstr ""
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr ""
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr ""
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr ""
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "" msgstr ""

View file

@ -3,13 +3,14 @@
# #
# Translators: # Translators:
# Iacopo Spalletti, 2014 # Iacopo Spalletti, 2014
# Rüstem Mirzaoğlu, 2015 # Rustam Mirzaev <mirus@2x2.pw>, 2015
# Rustam Mirzaev <mirus@2x2.pw>, 2015
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Russian (http://www.transifex.com/nephila/djangocms-blog/language/ru/)\n" "Language-Team: Russian (http://www.transifex.com/nephila/djangocms-blog/language/ru/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -21,187 +22,175 @@ msgstr ""
#: admin.py:169 admin.py:177 admin.py:185 #: admin.py:169 admin.py:177 admin.py:185
msgid "You can provide plain strings, Post model attribute or method names" msgid "You can provide plain strings, Post model attribute or method names"
msgstr "" msgstr "Вы можете использовать простую строку, атрибут модели статьи или имена методов"
#: apps.py:15 #: apps.py:15
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr "django CMS Блог"
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Блог" msgstr "Блог"
#: cms_appconfig.py:20 #: cms_appconfig.py:20
msgid "application title" msgid "application title"
msgstr "" msgstr "название приложения"
#: cms_appconfig.py:22 #: cms_appconfig.py:22
msgid "object name" msgid "object name"
msgstr "" msgstr "название объекта"
#: cms_appconfig.py:27 #: cms_appconfig.py:27
msgid "untitled" #| msgid "blog categories"
msgid "blog config"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:28
msgid "Post published by default" #| msgid "blog categories"
msgid "blog configs"
msgstr "" msgstr ""
#: cms_appconfig.py:31
msgid "untitled"
msgstr "безымянный"
#: cms_appconfig.py:36 #: cms_appconfig.py:36
msgid "Permalink structure" msgid "Post published by default"
msgstr "" msgstr "Статья опубликованная по умолчанию"
#: cms_appconfig.py:41 #: cms_appconfig.py:40
msgid "Use placeholder and plugins for article body" msgid "Permalink structure"
msgstr "" msgstr "Строение постоянной ссылки"
#: cms_appconfig.py:45 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body"
msgstr "Используйте местозаполнитель и плагины для тела статьи"
#: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr "Используйте поле краткого описания"
#: cms_appconfig.py:49
msgid "Set author"
msgstr ""
#: cms_appconfig.py:49
msgid "Set author by default"
msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:53
msgid "Paginate size" msgid "Set author"
msgstr "" msgstr "Указать автора"
#: cms_appconfig.py:54 #: cms_appconfig.py:53
msgid "When paginating list views, how many articles per page?" msgid "Set author by default"
msgstr "" msgstr "Указать автора по умолчанию"
#: cms_appconfig.py:57 #: cms_appconfig.py:57
msgid "Template prefix" msgid "Paginate size"
msgstr "" msgstr "Разбить на части"
#: cms_appconfig.py:58 #: cms_appconfig.py:58
msgid "Alternative directory to load the blog templates from" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr "Сколько статей на страницу вы бы хотели использовать при разбиении её на части."
#: cms_appconfig.py:61 #: cms_appconfig.py:61
msgid "Template prefix"
msgstr "Префикс шаблона"
#: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from"
msgstr "Альтернативная директория загрузки шаблонов блога"
#: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr "Структура меню"
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr "Структура меню django CMS "
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr "Частота обновления карты сайта"
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr "Атрибут частоты изменения объектов карты сайта"
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr "Приоритет"
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr "Приоритет атребута для объектов карты сайта"
#: cms_appconfig.py:77
msgid "Object type"
msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:81
msgid "Facebook type" msgid "Object type"
msgstr "" msgstr "Тип объекта"
#: cms_appconfig.py:85 #: cms_appconfig.py:85
msgid "Facebook application ID" msgid "Facebook type"
msgstr "" msgstr "тип в Facebook"
#: cms_appconfig.py:89 #: cms_appconfig.py:89
msgid "Facebook profile ID" msgid "Facebook application ID"
msgstr "" msgstr "ID приложения на Facebook"
#: cms_appconfig.py:93 #: cms_appconfig.py:93
msgid "Facebook page URL" msgid "Facebook profile ID"
msgstr "" msgstr "ID профиля на Facebook"
#: cms_appconfig.py:97 #: cms_appconfig.py:97
msgid "Facebook author URL" msgid "Facebook page URL"
msgstr "" msgstr "URL страницы на Facebook"
#: cms_appconfig.py:101 #: cms_appconfig.py:101
msgid "Facebook author" msgid "Facebook author URL"
msgstr "" msgstr "URL автора на Facebook "
#: cms_appconfig.py:105 #: cms_appconfig.py:105
msgid "Twitter type" msgid "Facebook author"
msgstr "" msgstr "автор на Facebook "
#: cms_appconfig.py:109 #: cms_appconfig.py:109
msgid "Twitter site handle" msgid "Twitter type"
msgstr "" msgstr "тип на Twitter"
#: cms_appconfig.py:113 #: cms_appconfig.py:113
msgid "Twitter author handle" msgid "Twitter site handle"
msgstr "" msgstr "дескриптор сайта на Twitter"
#: cms_appconfig.py:117 #: cms_appconfig.py:117
msgid "Google+ type" msgid "Twitter author handle"
msgstr "" msgstr "дескриптор автора на Twitter"
#: cms_appconfig.py:121 #: cms_appconfig.py:121
msgid "Google+ type"
msgstr "тип на Google+"
#: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr "имя автора на Google+"
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Последние статьи блога"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Автор статей блога"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Метки"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Категории"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Архив"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Список статей" msgstr "Список статей"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Добавить статью" msgstr "Добавить статью"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr "Редактировать настройки"
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Редактировать статью" msgstr "Редактировать статью"
#: cms_wizards.py:47 #: cms_wizards.py:47
#, python-brace-format #, python-brace-format
msgid "New {0}" msgid "New {0}"
msgstr "" msgstr "Новых {0}"
#: cms_wizards.py:51 #: cms_wizards.py:51
#, python-brace-format #, python-brace-format
msgid "Create a new {0} in {1}" msgid "Create a new {0} in {1}"
msgstr "" msgstr "Создать новых {0} из {1}"
#: feeds.py:24 #: feeds.py:24
#, python-format #, python-format
@ -210,7 +199,7 @@ msgstr "Статьи блога с сайта: %(site_name)s"
#: menu.py:16 #: menu.py:16
msgid "Blog menu" msgid "Blog menu"
msgstr "" msgstr "Меню блога"
#: models.py:34 #: models.py:34
msgid "parent" msgid "parent"
@ -224,9 +213,9 @@ msgstr "время создания"
msgid "modified at" msgid "modified at"
msgstr "время изменения" msgstr "время изменения"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr "настройки приложения"
#: models.py:42 #: models.py:42
msgid "name" msgid "name"
@ -246,27 +235,27 @@ msgstr "категории блога"
#: models.py:91 #: models.py:91
msgid "author" msgid "author"
msgstr "" msgstr "автор"
#: models.py:94 #: models.py:94
msgid "created" msgid "created"
msgstr "" msgstr "создан(о)"
#: models.py:95 #: models.py:95
msgid "last modified" msgid "last modified"
msgstr "" msgstr "последние изменения"
#: models.py:96 #: models.py:96
msgid "published since" msgid "published since"
msgstr "" msgstr "опубликовано"
#: models.py:98 #: models.py:98
msgid "published until" msgid "published until"
msgstr "" msgstr "опубликовано до"
#: models.py:100 #: models.py:100
msgid "publish" msgid "publish"
msgstr "" msgstr "опубликовать"
#: models.py:101 #: models.py:101
msgid "category" msgid "category"
@ -274,19 +263,19 @@ msgstr "категория"
#: models.py:103 #: models.py:103
msgid "main image" msgid "main image"
msgstr "" msgstr "главная страница"
#: models.py:107 #: models.py:107
msgid "main image thumbnail" msgid "main image thumbnail"
msgstr "" msgstr "уменьшенная копия главного изображения"
#: models.py:112 #: models.py:112
msgid "main image full" msgid "main image full"
msgstr "" msgstr "Полноразмерное изображение"
#: models.py:116 #: models.py:116
msgid "enable comments on post" msgid "enable comments on post"
msgstr "" msgstr "Разрешить комментарии к статье"
#: models.py:118 #: models.py:118
msgid "Site(s)" msgid "Site(s)"
@ -300,23 +289,23 @@ msgstr "Выберите сайты на которых будет опубли
#: models.py:127 #: models.py:127
msgid "title" msgid "title"
msgstr "" msgstr "Заголовок"
#: models.py:129 #: models.py:129
msgid "abstract" msgid "abstract"
msgstr "" msgstr "Краткое описание"
#: models.py:130 #: models.py:130
msgid "post meta description" msgid "post meta description"
msgstr "" msgstr "мета-описание статьи"
#: models.py:132 #: models.py:132
msgid "post meta keywords" msgid "post meta keywords"
msgstr "" msgstr "ключевые слова к статье"
#: models.py:134 #: models.py:134
msgid "post meta title" msgid "post meta title"
msgstr "" msgstr "мета-заголовок к статье"
#: models.py:135 #: models.py:135
msgid "used in title tag and social sharing" msgid "used in title tag and social sharing"
@ -324,7 +313,7 @@ msgstr "используется в метках и обмене в социал
#: models.py:138 #: models.py:138
msgid "text" msgid "text"
msgstr "" msgstr "текст"
#: models.py:175 #: models.py:175
msgid "blog article" msgid "blog article"
@ -334,59 +323,59 @@ msgstr "статья блога"
msgid "blog articles" msgid "blog articles"
msgstr "статьи блога" msgstr "статьи блога"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr "статьи"
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "Количество последних статей, которые будут показаны." msgstr "Количество последних статей, которые будут показаны."
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr "фильтровать по тегам"
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Показывать статьи только с выбранными метками." msgstr "Показывать статьи только с выбранными метками."
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr "фильтровать по категориям"
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Показывать статьи только из выбранных категорий." msgstr "Показывать статьи только из выбранных категорий."
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr "%s последних статей по тегам"
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr "авторы"
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "Количество статей автора, которые будут показаны." msgstr "Количество статей автора, которые будут показаны."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr "%s последних статей по авторам"
#: models.py:362
msgid "generic blog plugin"
msgstr "генерируемый плагин блога"
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr "Полная дата"
#: settings.py:17 #: settings.py:17
msgid "Year / Month" msgid "Year / Month"
msgstr "" msgstr "Год / Месяц"
#: settings.py:18 templates/djangocms_blog/post_list.html:14 #: settings.py:18 templates/djangocms_blog/post_list.html:14
msgid "Category" msgid "Category"
@ -394,51 +383,72 @@ msgstr "Категория"
#: settings.py:19 #: settings.py:19
msgid "Just slug" msgid "Just slug"
msgstr "" msgstr "ЧПУ"
#: settings.py:28 #: settings.py:28
msgid "Categories and posts" msgid "Categories and posts"
msgstr "" msgstr "Категории и статьи"
#: settings.py:29 #: settings.py:29
msgid "Categories only" msgid "Categories only"
msgstr "" msgstr "Только категории"
#: settings.py:30 #: settings.py:30
msgid "Posts only" msgid "Posts only"
msgstr "" msgstr "Только статьи"
#: settings.py:31 #: settings.py:31
msgid "None" msgid "None"
msgstr "" msgstr "Ничего"
#: settings.py:34 #: settings.py:34
msgid "always" msgid "always"
msgstr "" msgstr "всегда"
#: settings.py:35 #: settings.py:35
msgid "hourly" msgid "hourly"
msgstr "" msgstr "ежечасно"
#: settings.py:36 #: settings.py:36
msgid "daily" msgid "daily"
msgstr "" msgstr "ежедневно"
#: settings.py:37 #: settings.py:37
msgid "weekly" msgid "weekly"
msgstr "" msgstr "еженедельно"
#: settings.py:38 #: settings.py:38
msgid "monthly" msgid "monthly"
msgstr "" msgstr "ежемесячно"
#: settings.py:39 #: settings.py:39
msgid "yearly" msgid "yearly"
msgstr "" msgstr "ежегодно"
#: settings.py:40 #: settings.py:40
msgid "never" msgid "never"
msgstr "" msgstr "никогда"
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Последние статьи блога"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Автор статей блога"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Метки"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Категории"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Архив"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
@ -481,7 +491,7 @@ msgstr "Авторы"
#: templates/djangocms_blog/plugins/categories.html:15 #: templates/djangocms_blog/plugins/categories.html:15
msgid "No categories found." msgid "No categories found."
msgstr "" msgstr "Не найдено ни одной категории."
#: templates/djangocms_blog/post_list.html:11 #: templates/djangocms_blog/post_list.html:11
msgid "Articles by" msgid "Articles by"

View file

@ -1,23 +1,22 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. #
# # Translators:
#, fuzzy # Iacopo Spalletti, 2014
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-15 13:53+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Slovenian (http://www.transifex.com/nephila/djangocms-blog/language/sl/)\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "Language: sl\n"
"%100==4 ? 2 : 3);\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
"X-Generator: Lokalize 1.5\n"
#: admin.py:169 admin.py:177 admin.py:185 #: admin.py:169 admin.py:177 admin.py:185
msgid "You can provide plain strings, Post model attribute or method names" msgid "You can provide plain strings, Post model attribute or method names"
@ -40,118 +39,128 @@ msgid "object name"
msgstr "ime objekta" msgstr "ime objekta"
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "nepoimenovano" msgstr "nepoimenovano"
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "Objava naj bo samodejno objavljena" msgstr "Objava naj bo samodejno objavljena"
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "Struktura povezav" msgstr "Struktura povezav"
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "Za objavo naj bodo uporabljeni vtičniki in označbe mest" msgstr "Za objavo naj bodo uporabljeni vtičniki in označbe mest"
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "Uporaba abstraktnih polj" msgstr "Uporaba abstraktnih polj"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "Nastavi avtorja" msgstr "Nastavi avtorja"
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "Avtor naj bo nastavljen samodejno" msgstr "Avtor naj bo nastavljen samodejno"
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "Število objav na stran" msgstr "Število objav na stran"
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "Koliko objav naj bo na eni strani?" msgstr "Koliko objav naj bo na eni strani?"
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "Predpona predlog" msgstr "Predpona predlog"
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "Alternativni direktorij za nalaganje predlog bloga" msgstr "Alternativni direktorij za nalaganje predlog bloga"
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "Struktura menija" msgstr "Struktura menija"
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "Struktura django CMS menija" msgstr "Struktura django CMS menija"
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "Sitemap prioriteta" msgstr "Sitemap prioriteta"
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "Prioriteta atributov za elemente sitemapa" msgstr "Prioriteta atributov za elemente sitemapa"
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "Tip objekta" msgstr "Tip objekta"
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "Facebook avtor" msgstr "Facebook avtor"
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
@ -272,8 +281,8 @@ msgstr "Stran(i)"
#: models.py:119 #: models.py:119
msgid "" msgid ""
"Select sites in which to show the post. If none is set it will be visible in " "Select sites in which to show the post. If none is set it will be visible in"
"all the configured sites." " all the configured sites."
msgstr "Izberi strani na katerih naj bo objava prikazana. Če ni izbrano nič, bo objava prikazana na vseh nastavljenih straneh." msgstr "Izberi strani na katerih naj bo objava prikazana. Če ni izbrano nič, bo objava prikazana na vseh nastavljenih straneh."
#: models.py:127 #: models.py:127
@ -366,7 +375,7 @@ msgstr "Datum (poln)"
msgid "Year / Month" msgid "Year / Month"
msgstr "Leto / Mesec" msgstr "Leto / Mesec"
#: settings.py:18 templates/djangocms_blog/post_list.html.py:14 #: settings.py:18 templates/djangocms_blog/post_list.html:14
msgid "Category" msgid "Category"
msgstr "Kategorija" msgstr "Kategorija"
@ -426,15 +435,15 @@ msgstr "Najnovejše blog objave"
msgid "Author Blog Articles" msgid "Author Blog Articles"
msgstr "Avtorjeve blog objave" msgstr "Avtorjeve blog objave"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html.py:3 #: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags" msgid "Tags"
msgstr "Oznake" msgstr "Oznake"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html.py:3 #: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories" msgid "Categories"
msgstr "Kategorije" msgstr "Kategorije"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html.py:3 #: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12 #: templates/djangocms_blog/post_list.html:12
msgid "Archive" msgid "Archive"
msgstr "Arhiv" msgstr "Arhiv"
@ -454,8 +463,10 @@ msgstr ""
#, python-format #, python-format
msgid "1 article" msgid "1 article"
msgid_plural "%(articles)s articles" msgid_plural "%(articles)s articles"
msgstr[0] "1 objava" msgstr[0] "%(articles)s objava"
msgstr[1] "%(articles)s objave" msgstr[1] "%(articles)s objave"
msgstr[2] "%(articles)s objave"
msgstr[3] "%(articles)s objave"
#: templates/djangocms_blog/plugins/archive.html:18 #: templates/djangocms_blog/plugins/archive.html:18
#: templates/djangocms_blog/plugins/authors.html:11 #: templates/djangocms_blog/plugins/authors.html:11
@ -507,3 +518,18 @@ msgstr "od"
#: templates/djangocms_blog/post_list.html:35 #: templates/djangocms_blog/post_list.html:35
msgid "next" msgid "next"
msgstr "naslednji" msgstr "naslednji"
#~ msgid "Article"
#~ msgstr "Articles"
#~ msgid "Text"
#~ msgstr "Text"
#~ msgid "blog post"
#~ msgstr "blog post"
#~ msgid "Entries by"
#~ msgstr "Entries by"
#~ msgid "No entry found."
#~ msgstr "No entry found."

View file

@ -2,13 +2,13 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# #
# Translators: # Translators:
# Rüstem Mirzaoğlu, 2015 # Rustam Mirzaev <mirus@2x2.pw>, 2015
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: djangocms-blog\n" "Project-Id-Version: djangocms-blog\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-31 13:23+0100\n" "POT-Creation-Date: 2015-12-20 17:14+0100\n"
"PO-Revision-Date: 2015-10-31 12:23+0000\n" "PO-Revision-Date: 2015-12-20 16:15+0000\n"
"Last-Translator: yakky <i.spalletti@nephila.it>\n" "Last-Translator: yakky <i.spalletti@nephila.it>\n"
"Language-Team: Turkish (http://www.transifex.com/nephila/djangocms-blog/language/tr/)\n" "Language-Team: Turkish (http://www.transifex.com/nephila/djangocms-blog/language/tr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -26,8 +26,7 @@ msgstr ""
msgid "django CMS Blog" msgid "django CMS Blog"
msgstr "" msgstr ""
#: cms_app.py:15 cms_plugins.py:64 cms_plugins.py:77 cms_plugins.py:93 #: cms_app.py:15 cms_toolbar.py:19 settings.py:111
#: cms_plugins.py:108 cms_toolbar.py:18
msgid "Blog" msgid "Blog"
msgstr "Blog" msgstr "Blog"
@ -40,155 +39,144 @@ msgid "object name"
msgstr "" msgstr ""
#: cms_appconfig.py:27 #: cms_appconfig.py:27
#| msgid "blog categories"
msgid "blog config"
msgstr ""
#: cms_appconfig.py:28
#| msgid "blog categories"
msgid "blog configs"
msgstr ""
#: cms_appconfig.py:31
msgid "untitled" msgid "untitled"
msgstr "" msgstr ""
#: cms_appconfig.py:32 #: cms_appconfig.py:36
msgid "Post published by default" msgid "Post published by default"
msgstr "" msgstr ""
#: cms_appconfig.py:36 #: cms_appconfig.py:40
msgid "Permalink structure" msgid "Permalink structure"
msgstr "" msgstr ""
#: cms_appconfig.py:41 #: cms_appconfig.py:45
msgid "Use placeholder and plugins for article body" msgid "Use placeholder and plugins for article body"
msgstr "" msgstr ""
#: cms_appconfig.py:45 #: cms_appconfig.py:49
msgid "Use abstract field" msgid "Use abstract field"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author" msgid "Set author"
msgstr "" msgstr ""
#: cms_appconfig.py:49 #: cms_appconfig.py:53
msgid "Set author by default" msgid "Set author by default"
msgstr "" msgstr ""
#: cms_appconfig.py:53 #: cms_appconfig.py:57
msgid "Paginate size" msgid "Paginate size"
msgstr "" msgstr ""
#: cms_appconfig.py:54 #: cms_appconfig.py:58
msgid "When paginating list views, how many articles per page?" msgid "When paginating list views, how many articles per page?"
msgstr "" msgstr ""
#: cms_appconfig.py:57 #: cms_appconfig.py:61
msgid "Template prefix" msgid "Template prefix"
msgstr "" msgstr ""
#: cms_appconfig.py:58 #: cms_appconfig.py:62
msgid "Alternative directory to load the blog templates from" msgid "Alternative directory to load the blog templates from"
msgstr "" msgstr ""
#: cms_appconfig.py:61 #: cms_appconfig.py:65
msgid "Menu structure" msgid "Menu structure"
msgstr "" msgstr ""
#: cms_appconfig.py:63 #: cms_appconfig.py:67
msgid "Structure of the django CMS menu" msgid "Structure of the django CMS menu"
msgstr "" msgstr ""
#: cms_appconfig.py:66 #: cms_appconfig.py:70
msgid "Sitemap changefreq" msgid "Sitemap changefreq"
msgstr "" msgstr ""
#: cms_appconfig.py:69 #: cms_appconfig.py:73
msgid "Changefreq attribute for sitemap items" msgid "Changefreq attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:72 #: cms_appconfig.py:76
msgid "Sitemap priority" msgid "Sitemap priority"
msgstr "" msgstr ""
#: cms_appconfig.py:74 #: cms_appconfig.py:78
msgid "Priority attribute for sitemap items" msgid "Priority attribute for sitemap items"
msgstr "" msgstr ""
#: cms_appconfig.py:77 #: cms_appconfig.py:81
msgid "Object type" msgid "Object type"
msgstr "" msgstr ""
#: cms_appconfig.py:81 #: cms_appconfig.py:85
msgid "Facebook type" msgid "Facebook type"
msgstr "" msgstr ""
#: cms_appconfig.py:85 #: cms_appconfig.py:89
msgid "Facebook application ID" msgid "Facebook application ID"
msgstr "" msgstr ""
#: cms_appconfig.py:89 #: cms_appconfig.py:93
msgid "Facebook profile ID" msgid "Facebook profile ID"
msgstr "" msgstr ""
#: cms_appconfig.py:93 #: cms_appconfig.py:97
msgid "Facebook page URL" msgid "Facebook page URL"
msgstr "" msgstr ""
#: cms_appconfig.py:97 #: cms_appconfig.py:101
msgid "Facebook author URL" msgid "Facebook author URL"
msgstr "" msgstr ""
#: cms_appconfig.py:101 #: cms_appconfig.py:105
msgid "Facebook author" msgid "Facebook author"
msgstr "" msgstr ""
#: cms_appconfig.py:105 #: cms_appconfig.py:109
msgid "Twitter type" msgid "Twitter type"
msgstr "" msgstr ""
#: cms_appconfig.py:109 #: cms_appconfig.py:113
msgid "Twitter site handle" msgid "Twitter site handle"
msgstr "" msgstr ""
#: cms_appconfig.py:113 #: cms_appconfig.py:117
msgid "Twitter author handle" msgid "Twitter author handle"
msgstr "" msgstr ""
#: cms_appconfig.py:117 #: cms_appconfig.py:121
msgid "Google+ type" msgid "Google+ type"
msgstr "" msgstr ""
#: cms_appconfig.py:121 #: cms_appconfig.py:125
msgid "Google+ author name" msgid "Google+ author name"
msgstr "" msgstr ""
#: cms_plugins.py:30 cms_plugins.py:49 #: cms_toolbar.py:22
msgid "Latest Blog Articles"
msgstr "Blog'un son makaleleri"
#: cms_plugins.py:65
msgid "Author Blog Articles"
msgstr "Blog'un makale yazarı"
#: cms_plugins.py:78 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Etiketler"
#: cms_plugins.py:94 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategoriler"
#: cms_plugins.py:109 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Arşiv"
#: cms_toolbar.py:21
msgid "Post list" msgid "Post list"
msgstr "Makale listesi" msgstr "Makale listesi"
#: cms_toolbar.py:23 #: cms_toolbar.py:24
msgid "Add post" msgid "Add post"
msgstr "Makale ekle" msgstr "Makale ekle"
#: cms_toolbar.py:27 #: cms_toolbar.py:28
msgid "Edit configuration" msgid "Edit configuration"
msgstr "" msgstr ""
#: cms_toolbar.py:31 #: cms_toolbar.py:32
msgid "Edit Post" msgid "Edit Post"
msgstr "Makaleyi düzenle" msgstr "Makaleyi düzenle"
@ -223,7 +211,7 @@ msgstr "oluşturma tarihi"
msgid "modified at" msgid "modified at"
msgstr "düzenleme tarihi" msgstr "düzenleme tarihi"
#: models.py:38 models.py:123 models.py:276 #: models.py:38 models.py:123 models.py:275
msgid "app. config" msgid "app. config"
msgstr "" msgstr ""
@ -333,52 +321,52 @@ msgstr "blog makalesi"
msgid "blog articles" msgid "blog articles"
msgstr "blog makaleleri" msgstr "blog makaleleri"
#: models.py:293 #: models.py:294 models.py:328
msgid "generic blog plugin"
msgstr ""
#: models.py:297 models.py:330
msgid "articles" msgid "articles"
msgstr "" msgstr ""
#: models.py:298 #: models.py:295
msgid "The number of latests articles to be displayed." msgid "The number of latests articles to be displayed."
msgstr "Ğörütülenecek olan makale sayısı" msgstr "Ğörütülenecek olan makale sayısı"
#: models.py:300 #: models.py:297
msgid "filter by tag" msgid "filter by tag"
msgstr "" msgstr ""
#: models.py:301 #: models.py:298
msgid "Show only the blog articles tagged with chosen tags." msgid "Show only the blog articles tagged with chosen tags."
msgstr "Sadece seçili etiketlerle işaretlenmiş makaleleri göster." msgstr "Sadece seçili etiketlerle işaretlenmiş makaleleri göster."
#: models.py:304 #: models.py:301
msgid "filter by category" msgid "filter by category"
msgstr "" msgstr ""
#: models.py:305 #: models.py:302
msgid "Show only the blog articles tagged with chosen categories." msgid "Show only the blog articles tagged with chosen categories."
msgstr "Sadece seçili kategorilerde bulunan makaleleri ğöster" msgstr "Sadece seçili kategorilerde bulunan makaleleri ğöster"
#: models.py:309 #: models.py:306
#, python-format #, python-format
msgid "%s latest articles by tag" msgid "%s latest articles by tag"
msgstr "" msgstr ""
#: models.py:326 #: models.py:324
msgid "authors" msgid "authors"
msgstr "" msgstr ""
#: models.py:331 #: models.py:329
msgid "The number of author articles to be displayed." msgid "The number of author articles to be displayed."
msgstr "İlgili yazarın gösterilecek olan makale sayısı." msgstr "İlgili yazarın gösterilecek olan makale sayısı."
#: models.py:335 #: models.py:333
#, python-format #, python-format
msgid "%s latest articles by author" msgid "%s latest articles by author"
msgstr "" msgstr ""
#: models.py:362
msgid "generic blog plugin"
msgstr ""
#: settings.py:16 #: settings.py:16
msgid "Full date" msgid "Full date"
msgstr "" msgstr ""
@ -439,6 +427,27 @@ msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
#: settings.py:113
msgid "Latest Blog Articles"
msgstr "Blog'un son makaleleri"
#: settings.py:115
msgid "Author Blog Articles"
msgstr "Blog'un makale yazarı"
#: settings.py:117 templates/djangocms_blog/plugins/tags.html:3
msgid "Tags"
msgstr "Etiketler"
#: settings.py:119 templates/djangocms_blog/plugins/categories.html:3
msgid "Categories"
msgstr "Kategoriler"
#: settings.py:121 templates/djangocms_blog/plugins/archive.html:3
#: templates/djangocms_blog/post_list.html:12
msgid "Archive"
msgstr "Arşiv"
#: templates/djangocms_blog/includes/blog_item.html:24 #: templates/djangocms_blog/includes/blog_item.html:24
msgid "read more" msgid "read more"
msgstr "devamını oku" msgstr "devamını oku"

View file

@ -99,8 +99,8 @@ class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
queryset = self.on_site() queryset = self.on_site()
if self.end_date_field: if self.end_date_field:
qfilter = ( qfilter = (
models.Q(**{'%s__gte' % self.end_date_field: now()}) models.Q(**{'%s__gte' % self.end_date_field: now()}) |
| models.Q(**{'%s__isnull' % self.end_date_field: True}) models.Q(**{'%s__isnull' % self.end_date_field: True})
) )
queryset = queryset.filter(qfilter) queryset = queryset.filter(qfilter)
return queryset.filter(**{self.publish_field: True}) return queryset.filter(**{self.publish_field: True})
@ -109,8 +109,8 @@ class GenericDateQuerySet(AppHookConfigTranslatableQueryset):
queryset = self.on_site() queryset = self.on_site()
if self.end_date_field: if self.end_date_field:
qfilter = ( qfilter = (
models.Q(**{'%s__lte' % self.end_date_field: now()}) models.Q(**{'%s__lte' % self.end_date_field: now()}) |
| models.Q(**{'%s__isnull' % self.end_date_field: False}) models.Q(**{'%s__isnull' % self.end_date_field: False})
) )
queryset = queryset.filter(qfilter) queryset = queryset.filter(qfilter)
return queryset.filter(**{self.publish_field: True}) return queryset.filter(**{self.publish_field: True})

View file

@ -1,21 +1,34 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
from cms.apphook_pool import apphook_pool
from cms.menu_bases import CMSAttachMenu from cms.menu_bases import CMSAttachMenu
from django.core.urlresolvers import resolve
from django.db.models.signals import post_delete, post_save from django.db.models.signals import post_delete, post_save
from django.utils.translation import get_language_from_request, ugettext_lazy as _ from django.utils.translation import get_language_from_request, ugettext_lazy as _
from menus.base import NavigationNode from menus.base import Modifier, NavigationNode
from menus.menu_pool import menu_pool from menus.menu_pool import menu_pool
from .cms_appconfig import BlogConfig from .cms_appconfig import BlogConfig
from .models import BlogCategory, Post from .models import BlogCategory, Post
from .settings import MENU_TYPE_CATEGORIES, MENU_TYPE_COMPLETE, MENU_TYPE_POSTS from .settings import MENU_TYPE_CATEGORIES, MENU_TYPE_COMPLETE, MENU_TYPE_POSTS, get_setting
class BlogCategoryMenu(CMSAttachMenu): class BlogCategoryMenu(CMSAttachMenu):
"""
Main menu class
Handles all types of blog menu
"""
name = _('Blog menu') name = _('Blog menu')
def get_nodes(self, request): def get_nodes(self, request):
"""
Generates the nodelist
:param request:
:return: list of nodes
"""
nodes = [] nodes = []
language = get_language_from_request(request, check_path=True) language = get_language_from_request(request, check_path=True)
@ -25,9 +38,9 @@ class BlogCategoryMenu(CMSAttachMenu):
config = False config = False
if hasattr(self, 'instance') and self.instance: if hasattr(self, 'instance') and self.instance:
config = BlogConfig.objects.get(namespace=self.instance.application_namespace) config = BlogConfig.objects.get(namespace=self.instance.application_namespace)
if config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_CATEGORIES): if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_CATEGORIES):
categories_menu = True categories_menu = True
if config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_POSTS): if config and config.menu_structure in (MENU_TYPE_COMPLETE, MENU_TYPE_POSTS):
posts_menu = True posts_menu = True
if categories_menu: if categories_menu:
@ -40,9 +53,12 @@ class BlogCategoryMenu(CMSAttachMenu):
node = NavigationNode( node = NavigationNode(
category.name, category.name,
category.get_absolute_url(), category.get_absolute_url(),
'%s-%s' % (category.__class__.__name__, category.pk), '{0}-{1}'.format(category.__class__.__name__, category.pk),
('%s-%s' % (category.__class__.__name__, category.parent.id) if category.parent (
else None) '{0}-{1}'.format(
category.__class__.__name__, category.parent.id
) if category.parent else None
)
) )
nodes.append(node) nodes.append(node)
@ -52,27 +68,77 @@ class BlogCategoryMenu(CMSAttachMenu):
posts = posts.namespace(self.instance.application_namespace) posts = posts.namespace(self.instance.application_namespace)
posts = posts.active_translations(language).distinct() posts = posts.active_translations(language).distinct()
for post in posts: for post in posts:
post_id = None
parent = None
if categories_menu: if categories_menu:
category = post.categories.first() category = post.categories.first()
parent = '%s-%s' % (category.__class__.__name__, category.pk) if category:
post_id = '%s-%s' % (post.__class__.__name__, post.pk), parent = '{0}-{1}'.format(category.__class__.__name__, category.pk)
post_id = '{0}-{1}'.format(post.__class__.__name__, post.pk),
else: else:
parent = None post_id = '{0}-{1}'.format(post.__class__.__name__, post.pk),
post_id = '%s-%s' % (post.__class__.__name__, post.pk), if post_id:
node = NavigationNode( node = NavigationNode(
post.get_title(), post.get_title(),
post.get_absolute_url(language), post.get_absolute_url(language),
post_id, post_id,
parent parent
) )
nodes.append(node) nodes.append(node)
return nodes return nodes
menu_pool.register_menu(BlogCategoryMenu) menu_pool.register_menu(BlogCategoryMenu)
class BlogNavModifier(Modifier):
"""
This navigation modifier makes sure that when
a particular blog post is viewed,
a corresponding category is selected in menu
"""
def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
"""
Actual modifier function
:param request: request
:param nodes: complete list of nodes
:param namespace: Menu namespace
:param root_id: eventual root_id
:param post_cut: flag for modifier stage
:param breadcrumb: flag for modifier stage
:return: nodeslist
"""
app = None
config = None
if getattr(request, 'current_page', None) and request.current_page.application_urls:
app = apphook_pool.get_apphook(request.current_page.application_urls)
if app and app.app_config:
namespace = resolve(request.path).namespace
config = app.get_config(namespace)
if config and config.menu_structure != MENU_TYPE_CATEGORIES:
return nodes
if post_cut:
return nodes
current_post = getattr(request, get_setting('CURRENT_POST_IDENTIFIER'), None)
category = None
if current_post and current_post.__class__ == Post:
category = current_post.categories.first()
if not category:
return nodes
for node in nodes:
if '{0}-{1}'.format(category.__class__.__name__, category.pk) == node.id:
node.selected = True
return nodes
menu_pool.register_modifier(BlogNavModifier)
def clear_menu_cache(**kwargs): def clear_menu_cache(**kwargs):
"""
Empty menu cache when saving categories
"""
menu_pool.clear(all=True) menu_pool.clear(all=True)
post_save.connect(clear_menu_cache, sender=BlogCategory) post_save.connect(clear_menu_cache, sender=BlogCategory)

View file

@ -8,13 +8,18 @@ import filer.fields.image
import meta_mixin.models import meta_mixin.models
import taggit_autosuggest.managers import taggit_autosuggest.managers
from django.conf import settings from django.conf import settings
from django.db import models, migrations from django.db import migrations, models
from djangocms_blog.models import thumbnail_model
from filer.settings import FILER_IMAGE_MODEL
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or 'filer.Image'
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
('cms', '__latest__'), ('cms', '__latest__'),
('taggit', '__latest__'), ('taggit', '__latest__'),
('filer', '__latest__'), ('filer', '__latest__'),
@ -90,9 +95,9 @@ class Migration(migrations.Migration):
('author', models.ForeignKey(related_name='djangocms_blog_post_author', verbose_name='Author', blank=True, to=settings.AUTH_USER_MODEL, null=True)), ('author', models.ForeignKey(related_name='djangocms_blog_post_author', verbose_name='Author', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
('categories', models.ManyToManyField(related_name='blog_posts', verbose_name='category', to='djangocms_blog.BlogCategory')), ('categories', models.ManyToManyField(related_name='blog_posts', verbose_name='category', to='djangocms_blog.BlogCategory')),
('content', cms.models.fields.PlaceholderField(slotname='post_content', editable=False, to='cms.Placeholder', null=True)), ('content', cms.models.fields.PlaceholderField(slotname='post_content', editable=False, to='cms.Placeholder', null=True)),
('main_image', filer.fields.image.FilerImageField(related_name='djangocms_blog_post_image', verbose_name='Main image', blank=True, to='filer.Image', null=True)), ('main_image', filer.fields.image.FilerImageField(related_name='djangocms_blog_post_image', verbose_name='Main image', blank=True, to=ACTUAL_FILER_IMAGE_MODEL, null=True)),
('main_image_full', models.ForeignKey(related_name='djangocms_blog_post_full', verbose_name='Main image full', blank=True, to='cmsplugin_filer_image.ThumbnailOption', null=True)), ('main_image_full', models.ForeignKey(related_name='djangocms_blog_post_full', verbose_name='Main image full', blank=True, to=thumbnail_model, null=True)),
('main_image_thumbnail', models.ForeignKey(related_name='djangocms_blog_post_thumbnail', verbose_name='Main image thumbnail', blank=True, to='cmsplugin_filer_image.ThumbnailOption', null=True)), ('main_image_thumbnail', models.ForeignKey(related_name='djangocms_blog_post_thumbnail', verbose_name='Main image thumbnail', blank=True, to=thumbnail_model, null=True)),
('tags', taggit_autosuggest.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', blank=True, help_text='A comma-separated list of tags.', verbose_name='Tags')), ('tags', taggit_autosuggest.managers.TaggableManager(to='taggit.Tag', through='taggit.TaggedItem', blank=True, help_text='A comma-separated list of tags.', verbose_name='Tags')),
], ],
options={ options={

View file

@ -1,14 +1,19 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import models, migrations
import filer.fields.image
import django.db.models.deletion import django.db.models.deletion
import filer.fields.image
from django.db import migrations, models
from djangocms_blog.models import thumbnail_model
from filer.settings import FILER_IMAGE_MODEL
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or 'filer.Image'
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
('djangocms_blog', '0003_auto_20141201_2252'), ('djangocms_blog', '0003_auto_20141201_2252'),
] ]
@ -16,19 +21,19 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image', name='main_image',
field=filer.fields.image.FilerImageField(related_name='djangocms_blog_post_image', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image', blank=True, to='filer.Image', null=True), field=filer.fields.image.FilerImageField(related_name='djangocms_blog_post_image', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image', blank=True, to=ACTUAL_FILER_IMAGE_MODEL, null=True),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image_full', name='main_image_full',
field=models.ForeignKey(related_name='djangocms_blog_post_full', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image full', blank=True, to='cmsplugin_filer_image.ThumbnailOption', null=True), field=models.ForeignKey(related_name='djangocms_blog_post_full', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image full', blank=True, to=thumbnail_model, null=True),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image_thumbnail', name='main_image_thumbnail',
field=models.ForeignKey(related_name='djangocms_blog_post_thumbnail', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image thumbnail', blank=True, to='cmsplugin_filer_image.ThumbnailOption', null=True), field=models.ForeignKey(related_name='djangocms_blog_post_thumbnail', on_delete=django.db.models.deletion.SET_NULL, verbose_name='Main image thumbnail', blank=True, to=thumbnail_model, null=True),
preserve_default=True, preserve_default=True,
), ),
] ]

View file

@ -1,18 +1,23 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import models, migrations
import filer.fields.image
import django.utils.timezone
from django.conf import settings
import djangocms_text_ckeditor.fields
import django.db.models.deletion import django.db.models.deletion
import django.utils.timezone
import djangocms_text_ckeditor.fields
import filer.fields.image
from django.conf import settings
from django.db import migrations, models
from djangocms_blog.models import thumbnail_model
from filer.settings import FILER_IMAGE_MODEL
ACTUAL_FILER_IMAGE_MODEL = FILER_IMAGE_MODEL or 'filer.Image'
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('djangocms_blog', '0006_auto_20150214_1907'), ('djangocms_blog', '0006_auto_20150214_1907'),
migrations.swappable_dependency(ACTUAL_FILER_IMAGE_MODEL),
] ]
operations = [ operations = [
@ -99,19 +104,19 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image', name='main_image',
field=filer.fields.image.FilerImageField(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image', to='filer.Image', related_name='djangocms_blog_post_image', null=True), field=filer.fields.image.FilerImageField(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image', to=ACTUAL_FILER_IMAGE_MODEL, related_name='djangocms_blog_post_image', null=True),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image_full', name='main_image_full',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image full', to='cmsplugin_filer_image.ThumbnailOption', related_name='djangocms_blog_post_full', null=True), field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image full', to=thumbnail_model, related_name='djangocms_blog_post_full', null=True),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterField( migrations.AlterField(
model_name='post', model_name='post',
name='main_image_thumbnail', name='main_image_thumbnail',
field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image thumbnail', to='cmsplugin_filer_image.ThumbnailOption', related_name='djangocms_blog_post_thumbnail', null=True), field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, verbose_name='main image thumbnail', to=thumbnail_model, related_name='djangocms_blog_post_thumbnail', null=True),
preserve_default=True, preserve_default=True,
), ),
migrations.AlterField( migrations.AlterField(

View file

@ -4,37 +4,9 @@ from __future__ import unicode_literals
import aldryn_apphooks_config.fields import aldryn_apphooks_config.fields
import app_data.fields import app_data.fields
import djangocms_text_ckeditor.fields import djangocms_text_ckeditor.fields
from cms.models import Page
from cms.utils.i18n import get_language_list
from django.db import models, migrations from django.db import models, migrations
def forwards(apps, schema_editor):
BlogConfig = apps.get_model('djangocms_blog', 'BlogConfig')
BlogConfigTranslation = apps.get_model('djangocms_blog', 'BlogConfigTranslation')
Post = apps.get_model('djangocms_blog', 'Post')
BlogCategory = apps.get_model('djangocms_blog', 'BlogCategory')
GenericBlogPlugin = apps.get_model('djangocms_blog', 'GenericBlogPlugin')
LatestPostsPlugin = apps.get_model('djangocms_blog', 'LatestPostsPlugin')
AuthorEntriesPlugin = apps.get_model('djangocms_blog', 'AuthorEntriesPlugin')
config = None
for page in Page.objects.drafts().filter(application_urls='BlogApp'):
config = BlogConfig.objects.create(namespace=page.application_namespace)
for lang in get_language_list():
title = page.get_title(lang)
translation = BlogConfigTranslation.objects.create(language_code=lang, master_id=config.pk, app_title=title)
if config:
for model in (Post, BlogCategory, GenericBlogPlugin, LatestPostsPlugin, AuthorEntriesPlugin):
for item in model.objects.all():
item.app_config = config
item.save()
def backwards(apps, schema_editor):
# No need for backward data migration
pass
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
@ -120,5 +92,4 @@ class Migration(migrations.Migration):
name='sites', name='sites',
field=models.ManyToManyField(to='sites.Site', help_text='Select sites in which to show the post. If none is set it will be visible in all the configured sites.', blank=True, verbose_name='Site(s)'), field=models.ManyToManyField(to='sites.Site', help_text='Select sites in which to show the post. If none is set it will be visible in all the configured sites.', blank=True, verbose_name='Site(s)'),
), ),
migrations.RunPython(forwards, backwards)
] ]

View file

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('djangocms_blog', '0011_auto_20151024_1809'),
]
operations = [
migrations.AlterModelOptions(
name='blogconfig',
options={'verbose_name': 'blog config', 'verbose_name_plural': 'blog configs'},
),
]

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.2 on 2016-02-01 21:35
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('djangocms_blog', '0012_auto_20151220_1734'),
]
operations = [
migrations.AlterField(
model_name='post',
name='categories',
field=models.ManyToManyField(blank=True, related_name='blog_posts', to='djangocms_blog.BlogCategory', verbose_name='category'),
),
]

View file

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from cms.models import Page
from cms.utils.i18n import get_language_list
from django.db import migrations, models
def forwards(apps, schema_editor):
BlogConfig = apps.get_model('djangocms_blog', 'BlogConfig')
BlogConfigTranslation = apps.get_model('djangocms_blog', 'BlogConfigTranslation')
Post = apps.get_model('djangocms_blog', 'Post')
BlogCategory = apps.get_model('djangocms_blog', 'BlogCategory')
GenericBlogPlugin = apps.get_model('djangocms_blog', 'GenericBlogPlugin')
LatestPostsPlugin = apps.get_model('djangocms_blog', 'LatestPostsPlugin')
AuthorEntriesPlugin = apps.get_model('djangocms_blog', 'AuthorEntriesPlugin')
config = None
for page in Page.objects.drafts().filter(application_urls='BlogApp'):
config, created = BlogConfig.objects.get_or_create(namespace=page.application_namespace)
if not BlogConfigTranslation.objects.exists():
for lang in get_language_list():
title = page.get_title(lang)
translation = BlogConfigTranslation.objects.create(language_code=lang, master_id=config.pk, app_title=title)
if config:
for model in (Post, BlogCategory, GenericBlogPlugin, LatestPostsPlugin, AuthorEntriesPlugin):
for item in model.objects.filter(app_config__isnull=True):
item.app_config = config
item.save()
def backwards(apps, schema_editor):
# No need for backward data migration
pass
class Migration(migrations.Migration):
dependencies = [
('djangocms_blog', '0013_auto_20160201_2235'),
]
operations = [
migrations.RunPython(forwards, backwards),
]

View file

@ -5,6 +5,7 @@ from aldryn_apphooks_config.fields import AppHookConfigField
from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager from aldryn_apphooks_config.managers.parler import AppHookConfigTranslatableManager
from cms.models import CMSPlugin, PlaceholderField from cms.models import CMSPlugin, PlaceholderField
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
@ -25,6 +26,13 @@ from .settings import get_setting
BLOG_CURRENT_POST_IDENTIFIER = get_setting('CURRENT_POST_IDENTIFIER') BLOG_CURRENT_POST_IDENTIFIER = get_setting('CURRENT_POST_IDENTIFIER')
BLOG_CURRENT_NAMESPACE = get_setting('CURRENT_NAMESPACE') BLOG_CURRENT_NAMESPACE = get_setting('CURRENT_NAMESPACE')
try:
from filer.models import ThumbnailOption # NOQA
thumbnail_model = 'filer.ThumbnailOption'
except ImportError:
from cmsplugin_filer_image.models import ThumbnailOption # NOQA
thumbnail_model = 'cmsplugin_filer_image.ThumbnailOption'
@python_2_unicode_compatible @python_2_unicode_compatible
class BlogCategory(TranslatableModel): class BlogCategory(TranslatableModel):
@ -99,16 +107,16 @@ class Post(ModelMeta, TranslatableModel):
blank=True) blank=True)
publish = models.BooleanField(_('publish'), default=False) publish = models.BooleanField(_('publish'), default=False)
categories = models.ManyToManyField('djangocms_blog.BlogCategory', verbose_name=_('category'), categories = models.ManyToManyField('djangocms_blog.BlogCategory', verbose_name=_('category'),
related_name='blog_posts',) related_name='blog_posts', blank=True)
main_image = FilerImageField(verbose_name=_('main image'), blank=True, null=True, main_image = FilerImageField(verbose_name=_('main image'), blank=True, null=True,
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
related_name='djangocms_blog_post_image') related_name='djangocms_blog_post_image')
main_image_thumbnail = models.ForeignKey('cmsplugin_filer_image.ThumbnailOption', main_image_thumbnail = models.ForeignKey(thumbnail_model,
verbose_name=_('main image thumbnail'), verbose_name=_('main image thumbnail'),
related_name='djangocms_blog_post_thumbnail', related_name='djangocms_blog_post_thumbnail',
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
blank=True, null=True) blank=True, null=True)
main_image_full = models.ForeignKey('cmsplugin_filer_image.ThumbnailOption', main_image_full = models.ForeignKey(thumbnail_model,
verbose_name=_('main image full'), verbose_name=_('main image full'),
related_name='djangocms_blog_post_full', related_name='djangocms_blog_post_full',
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
@ -231,7 +239,7 @@ class Post(ModelMeta, TranslatableModel):
return title.strip() return title.strip()
def get_keywords(self): def get_keywords(self):
return self.safe_translation_getter('meta_keywords').strip().split(',') return self.safe_translation_getter('meta_keywords', default='').strip().split(',')
def get_locale(self): def get_locale(self):
return self.get_current_language() return self.get_current_language()
@ -254,6 +262,14 @@ class Post(ModelMeta, TranslatableModel):
def get_author(self): def get_author(self):
return self.author return self.author
def _set_default_author(self, current_user):
if not self.author_id and self.app_config.set_author:
if get_setting('AUTHOR_DEFAULT') is True:
user = current_user
else:
user = get_user_model().objects.get(username=get_setting('AUTHOR_DEFAULT'))
self.author = user
def thumbnail_options(self): def thumbnail_options(self):
if self.main_image_thumbnail_id: if self.main_image_thumbnail_id:
return self.main_image_thumbnail.as_dict return self.main_image_thumbnail.as_dict
@ -308,6 +324,8 @@ class LatestPostsPlugin(BasePostPlugin):
def copy_relations(self, oldinstance): def copy_relations(self, oldinstance):
for tag in oldinstance.tags.all(): for tag in oldinstance.tags.all():
self.tags.add(tag) self.tags.add(tag)
for category in oldinstance.categories.all():
self.categories.add(category)
def get_posts(self, request): def get_posts(self, request):
posts = self.post_queryset(request) posts = self.post_queryset(request)

View file

@ -15,20 +15,17 @@ class PostIndex(get_index_base()):
author = indexes.CharField(indexed=True, model_attr='get_author') author = indexes.CharField(indexed=True, model_attr='get_author')
keywords = indexes.CharField(null=True) keywords = indexes.CharField(null=True)
tags = indexes.CharField(null=True) tags = indexes.CharField(null=True, model_attr='get_tags')
post_text = indexes.CharField(null=True) post_text = indexes.CharField(null=True)
def get_keywords(self, post):
return ','.join(post.get_keywords())
def get_title(self, post): def get_title(self, post):
return post.safe_translation_getter('title') return post.get_title()
def get_description(self, post): def get_description(self, post):
return post.get_description() return post.get_description()
def prepare_pub_date(self, post): def prepare_pub_date(self, post):
return post.date_published.strftime("%Y-%m-%d %H:%M:%S") return post.date_published
def index_queryset(self, using=None): def index_queryset(self, using=None):
self._get_backend(using) self._get_backend(using)
@ -47,32 +44,36 @@ class PostIndex(get_index_base()):
return Post return Post
def get_search_data(self, post, language, request): def get_search_data(self, post, language, request):
optional_attributes = [] description = post.get_description()
abstract = post.safe_translation_getter('abstract') abstract = strip_tags(post.safe_translation_getter('abstract', default=''))
text_bits = [post.get_title()] keywords = post.get_keywords()
text_bits.append(strip_tags(abstract))
text_bits.append(post.get_description()) text_bits = []
text_bits.append(' '.join(post.get_keywords())) if abstract:
text_bits.append(abstract)
if description:
text_bits.append(description)
if keywords:
text_bits.append(' '.join(keywords))
self.prepared_data['keywords'] = ','.join(keywords)
for category in post.categories.all(): for category in post.categories.all():
text_bits.append( text_bits.append(
force_text(category.safe_translation_getter('name'))) force_text(category.safe_translation_getter('name')))
for tag in post.tags.all(): for tag in post.tags.all():
text_bits.append(force_text(tag.name)) text_bits.append(force_text(tag.name))
if post.content:
if get_setting('USE_PLACEHOLDER'):
plugins = post.content.cmsplugin_set.filter(language=language) plugins = post.content.cmsplugin_set.filter(language=language)
content_bits = []
for base_plugin in plugins: for base_plugin in plugins:
content = get_plugin_index_data(base_plugin, request) content = get_plugin_index_data(base_plugin, request)
text_bits.append(' '.join(content)) content_bits.append(' '.join(content))
for attribute in optional_attributes: post_text = ' '.join(content_bits)
value = force_text(getattr(post, attribute)) else:
if value and value not in text_bits: post_text = post.safe_translation_getter('post_text')
text_bits.append(value) if post_text:
return ' '.join(text_bits) post_text = strip_tags(post_text)
self.prepared_data['post_text'] = post_text
text_bits.append(post_text)
def prepare_fields(self, post, language, request): return ' '.join(text_bits)
super(PostIndex, self).prepare_fields(post, language, request)
data = [self.prepared_data['text']]
self.prepared_data['keywords'] = ' '.join(post.get_keywords())
self.prepared_data['tags'] = ' '.join(post.get_tags())
self.prepared_data['post_text'] = ' '.join(post.safe_translation_getter('post_text'))
self.prepared_data['text'] = ' '.join(data)

View file

@ -80,6 +80,8 @@ def get_setting(name):
'BLOG_MULTISITE': getattr(settings, 'BLOG_MULTISITE', True), 'BLOG_MULTISITE': getattr(settings, 'BLOG_MULTISITE', True),
'BLOG_AUTHOR_DEFAULT': getattr(settings, 'BLOG_AUTHOR_DEFAULT', True), 'BLOG_AUTHOR_DEFAULT': getattr(settings, 'BLOG_AUTHOR_DEFAULT', True),
'BLOG_DEFAULT_PUBLISHED': getattr(settings, 'BLOG_DEFAULT_PUBLISHED', False), 'BLOG_DEFAULT_PUBLISHED': getattr(settings, 'BLOG_DEFAULT_PUBLISHED', False),
'BLOG_ADMIN_POST_FIELDSET_FILTER': getattr(
settings, 'BLOG_ADMIN_POST_FIELDSET_FILTER', False),
'BLOG_AVAILABLE_PERMALINK_STYLES': getattr( 'BLOG_AVAILABLE_PERMALINK_STYLES': getattr(
settings, 'BLOG_AVAILABLE_PERMALINK_STYLES', PERMALINKS settings, 'BLOG_AVAILABLE_PERMALINK_STYLES', PERMALINKS
), ),

View file

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.utils import timezone from django.utils import timezone
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
from django.db import models from django.db import models
@ -66,8 +67,8 @@ class Migration(SchemaMigration):
('date_published_end', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), ('date_published_end', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
('publish', self.gf('django.db.models.fields.BooleanField')(default=False)), ('publish', self.gf('django.db.models.fields.BooleanField')(default=False)),
('main_image', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['filer.Image'], null=True, blank=True)), ('main_image', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['filer.Image'], null=True, blank=True)),
('main_image_thumbnail', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='blog_post_thumbnail', null=True, to=orm['cmsplugin_filer_image.ThumbnailOption'])), ('main_image_thumbnail', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='blog_post_thumbnail', null=True, to=orm[thumbnail_model])),
('main_image_full', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='blog_post_full', null=True, to=orm['cmsplugin_filer_image.ThumbnailOption'])), ('main_image_full', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='blog_post_full', null=True, to=orm[thumbnail_model])),
('content', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['cms.Placeholder'], null=True)), ('content', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['cms.Placeholder'], null=True)),
)) ))
db.send_create_signal(u'djangocms_blog', ['Post']) db.send_create_signal(u'djangocms_blog', ['Post'])
@ -218,7 +219,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -273,8 +274,8 @@ class Migration(SchemaMigration):
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), 'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -12,7 +13,7 @@ class Migration(SchemaMigration):
def backwards(self, orm): def backwards(self, orm):
raise RuntimeError("Cannot reverse this migration. 'Post.author' and its values cannot be restored.") raise RuntimeError("Cannot reverse this migration. 'Post.author' and its values cannot be restored.")
# The following code is provided here to aid in writing a correct migration # The following code is provided here to aid in writing a correct migration
# Changing field 'Post.author' # Changing field 'Post.author'
db.alter_column(u'djangocms_blog_post', 'author_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[dj_settings.AUTH_USER_MODEL])) db.alter_column(u'djangocms_blog_post', 'author_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[dj_settings.AUTH_USER_MODEL]))
@ -68,7 +69,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -123,8 +124,8 @@ class Migration(SchemaMigration):
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), 'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.post_translation': { u'djangocms_blog.post_translation': {

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -67,7 +68,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -122,8 +123,8 @@ class Migration(SchemaMigration):
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), 'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -69,7 +70,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -124,8 +125,8 @@ class Migration(SchemaMigration):
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), 'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {
@ -197,4 +198,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -69,7 +70,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -124,8 +125,8 @@ class Migration(SchemaMigration):
'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), 'date_published_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['filer.Image']", 'null': 'True', 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {
@ -198,4 +199,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -69,7 +70,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -125,8 +126,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {
@ -193,4 +194,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.conf import settings as dj_settings from django.conf import settings as dj_settings
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -69,7 +70,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -125,8 +126,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {
@ -194,4 +195,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -70,7 +71,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '50', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -126,8 +127,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
}, },
u'djangocms_blog.posttranslation': { u'djangocms_blog.posttranslation': {
@ -196,4 +197,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -74,7 +75,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "('width', 'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -130,8 +131,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'})
}, },
@ -206,4 +207,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -10,24 +11,24 @@ class Migration(SchemaMigration):
def forwards(self, orm): def forwards(self, orm):
# Changing field 'Post.main_image_full' # Changing field 'Post.main_image_full'
db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['cmsplugin_filer_image.ThumbnailOption'])) db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm[thumbnail_model]))
# Changing field 'Post.main_image' # Changing field 'Post.main_image'
db.alter_column(u'djangocms_blog_post', 'main_image_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['filer.Image'])) db.alter_column(u'djangocms_blog_post', 'main_image_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['filer.Image']))
# Changing field 'Post.main_image_thumbnail' # Changing field 'Post.main_image_thumbnail'
db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm['cmsplugin_filer_image.ThumbnailOption'])) db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, on_delete=models.SET_NULL, to=orm[thumbnail_model]))
def backwards(self, orm): def backwards(self, orm):
# Changing field 'Post.main_image_full' # Changing field 'Post.main_image_full'
db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['cmsplugin_filer_image.ThumbnailOption'])) db.alter_column(u'djangocms_blog_post', 'main_image_full_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm[thumbnail_model]))
# Changing field 'Post.main_image' # Changing field 'Post.main_image'
db.alter_column(u'djangocms_blog_post', 'main_image_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['filer.Image'])) db.alter_column(u'djangocms_blog_post', 'main_image_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['filer.Image']))
# Changing field 'Post.main_image_thumbnail' # Changing field 'Post.main_image_thumbnail'
db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['cmsplugin_filer_image.ThumbnailOption'])) db.alter_column(u'djangocms_blog_post', 'main_image_thumbnail_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm[thumbnail_model]))
models = { models = {
u'auth.group': { u'auth.group': {
@ -80,7 +81,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -136,8 +137,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'})
}, },
@ -212,4 +213,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -61,7 +62,7 @@ class Migration(SchemaMigration):
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255'}) 'slot': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255'})
}, },
'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'object_name': 'ThumbnailOption', 'ordering': "('width', 'height')"}, 'Meta': {'object_name': 'ThumbnailOption', 'ordering': "('width', 'height')"},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -117,8 +118,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['filer.Image']", 'null': 'True', 'related_name': "'djangocms_blog_post_image'"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['filer.Image']", 'null': 'True', 'related_name': "'djangocms_blog_post_image'"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['cmsplugin_filer_image.ThumbnailOption']", 'null': 'True', 'related_name': "'djangocms_blog_post_full'"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm[thumbnail_model]", 'null': 'True', 'related_name': "'djangocms_blog_post_full'"}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm['cmsplugin_filer_image.ThumbnailOption']", 'null': 'True', 'related_name': "'djangocms_blog_post_thumbnail'"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'blank': 'True', 'to': "orm[thumbnail_model]", 'null': 'True', 'related_name': "'djangocms_blog_post_thumbnail'"}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['sites.Site']", 'null': 'True', 'symmetrical': 'False'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'to': "orm['sites.Site']", 'null': 'True', 'symmetrical': 'False'})
}, },

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
@ -90,7 +91,7 @@ class Migration(DataMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -146,8 +147,8 @@ class Migration(DataMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'})
}, },

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -73,7 +74,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -128,8 +129,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['sites.Site']", 'null': 'True', 'blank': 'True'})
}, },
@ -198,4 +199,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -133,7 +134,7 @@ class Migration(SchemaMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -211,8 +212,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['sites.Site']", 'symmetrical': 'False', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['sites.Site']", 'symmetrical': 'False', 'blank': 'True'})
}, },
@ -282,4 +283,4 @@ class Migration(SchemaMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import DataMigration from south.v2 import DataMigration
@ -84,7 +85,7 @@ class Migration(DataMigration):
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
u'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'}, 'Meta': {'ordering': "(u'width', u'height')", 'object_name': 'ThumbnailOption'},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -162,8 +163,8 @@ class Migration(DataMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_image'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['filer.Image']"}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_full'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['cmsplugin_filer_image.ThumbnailOption']"}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "u'djangocms_blog_post_thumbnail'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['%s']" % thumbnail_model}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['sites.Site']", 'symmetrical': 'False', 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['sites.Site']", 'symmetrical': 'False', 'blank': 'True'})
}, },
@ -233,4 +234,4 @@ class Migration(DataMigration):
} }
} }
complete_apps = ['djangocms_blog'] complete_apps = ['djangocms_blog']

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from djangocms_blog.models import thumbnail_model
from south.utils import datetime_utils as datetime from south.utils import datetime_utils as datetime
from south.db import db from south.db import db
from south.v2 import SchemaMigration from south.v2 import SchemaMigration
@ -70,7 +71,7 @@ class Migration(SchemaMigration):
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) 'slot': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'})
}, },
'cmsplugin_filer_image.thumbnailoption': { thumbnail_model: {
'Meta': {'object_name': 'ThumbnailOption', 'ordering': "('width', 'height')"}, 'Meta': {'object_name': 'ThumbnailOption', 'ordering': "('width', 'height')"},
'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'crop': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'height': ('django.db.models.fields.IntegerField', [], {}), 'height': ('django.db.models.fields.IntegerField', [], {}),
@ -149,8 +150,8 @@ class Migration(SchemaMigration):
'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), 'enable_comments': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'main_image': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['filer.Image']", 'related_name': "'djangocms_blog_post_image'", 'blank': 'True'}), 'main_image': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['filer.Image']", 'related_name': "'djangocms_blog_post_image'", 'blank': 'True'}),
'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['cmsplugin_filer_image.ThumbnailOption']", 'related_name': "'djangocms_blog_post_full'", 'blank': 'True'}), 'main_image_full': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm[thumbnail_model]", 'related_name': "'djangocms_blog_post_full'", 'blank': 'True'}),
'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm['cmsplugin_filer_image.ThumbnailOption']", 'related_name': "'djangocms_blog_post_thumbnail'", 'blank': 'True'}), 'main_image_thumbnail': ('django.db.models.fields.related.ForeignKey', [], {'on_delete': 'models.SET_NULL', 'null': 'True', 'to': "orm[thumbnail_model]", 'related_name': "'djangocms_blog_post_thumbnail'", 'blank': 'True'}),
'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['sites.Site']", 'blank': 'True'}) 'sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['sites.Site']", 'blank': 'True'})
}, },

View file

@ -7,7 +7,7 @@
{% endblock meta %} {% endblock meta %}
{% block content %} {% block content %}
<div class="app app-blog span8"> <div class="app app-blog">
{% block content_blog %}{% endblock %} {% block content_blog %}{% endblock %}
</div> </div>
{% endblock content %} {% endblock content %}

View file

@ -9,3 +9,4 @@ https://github.com/nephila/djangocms-helper/archive/develop.zip
tox>=2.0 tox>=2.0
wheel wheel
pysolr pysolr
django-parler>=1.6

View file

@ -27,7 +27,7 @@ setup(
], ],
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
'django-parler>=1.2', 'django-parler>=1.5',
'django-cms>3.0.11', 'django-cms>3.0.11',
'django-taggit>=0.12.2', 'django-taggit>=0.12.2',
'django-filer', 'django-filer',
@ -51,7 +51,7 @@ setup(
}, },
classifiers=[ classifiers=[
'Development Status :: 4 - Beta', 'Development Status :: 5 - Production/Stable',
'Framework :: Django', 'Framework :: Django',
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', 'License :: OSI Approved :: BSD License',

View file

@ -6,6 +6,7 @@ from copy import deepcopy
from cmsplugin_filer_image.models import ThumbnailOption from cmsplugin_filer_image.models import ThumbnailOption
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.core.cache import cache
from djangocms_helper.base_test import BaseTestCase from djangocms_helper.base_test import BaseTestCase
from haystack import connections from haystack import connections
from haystack.constants import DEFAULT_ALIAS from haystack.constants import DEFAULT_ALIAS
@ -18,7 +19,7 @@ User = get_user_model()
def _get_cat_pk(lang, name): def _get_cat_pk(lang, name):
return lambda: BlogCategory.objects.translated(lang, name=name).get().pk return lambda: BlogCategory.objects.language(lang).translated(lang, name=name).get().pk
class BaseTest(BaseTestCase): class BaseTest(BaseTestCase):
@ -65,7 +66,8 @@ class BaseTest(BaseTestCase):
'description': 'Descrizione del terzo post', 'keywords': 'keyword5, keyword6', 'description': 'Descrizione del terzo post', 'keywords': 'keyword5, keyword6',
'text': 'Testo del terzo post'}, 'text': 'Testo del terzo post'},
}, },
{'en': {'title': 'Different appconfig', 'abstract': '<p>Different appconfig first line</p>', {'en': {'title': 'Different appconfig',
'abstract': '<p>Different appconfig first line</p>',
'description': 'Different appconfig description', 'keywords': 'keyword5, keyword6', 'description': 'Different appconfig description', 'keywords': 'keyword5, keyword6',
'text': 'Different appconfig text', 'app_config': 'sample_app2', 'publish': True}, 'text': 'Different appconfig text', 'app_config': 'sample_app2', 'publish': True},
'it': {'title': 'Altro appconfig', 'abstract': '<p>prima riga del Altro appconfig</p>', 'it': {'title': 'Altro appconfig', 'abstract': '<p>prima riga del Altro appconfig</p>',
@ -84,17 +86,19 @@ class BaseTest(BaseTestCase):
{'en': {'name': 'Almost', 'app_config': 'sample_app'}, {'en': {'name': 'Almost', 'app_config': 'sample_app'},
'it': {'name': 'Mezzo'}, 'it': {'name': 'Mezzo'},
}, },
{'en': {'name': 'Loud', 'parent_id': _get_cat_pk('en', 'Almost'), 'app_config': 'sample_app'},
'it': {'name': 'Forte', 'parent_id': _get_cat_pk('it', 'Mezzo')},
},
{'en': {'name': 'Silent', 'parent_id': _get_cat_pk('en', 'Almost'), 'app_config': 'sample_app'},
},
{'en': {'name': 'Drums', 'app_config': 'sample_app2'}, {'en': {'name': 'Drums', 'app_config': 'sample_app2'},
'it': {'name': 'Tamburi'}, 'it': {'name': 'Tamburi'},
}, },
{'en': {'name': 'Guitars', 'app_config': 'sample_app2'}, {'en': {'name': 'Guitars', 'app_config': 'sample_app2'},
'it': {'name': 'Chitarre'}, 'it': {'name': 'Chitarre'},
}, },
{'en': {'name': 'Loud', 'parent_id': _get_cat_pk('en', 'Almost'),
'app_config': 'sample_app'},
'it': {'name': 'Forte', 'parent_id': _get_cat_pk('it', 'Mezzo')},
},
{'en': {'name': 'Silent', 'parent_id': _get_cat_pk('en', 'Almost'),
'app_config': 'sample_app'},
},
) )
@classmethod @classmethod
@ -120,11 +124,13 @@ class BaseTest(BaseTestCase):
'sample_app': cls.app_config_1, 'sample_app': cls.app_config_1,
'sample_app2': cls.app_config_2, 'sample_app2': cls.app_config_2,
} }
cls.category_1 = BlogCategory.objects.create(name='category 1', app_config=cls.app_config_1) cls.category_1 = BlogCategory.objects.create(name='category 1',
app_config=cls.app_config_1)
cls.category_1.set_current_language('it', initialize=True) cls.category_1.set_current_language('it', initialize=True)
cls.category_1.name = 'categoria 1' cls.category_1.name = 'categoria 1'
cls.category_1.save() cls.category_1.save()
cls.site_2 = Site.objects.create(domain='http://example2.com', name='example 2') cls.site_2 = Site.objects.create(domain='http://example2.com', name='example 2')
cache.clear()
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):
@ -168,7 +174,6 @@ class BaseTest(BaseTestCase):
meta_description=data['description'], meta_description=data['description'],
meta_keywords=data['keywords'] meta_keywords=data['keywords']
) )
post = self.reload_model(post)
post.categories.add(self.category_1) post.categories.add(self.category_1)
if sites: if sites:
for site in sites: for site in sites:
@ -177,6 +182,7 @@ class BaseTest(BaseTestCase):
def get_posts(self, sites=None): def get_posts(self, sites=None):
posts = [] posts = []
cache.clear()
for post in self._post_data: for post in self._post_data:
post1 = self._get_post(post['en'], sites=sites) post1 = self._get_post(post['en'], sites=sites)
post1 = self._get_post(post['it'], post=post1, lang='it') post1 = self._get_post(post['it'], post=post1, lang='it')

View file

@ -3,7 +3,7 @@ from __future__ import absolute_import, print_function, unicode_literals
from aldryn_apphooks_config.utils import get_app_instance from aldryn_apphooks_config.utils import get_app_instance
from django.core.cache import cache from django.core.cache import cache
from django.utils.translation import activate from django.utils.translation import activate, override
from menus.menu_pool import menu_pool from menus.menu_pool import menu_pool
from parler.utils.context import smart_override, switch_language from parler.utils.context import smart_override, switch_language
@ -21,6 +21,7 @@ class MenuTest(BaseTest):
def setUp(self): def setUp(self):
super(MenuTest, self).setUp() super(MenuTest, self).setUp()
self.cats = [self.category_1] self.cats = [self.category_1]
cache.clear()
for i, lang_data in enumerate(self._categories_data): for i, lang_data in enumerate(self._categories_data):
cat = self._get_category(lang_data['en']) cat = self._get_category(lang_data['en'])
if 'it' in lang_data: if 'it' in lang_data:
@ -28,26 +29,39 @@ class MenuTest(BaseTest):
self.cats.append(cat) self.cats.append(cat)
activate('en') activate('en')
menu_pool.clear(all=True)
menu_pool.discover_menus() menu_pool.discover_menus()
# All cms menu modifiers should be removed from menu_pool.modifiers # All cms menu modifiers should be removed from menu_pool.modifiers
# so that they do not interfere with our menu nodes # so that they do not interfere with our menu nodes
menu_pool.modifiers = [m for m in menu_pool.modifiers if m.__module__.startswith('djangocms_blog')] menu_pool.modifiers = [m for m in menu_pool.modifiers if m.__module__.startswith('djangocms_blog')]
cache.clear()
def test_menu_nodes(self): def test_menu_nodes(self):
""" """
Tests if all categories are present in the menu Tests if all categories are present in the menu
""" """
self.get_posts() posts = self.get_posts()
self.get_pages() pages = self.get_pages()
self.reload_urlconf()
for lang in ('en', 'it'): for lang in ('en', 'it'):
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
with smart_override(lang): with smart_override(lang):
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') request = self.get_page_request(pages[1], self.user, pages[1].get_absolute_url(lang))
nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes]) nodes_url = set([node.url for node in nodes])
cats_url = set([cat.get_absolute_url() for cat in self.cats if cat.has_translation(lang)]) cats_url = set([cat.get_absolute_url() for cat in self.cats if cat.has_translation(lang)])
self.assertTrue(cats_url.issubset(nodes_url)) self.assertTrue(cats_url.issubset(nodes_url))
cache.clear()
posts[0].categories.clear()
for lang in ('en', 'it'):
with smart_override(lang):
request = self.get_page_request(pages[1], self.user, pages[1].get_absolute_url(lang))
nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes])
self.assertFalse(posts[0].get_absolute_url(lang) in nodes_url)
self.assertTrue(posts[1].get_absolute_url(lang) in nodes_url)
def test_menu_options(self): def test_menu_options(self):
""" """
Tests menu structure based on menu_structure configuration Tests menu structure based on menu_structure configuration
@ -72,7 +86,7 @@ class MenuTest(BaseTest):
for lang in languages: for lang in languages:
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang) request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
with smart_override(lang): with smart_override(lang):
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes]) nodes_url = set([node.url for node in nodes])
self.assertFalse(cats_url[lang].issubset(nodes_url)) self.assertFalse(cats_url[lang].issubset(nodes_url))
self.assertFalse(posts_url[lang].issubset(nodes_url)) self.assertFalse(posts_url[lang].issubset(nodes_url))
@ -84,7 +98,7 @@ class MenuTest(BaseTest):
for lang in languages: for lang in languages:
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang) request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
with smart_override(lang): with smart_override(lang):
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes]) nodes_url = set([node.url for node in nodes])
self.assertFalse(cats_url[lang].issubset(nodes_url)) self.assertFalse(cats_url[lang].issubset(nodes_url))
self.assertTrue(posts_url[lang].issubset(nodes_url)) self.assertTrue(posts_url[lang].issubset(nodes_url))
@ -96,7 +110,7 @@ class MenuTest(BaseTest):
for lang in languages: for lang in languages:
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang) request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
with smart_override(lang): with smart_override(lang):
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes]) nodes_url = set([node.url for node in nodes])
self.assertTrue(cats_url[lang].issubset(nodes_url)) self.assertTrue(cats_url[lang].issubset(nodes_url))
self.assertFalse(posts_url[lang].issubset(nodes_url)) self.assertFalse(posts_url[lang].issubset(nodes_url))
@ -108,7 +122,7 @@ class MenuTest(BaseTest):
for lang in languages: for lang in languages:
request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang) request = self.get_page_request(None, self.user, r'/%s/page-two/' % lang)
with smart_override(lang): with smart_override(lang):
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') nodes = menu_pool.get_nodes(request)
nodes_url = set([node.url for node in nodes]) nodes_url = set([node.url for node in nodes])
self.assertTrue(cats_url[lang].issubset(nodes_url)) self.assertTrue(cats_url[lang].issubset(nodes_url))
self.assertTrue(posts_url[lang].issubset(nodes_url)) self.assertTrue(posts_url[lang].issubset(nodes_url))
@ -126,22 +140,55 @@ class MenuTest(BaseTest):
(PostDetailView, 'slug', posts[0], posts[0].categories.first()), (PostDetailView, 'slug', posts[0], posts[0].categories.first()),
(CategoryEntriesView, 'category', self.cats[2], self.cats[2]) (CategoryEntriesView, 'category', self.cats[2], self.cats[2])
) )
self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE
self.app_config_1.save()
for view_cls, kwarg, obj, cat in tests: for view_cls, kwarg, obj, cat in tests:
request = self.get_page_request(pages[1], self.user, path=obj.get_absolute_url())
with smart_override('en'): with smart_override('en'):
with switch_language(obj, 'en'): with switch_language(obj, 'en'):
request = self.get_page_request(
pages[1], self.user, path=obj.get_absolute_url()
)
cache.clear()
menu_pool.clear(all=True)
view_obj = view_cls() view_obj = view_cls()
view_obj.request = request view_obj.request = request
view_obj.namespace, view_obj.config = get_app_instance(request) view_obj.namespace, view_obj.config = get_app_instance(request)
view_obj.app_config = self.app_config_1 view_obj.app_config = self.app_config_1
view_obj.kwargs = {kwarg: obj.slug} view_obj.kwargs = {kwarg: obj.slug}
view_obj.get(request) view_obj.get(request)
view_obj.get_context_data()
# check if selected menu node points to cat # check if selected menu node points to cat
nodes = menu_pool.get_nodes(request, namespace='BlogCategoryMenu') nodes = menu_pool.get_nodes(request)
found = False found = []
for node in nodes: for node in nodes:
if node.selected: if node.selected:
self.assertEqual(node.url, obj.get_absolute_url()) found.append(node.get_absolute_url())
found = True self.assertTrue(obj.get_absolute_url() in found)
break
self.assertTrue(found) self.app_config_1.app_data.config.menu_structure = MENU_TYPE_CATEGORIES
self.app_config_1.save()
for view_cls, kwarg, obj, cat in tests:
with smart_override('en'):
with switch_language(obj, 'en'):
request = self.get_page_request(
pages[1], self.user, path=obj.get_absolute_url()
)
cache.clear()
menu_pool.clear(all=True)
view_obj = view_cls()
view_obj.request = request
view_obj.namespace, view_obj.config = get_app_instance(request)
view_obj.app_config = self.app_config_1
view_obj.kwargs = {kwarg: obj.slug}
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())
self.assertTrue(cat.get_absolute_url() in found)
self.app_config_1.app_data.config.menu_structure = MENU_TYPE_COMPLETE
self.app_config_1.save()

View file

@ -34,6 +34,8 @@ class AdminTest(BaseTest):
admin.autodiscover() admin.autodiscover()
def test_admin_post_views(self): def test_admin_post_views(self):
self.get_pages()
post_admin = admin.site._registry[Post] post_admin = admin.site._registry[Post]
request = self.get_page_request('/', self.user, r'/en/blog/', edit=False) request = self.get_page_request('/', self.user, r'/en/blog/', edit=False)
@ -50,6 +52,28 @@ class AdminTest(BaseTest):
self.assertContains(response, '<input id="id_slug" maxlength="50" name="slug" type="text" value="first-post" />') self.assertContains(response, '<input id="id_slug" maxlength="50" name="slug" type="text" value="first-post" />')
self.assertContains(response, '<option value="%s" selected="selected">Blog / sample_app</option>' % self.app_config_1.pk) self.assertContains(response, '<option value="%s" selected="selected">Blog / sample_app</option>' % self.app_config_1.pk)
# Test for publish view
post.publish = False
post.save()
response = post_admin.publish_post(request, str(post.pk))
# Redirects to current post
self.assertEqual(response.status_code, 302)
self.assertEqual(response['Location'], post.get_absolute_url())
post = self.reload_model(post)
# post is publshed
self.assertTrue(post.publish)
# Non-existing post is redirected to posts list
response = post_admin.publish_post(request, str('1000000'))
self.assertEqual(response.status_code, 302)
self.assertEqual(response['Location'], reverse('djangocms_blog:posts-latest'))
# unless a referer is set
request.META['HTTP_REFERER'] = '/'
response = post_admin.publish_post(request, str('1000000'))
self.assertEqual(response.status_code, 302)
self.assertEqual(response['Location'], '/')
def test_admin_blogconfig_views(self): def test_admin_blogconfig_views(self):
post_admin = admin.site._registry[BlogConfig] post_admin = admin.site._registry[BlogConfig]
request = self.get_page_request('/', self.user, r'/en/blog/', edit=False) request = self.get_page_request('/', self.user, r'/en/blog/', edit=False)
@ -67,7 +91,7 @@ class AdminTest(BaseTest):
for fieldname in BlogConfigForm.base_fields: for fieldname in BlogConfigForm.base_fields:
self.assertContains(response, 'id="id_config-%s"' % fieldname) self.assertContains(response, 'id="id_config-%s"' % fieldname)
self.assertContains(response, '<input id="id_config-og_app_id" maxlength="200" name="config-og_app_id" type="text" />') self.assertContains(response, '<input id="id_config-og_app_id" maxlength="200" name="config-og_app_id" type="text" />')
self.assertContains(response, '<input class="vTextField" id="id_namespace" maxlength="100" name="namespace" type="text" value="sample_app" />') self.assertContains(response, 'sample_app')
def test_admin_category_views(self): def test_admin_category_views(self):
post_admin = admin.site._registry[BlogCategory] post_admin = admin.site._registry[BlogCategory]
@ -191,6 +215,22 @@ class AdminTest(BaseTest):
self.assertEqual(Post.objects.count(), 3) self.assertEqual(Post.objects.count(), 3)
self.assertEqual(Post.objects.get(translations__slug='third-post').author.username, 'staff') self.assertEqual(Post.objects.get(translations__slug='third-post').author.username, 'staff')
def test_admin_fieldsets_filter(self):
post_admin = admin.site._registry[Post]
request = self.get_page_request('/', self.user_normal, r'/en/blog/?app_config=%s' % self.app_config_1.pk)
fsets = post_admin.get_fieldsets(request)
self.assertFalse('author' in fsets[1][1]['fields'][0])
def filter_function(fs, request, obj=None):
if request.user == self.user_normal:
fs[1][1]['fields'][0].append('author')
return fs
with self.settings(BLOG_ADMIN_POST_FIELDSET_FILTER=filter_function):
fsets = post_admin.get_fieldsets(request)
self.assertTrue('author' in fsets[1][1]['fields'][0])
def test_admin_post_text(self): def test_admin_post_text(self):
pages = self.get_pages() pages = self.get_pages()
post = self._get_post(self._post_data[0]['en']) post = self._get_post(self._post_data[0]['en'])
@ -252,7 +292,7 @@ class ModelsTest(BaseTest):
url_en = reverse( url_en = reverse(
'%s:post-detail' % self.app_config_1.namespace, '%s:post-detail' % self.app_config_1.namespace,
kwargs=kwargs, kwargs=kwargs,
current_app=self.app_config_1 current_app=self.app_config_1.namespace
) )
self.assertEqual(url_en, post.get_absolute_url()) self.assertEqual(url_en, post.get_absolute_url())
@ -265,7 +305,7 @@ class ModelsTest(BaseTest):
url_it = reverse( url_it = reverse(
'%s:post-detail' % self.app_config_1.namespace, '%s:post-detail' % self.app_config_1.namespace,
kwargs=kwargs, kwargs=kwargs,
current_app=self.app_config_1 current_app=self.app_config_1.namespace
) )
self.assertEqual(url_it, post.get_absolute_url()) self.assertEqual(url_it, post.get_absolute_url())
self.assertNotEqual(url_it, url_en) self.assertNotEqual(url_it, url_en)

View file

@ -59,6 +59,24 @@ class PluginTest(BaseTest):
self.assertTrue(rendered.find('<article id="post-second-post"') > -1) self.assertTrue(rendered.find('<article id="post-second-post"') > -1)
self.assertTrue(rendered.find(posts[1].get_absolute_url()) > -1) self.assertTrue(rendered.find(posts[1].get_absolute_url()) > -1)
# Checking copy relations
ph = pages[0].placeholders.get(slot='content')
original = ph.get_plugins('en')
pages[0].publish('en')
published = pages[0].get_public_object()
ph = published.placeholders.get(slot='content')
new = ph.get_plugins('en')
self.assertNotEqual(original, new)
casted_tags, __ = new[0].get_plugin_instance()
casted_categories, __ = new[1].get_plugin_instance()
self.assertEqual(casted_tags.tags.count(), 1)
self.assertEqual(casted_tags.categories.count(), 0)
self.assertEqual(casted_categories.tags.count(), 0)
self.assertEqual(casted_categories.categories.count(), 1)
def test_plugin_authors(self): def test_plugin_authors(self):
pages = self.get_pages() pages = self.get_pages()
posts = self.get_posts() posts = self.get_posts()
@ -73,6 +91,36 @@ class PluginTest(BaseTest):
rendered = plugin.render_plugin(context, ph) rendered = plugin.render_plugin(context, ph)
self.assertTrue(rendered.find('No article found') > -1) 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)
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)
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)
self.assertTrue(rendered.find('/en/blog/author/normal/') > -1)
self.assertTrue(rendered.find('0 articles') > -1)
# Checking copy relations
ph = pages[0].placeholders.get(slot='content')
original = ph.get_plugins('en')
pages[0].publish('en')
published = pages[0].get_public_object()
ph = published.placeholders.get(slot='content')
new = ph.get_plugins('en')
self.assertNotEqual(original, new)
casted_authors, __ = new[0].get_plugin_instance()
self.assertEqual(casted_authors.authors.count(), 3)
def test_plugin_tags(self): def test_plugin_tags(self):
pages = self.get_pages() pages = self.get_pages()
posts = self.get_posts() posts = self.get_posts()

View file

@ -11,7 +11,7 @@ from .base import BaseTest
class BlogIndexingTests(BaseTest): class BlogIndexingTests(BaseTest):
sample_text = ('First post First post first line This is the description keyword1 ' sample_text = ('First post first line This is the description keyword1 '
'keyword2 category 1 a tag test body') 'keyword2 category 1 a tag test body')
def setUp(self): def setUp(self):
@ -28,29 +28,12 @@ class BlogIndexingTests(BaseTest):
index.index_queryset(DEFAULT_ALIAS) # initialises index._backend_alias index.index_queryset(DEFAULT_ALIAS) # initialises index._backend_alias
indexed = index.prepare(post) indexed = index.prepare(post)
self.assertEqual(post.get_title(), indexed['title']) self.assertEqual(post.get_title(), indexed['title'])
self.assertEqual(post.get_description(), indexed['description']) self.assertEqual(post.get_description(), indexed['description'])
self.assertEqual(post.get_tags(), indexed['tags'])
self.assertEqual(self.sample_text, indexed['text']) self.assertEqual(self.sample_text, indexed['text'])
self.assertEqual(post.get_absolute_url(), indexed['url']) self.assertEqual(post.get_absolute_url(), indexed['url'])
#self.assertEqual(post.date_published.strftime("%Y-%m-%d %H:%M:%S"), indexed['pub_date']) self.assertEqual(post.date_published, indexed['pub_date'])
def test_blog_post_is_indexed_using_update_object(self):
"""This tests the indexing path way used by the RealTimeSignalProcessor"""
post = self._get_post(self._post_data[0]['en'])
post = self._get_post(self._post_data[0]['it'], post, 'it')
post.tags.add('a tag')
add_plugin(post.content, 'TextPlugin', language='en', body='test body')
index = self.get_post_index()
index.update_object(post, using=DEFAULT_ALIAS)
indexed = index.prepared_data
self.assertEqual(post.get_title(), indexed['title'])
self.assertEqual(post.get_description(), indexed['description'])
self.assertEqual(self.sample_text, indexed['text'])
self.assertEqual(post.get_absolute_url(), indexed['url'])
#self.assertEqual(post.date_published.strftime("%Y-%m-%d %H:%M:%S"), indexed['pub_date'])
def test_searchqueryset(self): def test_searchqueryset(self):
posts = self.get_posts() posts = self.get_posts()

View file

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
from cms.toolbar.items import ModalItem from cms.toolbar.items import ButtonList, ModalItem
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.encoding import force_text
from djangocms_blog.models import BLOG_CURRENT_POST_IDENTIFIER from djangocms_blog.models import BLOG_CURRENT_POST_IDENTIFIER
@ -20,9 +21,39 @@ class ToolbarTest(BaseTest):
pages = self.get_pages() pages = self.get_pages()
request = self.get_page_request(pages[0], self.user, r'/en/blog/', edit=True) request = self.get_page_request(pages[0], self.user, r'/en/blog/', edit=True)
setattr(request, BLOG_CURRENT_POST_IDENTIFIER, posts[0]) setattr(request, BLOG_CURRENT_POST_IDENTIFIER, posts[0])
posts[0].publish = False
posts[0].save()
toolbar = CMSToolbar(request) toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
toolbar.get_left_items() toolbar.get_left_items()
blog_menu = toolbar.menus['djangocms_blog'] blog_menu = toolbar.menus['djangocms_blog']
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_changelist'))), 1) self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_changelist'))), 1)
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_add'))), 1) self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_add'))), 1)
self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_change', args=(posts[0].pk,)))), 1) self.assertEqual(len(blog_menu.find_items(ModalItem, url=reverse('admin:djangocms_blog_post_change', args=(posts[0].pk,)))), 1)
# Publish button only appears if current post is unpublished
right = toolbar.get_right_items()
buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], [])
self.assertTrue([button for button in buttons if force_text(button.name) == 'Publish Blog now'])
# Publish button does not appears if current post is published
posts[0].publish = True
posts[0].save()
toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
right = toolbar.get_right_items()
buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], [])
self.assertFalse([button for button in buttons if force_text(button.name) == 'Publish Blog now'])
# Publish button does not appears if other posts but the current one are unpublished
posts[1].publish = True
posts[1].save()
toolbar = CMSToolbar(request)
toolbar.populate()
toolbar.post_template_populate()
right = toolbar.get_right_items()
buttons = sum([item.buttons for item in right if isinstance(item, ButtonList)], [])
self.assertFalse([button for button in buttons if force_text(button.name) == 'Publish Blog now'])

View file

@ -47,25 +47,43 @@ class WizardTest(BaseTest):
@skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'), @skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'),
reason='Wizards not available for django CMS < 3.2') reason='Wizards not available for django CMS < 3.2')
def test_wizard_init(self): def test_wizard_init(self):
from cms.utils.permissions import current_user
from cms.wizards.wizard_pool import wizard_pool from cms.wizards.wizard_pool import wizard_pool
from djangocms_blog.models import Post from djangocms_blog.models import Post
self.get_pages() self.get_pages()
wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post] with current_user(self.user_staff):
for wiz in wizs: wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk for index, wiz in enumerate(wizs):
form = wiz.form() app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
self.assertTrue(form.initial.get('app_config', False), app_config) form = wiz.form()
self.assertTrue(form.fields['app_config'].widget.attrs['disabled']) self.assertTrue(form.initial.get('app_config', False), app_config)
self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])
form = wiz.form(data={ form = wiz.form(data={
'1-title': 'title', '1-title': 'title{0}'.format(index),
'1-abstract': 'abstract', '1-abstract': 'abstract{0}'.format(index),
'1-categories': [self.category_1.pk], '1-categories': [self.category_1.pk],
}, prefix=1) }, prefix=1)
self.assertEqual(form.default_appconfig, app_config) self.assertEqual(form.default_appconfig, app_config)
self.assertTrue(form.is_valid()) self.assertTrue(form.is_valid())
self.assertTrue(form.cleaned_data['app_config'], app_config) self.assertEqual(form.cleaned_data['app_config'].pk, app_config)
instance = form.save()
self.assertEqual(instance.author, self.user_staff)
with self.settings(BLOG_AUTHOR_DEFAULT='normal'):
for index, wiz in enumerate(wizs):
app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
form = wiz.form(data={
'1-title': 'title-2{0}'.format(index),
'1-abstract': 'abstract-2{0}'.format(index),
'1-categories': [self.category_1.pk],
}, prefix=1)
self.assertEqual(form.default_appconfig, app_config)
self.assertTrue(form.is_valid())
self.assertEqual(form.cleaned_data['app_config'].pk, app_config)
instance = form.save()
self.assertEqual(instance.author, self.user_normal)
def test_wizard_import(self): def test_wizard_import(self):
# The following import should not fail in any django CMS version # The following import should not fail in any django CMS version

22
tox.ini
View file

@ -1,27 +1,29 @@
[tox] [tox]
envlist = pep8,isort,py{35,34,33,27}-django{19,18}-cms{32,31},py{34,33,27}-django{17,16}-cms{32,31,30},py{26}-django16-cms{31,30} envlist = pep8,isort,py{35,34,27}-django{19}-cms{32},py{35,34,33,27}-django{18}-cms{32,31},py{34,33,27}-django{17,16}-cms{32,31,30},py{26}-django16-cms{31,30}
[testenv] [testenv]
commands = {env:COMMAND:python} cms_helper.py test djangocms_blog --no-migrate commands = {env:COMMAND:python} cms_helper.py test djangocms_blog --no-migrate
deps = deps =
-r{toxinidir}/requirements-test.txt
django16: Django>=1.6,<1.7 django16: Django>=1.6,<1.7
django16: django-taggit<0.18
django16: django-mptt<0.8
django17: Django>=1.7,<1.8 django17: Django>=1.7,<1.8
django18: Django>=1.7,<1.9 django17: django-mptt<0.8
django18: https://github.com/stefanfoulis/django-filer/archive/develop.zip django18: Django>=1.8,<1.9
django18: https://github.com/stefanfoulis/cmsplugin-filer/archive/develop.zip django18: django-mptt>=0.8
django19: Django==1.9a1 django19: Django>=1.9,<1.10
django19: https://github.com/stefanfoulis/django-filer/archive/develop.zip django19: django-mptt>=0.8
django19: https://github.com/stefanfoulis/cmsplugin-filer/archive/develop.zip django19: https://github.com/divio/django-filer/archive/develop.zip
django19: https://github.com/divio/cmsplugin-filer/archive/develop.zip
cms30: https://github.com/divio/django-cms/archive/support/3.0.x.zip cms30: https://github.com/divio/django-cms/archive/support/3.0.x.zip
cms31: https://github.com/divio/django-cms/archive/support/3.1.x.zip cms31: https://github.com/divio/django-cms/archive/support/3.1.x.zip
cms32: https://github.com/divio/django-cms/archive/develop.zip cms32: https://github.com/divio/django-cms/archive/release/3.2.x.zip
https://github.com/nephila/django-meta-mixin/archive/master.zip https://github.com/nephila/django-meta-mixin/archive/master.zip
https://github.com/nephila/djangocms-helper/archive/develop.zip https://github.com/nephila/djangocms-helper/archive/develop.zip
py26: unittest2 py26: unittest2
django-parler<1.5
https://github.com/aldryn/aldryn-apphooks-config/archive/master.zip https://github.com/aldryn/aldryn-apphooks-config/archive/master.zip
https://github.com/nephila/djangocms-apphook-setup/archive/master.zip https://github.com/nephila/djangocms-apphook-setup/archive/master.zip
-r{toxinidir}/requirements-test.txt
[testenv:isort] [testenv:isort]
deps = isort deps = isort