Skip to content

Commit

Permalink
Merge git://github.com/divio/django-cms into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
BertrandBordage committed Nov 12, 2012
2 parents c9c43e1 + 0c132de commit 3affe5f
Show file tree
Hide file tree
Showing 39 changed files with 690 additions and 236 deletions.
5 changes: 5 additions & 0 deletions AUTHORS
Expand Up @@ -33,10 +33,12 @@ Contributors (in alphabetical order):
* Andrew Cassidy
* Andrew Schoen
* angular_circle
* Anton Parkhomenko
* Antoni Aloy López
* Arne Gellhaus
* Artem Skoretskiy
* Arthur Debert
* Aymeric Augustin
* Batiste Bieler
* behrooz
* Behrooz Nobakht
Expand Down Expand Up @@ -68,6 +70,7 @@ Contributors (in alphabetical order):
* eged
* Egor V. Nazarkin
* Ekrem Seren
* Erlend Dalen
* Eric Eldredge
* Erik Allik
* Eugen MechanisM
Expand Down Expand Up @@ -170,6 +173,7 @@ Contributors (in alphabetical order):
* Rebecca Breu
* Remco Wendt
* Restless Being
* Richard Barran
* Robert Buchholz
* Robert Clark
* Robert Pogorzelski
Expand Down Expand Up @@ -204,6 +208,7 @@ Contributors (in alphabetical order):
* tiret
* Ulrich Petri
* Vasil Vangelovski
* Viliam Segeda
* wangJunjie
* Wayne Moore
* wid
Expand Down
12 changes: 8 additions & 4 deletions CHANGELOG.txt
Expand Up @@ -110,6 +110,14 @@

- fixed an incompatibility with Python 2.5

==== 2.3.4 (2012-11-09) ====

- Fixed WymEditor
- Fixed Norwegian translations
- Fixed a bug that could lead to slug clashes
- Fixed page change form (jQuery and permissions)
- Fixed placeholder field permission checks

==== 2.4.0 ===-

- CMS_LANGUAGE setting has changed
Expand All @@ -122,7 +130,3 @@
- CMS_FLAT_URLS has been removed






2 changes: 1 addition & 1 deletion cms/__init__.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
__version__ = '2.3.3.post0'
__version__ = '2.3.4.post0'

# patch settings
try:
Expand Down
69 changes: 35 additions & 34 deletions cms/admin/pageadmin.py
Expand Up @@ -2,20 +2,20 @@
from cms.admin.change_list import CMSChangeList
from cms.admin.dialog.views import get_copy_dialog
from cms.admin.forms import PageForm, PageAddForm
from cms.admin.permissionadmin import (PAGE_ADMIN_INLINES,
from cms.admin.permissionadmin import (PAGE_ADMIN_INLINES,
PagePermissionInlineAdmin, ViewRestrictionInlineAdmin)
from cms.admin.views import revert_plugins
from cms.apphook_pool import apphook_pool
from cms.exceptions import NoPermissionsException
from cms.forms.widgets import PluginEditor
from cms.models import (Page, Title, CMSPlugin, PagePermission,
from cms.models import (Page, Title, CMSPlugin, PagePermission,
PageModeratorState, EmptyTitle, GlobalPagePermission)
from cms.models.managers import PagePermissionsPermissionManager
from cms.models.placeholdermodel import Placeholder
from cms.plugin_pool import plugin_pool
from cms.templatetags.cms_admin import admin_static_url
from cms.utils import (copy_plugins, helpers, moderator, permissions, plugins,
get_template_from_request, get_language_from_request,
from cms.utils import (copy_plugins, helpers, moderator, permissions, plugins,
get_template_from_request, get_language_from_request,
placeholder as placeholder_utils, admin as admin_utils, cms_static_url)
from cms.utils.i18n import get_language_dict, get_language_list, get_language_tuple, get_language_object
from cms.utils.page_resolver import is_valid_url
Expand All @@ -34,11 +34,11 @@
from django.core.urlresolvers import reverse
from django.db import router, transaction, models
from django.forms import CharField
from django.http import (HttpResponseRedirect, HttpResponse, Http404,
from django.http import (HttpResponseRedirect, HttpResponse, Http404,
HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotAllowed, HttpResponseServerError)
from django.shortcuts import render_to_response, get_object_or_404
from django.template.context import RequestContext
from django.template.defaultfilters import (title, escape, force_escape,
from django.template.defaultfilters import (title, escape, force_escape,
escapejs)
from django.utils.encoding import force_unicode
from django.utils.translation import ugettext, ugettext_lazy as _
Expand All @@ -64,7 +64,7 @@
class ModelAdmin(ModelAdmin):
def get_inline_instances(self, request):
return self.inline_instances

def get_prepopulated_fields(self, request):
return self.prepopulated_fields

Expand All @@ -76,7 +76,7 @@ def contribute_fieldsets(cls):
general_fields = ['title']
general_fields += ['slug', ('published', 'in_navigation')]
additional_hidden_fields = []
advanced_fields = ['reverse_id', 'overwrite_url', 'redirect', 'login_required', 'limit_visibility_in_menu']
advanced_fields = ['reverse_id', 'overwrite_url', 'redirect', 'login_required', 'limit_visibility_in_menu']
template_fields = ['template']
hidden_fields = ['site', 'parent']
seo_fields = []
Expand All @@ -87,7 +87,7 @@ def contribute_fieldsets(cls):
elif settings.CMS_SHOW_START_DATE:
general_fields.append('publication_date')
elif settings.CMS_SHOW_END_DATE:
general_fields.append( 'publication_end_date')
general_fields.append('publication_end_date')
if settings.CMS_MODERATOR:
additional_hidden_fields += ['moderator_state', 'moderator_message']
if settings.CMS_SEO_FIELDS:
Expand Down Expand Up @@ -249,7 +249,7 @@ def save_model(self, request, obj, form, change):
obj.pk = pk
obj.save(no_signals=True)
obj.save()

else:
if 'history' in request.path:
old_obj = Page.objects.get(pk=obj.pk)
Expand All @@ -262,14 +262,14 @@ def save_model(self, request, obj, form, change):
moderator.will_require_moderation(target, position)

obj.save(force_with_moderation=force_with_moderation)

if 'recover' in request.path or 'history' in request.path:
obj.pagemoderatorstate_set.all().delete()
if settings.CMS_MODERATOR:
from cms.utils.moderator import page_changed
page_changed(obj, force_moderation_action=PageModeratorState.ACTION_CHANGED)
revert_plugins(request, obj.version.pk, obj)

language = form.cleaned_data['language']

if target is not None and position is not None:
Expand All @@ -291,7 +291,7 @@ def save_model(self, request, obj, form, change):
if settings.CMS_MODERATOR and 'moderator_message' in form.cleaned_data and \
form.cleaned_data['moderator_message']:
moderator.update_moderation_message(obj, form.cleaned_data['moderator_message'])

if obj and "reversion" in settings.INSTALLED_APPS:
helpers.make_revision_with_plugins(obj)

Expand Down Expand Up @@ -337,7 +337,7 @@ def get_fieldsets(self, request, obj=None):
given_fieldsets = deepcopy(self.add_fieldsets)

return given_fieldsets

def get_fieldset_placeholders(self, template):
return plugins.get_placeholders(template)

Expand Down Expand Up @@ -460,7 +460,7 @@ def get_form(self, request, obj=None, **kwargs):
})
form.base_fields[placeholder.slot] = CharField(widget=widget, required=False)
else:
for name in ['slug','title']:
for name in ['slug', 'title']:
form.base_fields[name].initial = u''
form.base_fields['parent'].initial = request.GET.get('target', None)
form.base_fields['site'].initial = request.session.get('cms_admin_site', None)
Expand Down Expand Up @@ -562,7 +562,7 @@ def render_change_form(self, request, context, add=False, change=False, form_url
'filled_languages': [lang for lang in filled_languages if lang in allowed_languages],
})
return super(PageAdmin, self).render_change_form(request, context, add, change, form_url, obj)

def _get_site_languages(self, obj):
site_id = None
if obj:
Expand Down Expand Up @@ -663,12 +663,12 @@ def changelist_view(self, request, extra_context=None):
return render_to_response('admin/invalid_setup.html', {'title': _('Database error')})
return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1')
cl.set_items(request)

site_id = request.GET.get('site__exact', None)
if site_id is None:
site_id = Site.objects.get_current().pk
site_id = int(site_id)

# languages
languages = get_language_list(site_id)

Expand Down Expand Up @@ -743,7 +743,7 @@ def render_revision_form(self, request, obj, version, context, revert=False, rec
obj.parent = None
obj.parent_id = None
version.field_dict['parent'] = None

obj.version = version

return super(PageAdmin, self).render_revision_form(request, obj, version, context, revert, recover)
Expand Down Expand Up @@ -771,7 +771,7 @@ def move_page(self, request, page_id, extra_context=None):

# move page
page.move_page(target, position)

if "reversion" in settings.INSTALLED_APPS:
helpers.make_revision_with_plugins(page)

Expand Down Expand Up @@ -837,7 +837,7 @@ def copy_page(self, request, page_id, extra_context=None):
}
page.copy_page(target, site, position, **kwargs)
return jsonify_request(HttpResponse("ok"))
except ValidationError,e:
except ValidationError, e:
return jsonify_request(HttpResponseBadRequest(e.messages))
context.update(extra_context or {})
return HttpResponseRedirect('../../')
Expand Down Expand Up @@ -877,7 +877,7 @@ def approve_page(self, request, page_id):
path = '../../'
if 'admin' not in referer:
path = '%s?edit-off' % referer.split('?')[0]
return HttpResponseRedirect( path )
return HttpResponseRedirect(path)


@transaction.commit_on_success
Expand All @@ -892,7 +892,7 @@ def publish_page(self, request, page_id):
# TODO: use admin base here!
if 'admin' not in referer:
path = '%s?edit-off' % referer.split('?')[0]
return HttpResponseRedirect( path )
return HttpResponseRedirect(path)


def delete_view(self, request, object_id, *args, **kwargs):
Expand Down Expand Up @@ -950,14 +950,14 @@ def delete_translation(self, request, object_id, extra_context=None):

titleobj = get_object_or_404(Title, page__id=object_id, language=language)
saved_plugins = CMSPlugin.objects.filter(placeholder__page__id=object_id, language=language)

using = router.db_for_read(self.model)
kwargs = {
'admin_site': self.admin_site,
'user': request.user,
'using': using
}
deleted_objects, perms_needed = get_deleted_objects(
deleted_objects, perms_needed = get_deleted_objects(
[titleobj],
titleopts,
**kwargs
Expand All @@ -969,7 +969,7 @@ def delete_translation(self, request, object_id, extra_context=None):
)[:2]

deleted_objects.append(to_delete_plugins)
perms_needed = set( list(perms_needed) + list(perms_needed_plugins) )
perms_needed = set(list(perms_needed) + list(perms_needed_plugins))

if request.method == 'POST':
if perms_needed:
Expand All @@ -988,10 +988,10 @@ def delete_translation(self, request, object_id, extra_context=None):
public = obj.publisher_public
if public:
public.save()

if "reversion" in settings.INSTALLED_APPS:
helpers.make_revision_with_plugins(obj)

if not self.has_change_permission(request, None):
return HttpResponseRedirect("../../../../")
return HttpResponseRedirect("../../")
Expand Down Expand Up @@ -1055,11 +1055,11 @@ def change_status(self, request, page_id):
page = get_object_or_404(Page, pk=page_id)
if page.has_publish_permission(request):
try:
if page.published or is_valid_url(page.get_absolute_url(),page,False):
if page.published or is_valid_url(page.get_absolute_url(), page, False):
page.published = not page.published
page.save()
return jsonify_request(HttpResponse(admin_utils.render_admin_menu_item(request, page).content))
except ValidationError,e:
except ValidationError, e:
return jsonify_request(HttpResponseBadRequest(e.messages))
else:
return HttpResponseForbidden(unicode(_("You do not have permission to publish this page")))
Expand Down Expand Up @@ -1089,7 +1089,7 @@ def descendants(self, request, page_id):
page = get_object_or_404(Page, pk=page_id)
return admin_utils.render_admin_menu_item(request, page,
template="admin/cms/page/lazy_menu.html")

@create_on_success
def add_plugin(self, request):
'''
Expand Down Expand Up @@ -1154,6 +1154,7 @@ def add_plugin(self, request):

if parent:
plugin.parent = parent
plugin.position = CMSPlugin.objects.filter(parent=parent).count()
plugin.save()

if 'reversion' in settings.INSTALLED_APPS and page:
Expand Down Expand Up @@ -1293,10 +1294,10 @@ def edit_plugin(self, request, plugin_id):
# just pass id to plugin_admin
response = plugin_admin.change_view(request, str(plugin_id))
if request.method == "POST" and plugin_admin.object_successfully_changed:

# if reversion is installed, save version of the page plugins
if 'reversion' in settings.INSTALLED_APPS and page:
helpers.make_revision_with_plugins(page)
helpers.make_revision_with_plugins(page)
reversion.revision.user = request.user
plugin_name = unicode(plugin_pool.get_plugin(cms_plugin.plugin_type).name)
reversion.revision.comment = ugettext(u"%(plugin_name)s plugin edited at position %(position)s in %(placeholder)s") % {
Expand Down Expand Up @@ -1450,7 +1451,7 @@ def change_moderation(self, request, page_id):
page_moderator.save()
return admin_utils.render_admin_menu_item(request, page)
raise Http404

def lookup_allowed(self, key, *args, **kwargs):
if key == 'site__exact':
return True
Expand Down
2 changes: 1 addition & 1 deletion cms/conf/patch.py
Expand Up @@ -122,7 +122,7 @@ def post_patch_check():
tmp_language['public'] = True
if tmp_language['public']:
fallbacks.append(tmp_language['code'])
if fallbacks:
if fallbacks and language['code'] in fallbacks:
fallbacks.remove(language['code'])
if settings.CMS_LANGUAGES.has_key('default'):
language['fallbacks'] = settings.CMS_LANGUAGES['default'].get('fallbacks', fallbacks)
Expand Down

0 comments on commit 3affe5f

Please sign in to comment.