Skip to content

Commit

Permalink
Merge branch 'develop' of git://github.com/divio/django-cms into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
kezabelle committed Jun 21, 2011
2 parents 6ec00a9 + 04d2ad4 commit f03df8b
Show file tree
Hide file tree
Showing 83 changed files with 1,277 additions and 1,108 deletions.
1 change: 0 additions & 1 deletion AUTHORS
Expand Up @@ -165,7 +165,6 @@ Contributors (in alphabetical order):
* wid
* wildermesser
* Yann Malet
* Yann Malet
* yedpodtrzitko
* yohanboniface
* Yosuke Ikeda
Expand Down
7 changes: 1 addition & 6 deletions cms/__init__.py
@@ -1,10 +1,5 @@
# -*- coding: utf-8 -*-
VERSION = (2, 1, 3, 'final')
if VERSION[-1] != "final": # pragma: no cover
__version__ = '.'.join(map(str, VERSION))
else: # pragma: no cover
__version__ = '.'.join(map(str, VERSION[:-1]))

__version__ = '2.2.dev0'

# patch settings
try:
Expand Down
25 changes: 14 additions & 11 deletions cms/admin/forms.py
@@ -1,4 +1,14 @@
# -*- coding: utf-8 -*-
from cms.apphook_pool import apphook_pool
from cms.forms.widgets import UserSelectAdminWidget
from cms.models import (Page, PagePermission, PageUser, ACCESS_PAGE,
PageUserGroup)
from cms.utils.mail import mail_page_user_change
from cms.utils.page import is_valid_page_slug
from cms.utils.page_resolver import get_page_from_path
from cms.utils.permissions import (get_current_user, get_subordinate_users,
get_subordinate_groups)
from cms.utils.urlutils import any_path_re
from django import forms
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm
Expand All @@ -11,18 +21,9 @@
from django.forms.widgets import HiddenInput
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _, get_language
from menus.menu_pool import menu_pool

from cms.apphook_pool import apphook_pool
from cms.forms.widgets import UserSelectAdminWidget
from cms.models import (Page, PagePermission, PageUser,
ACCESS_PAGE, PageUserGroup)
from cms.utils.mail import mail_page_user_change
from cms.utils.page import is_valid_page_slug
from cms.utils.permissions import (get_current_user, get_subordinate_users,
get_subordinate_groups)
from cms.utils.urlutils import any_path_re

from menus.menu_pool import menu_pool


def get_permission_acessor(obj):
Expand Down Expand Up @@ -158,7 +159,7 @@ def __init__(self, *args, **kwargs):
self.fields['navigation_extenders'].widget = forms.Select({}, [('', "---------")] + menu_pool.get_menus_by_attribute("cms_enabled", True))
if 'application_urls' in self.fields:
self.fields['application_urls'].choices = [('', "---------")] + apphook_pool.get_apphooks()

def clean(self):
cleaned_data = super(PageForm, self).clean()
if 'reverse_id' in self.fields:
Expand All @@ -175,6 +176,8 @@ def clean_overwrite_url(self):
if url:
if not any_path_re.match(url):
raise forms.ValidationError(_('Invalid URL, use /my/url format.'))
if get_page_from_path(url.strip('/')):
raise forms.ValidationError(_('Page with redirect url %r already exist') % url)
return url

class PagePermissionInlineAdminForm(forms.ModelForm):
Expand Down
3 changes: 2 additions & 1 deletion cms/admin/pageadmin.py
Expand Up @@ -1033,7 +1033,8 @@ def preview_page(self, request, object_id):
site = Site.objects.get_current()

if not site == page.site:
url = "http://%s%s" % (page.site.domain, url)
url = "http%s://%s%s" % ('s' if request.is_secure() else '',
page.site.domain, url)
return HttpResponseRedirect(url)

def change_status(self, request, page_id):
Expand Down
33 changes: 20 additions & 13 deletions cms/admin/placeholderadmin.py
Expand Up @@ -225,8 +225,26 @@ def move_plugin(self, request):
# only allow POST
if request.method != "POST":
return HttpResponse(str("error"))

if 'plugin_id' in request.POST: # single plugin moving
plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id']))

if 'placeholder_id' in request.POST:
placeholder = Placeholder.objects.get(pk=int(request.POST['placeholder_id']))
else:
placeholder = plugin.placeholder

# check permissions
if not placeholder.has_change_permission(request):
raise Http404

# plugin positions are 0 based, so just using count here should give us 'last_position + 1'
position = CMSPlugin.objects.filter(placeholder=placeholder).count()
plugin.placeholder = placeholder
plugin.position = position
plugin.save()
pos = 0
if 'ids' in request.POST: # multiple plugins
if 'ids' in request.POST: # multiple plugins/ reordering
whitelisted_placeholders = []
for id in request.POST['ids'].split("_"):
plugin = CMSPlugin.objects.get(pk=id)
Expand All @@ -244,18 +262,7 @@ def move_plugin(self, request):
plugin.position = pos
plugin.save()
pos += 1
elif 'plugin_id' in request.POST: # single plugin moving
plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id']))

# check permissions
if not plugin.placeholder.has_change_permission(request):
raise Http404

placeholder = plugin.placeholder
# plugin positions are 0 based, so just using count here should give us 'last_position + 1'
position = CMSPlugin.objects.filter(placeholder=placeholder).count()
plugin.position = position
plugin.save()

else:
HttpResponse(str("error"))
return HttpResponse(str("ok"))
Expand Down
4 changes: 2 additions & 2 deletions cms/api.py
Expand Up @@ -142,11 +142,11 @@ def create_page(title, template, language, menu_title=None, slug=None,

# validate publication date
if publication_date:
assert isinstance(publication_date, datetime.datetime)
assert isinstance(publication_date, datetime.date)

# validate publication end date
if publication_end_date:
assert isinstance(publication_date, datetime.datetime)
assert isinstance(publication_end_date, datetime.date)

# validate softroot
assert settings.CMS_SOFTROOT or not soft_root
Expand Down
44 changes: 28 additions & 16 deletions cms/cms_toolbar.py
Expand Up @@ -57,12 +57,15 @@ class CMSToolbar(Toolbar):
"""
def __init__(self, request):
super(CMSToolbar, self).__init__(request)
self.is_staff = request.user.is_staff
self.can_change = (request.current_page and
request.current_page.has_change_permission(request))
self.init()

def init(self):
self.is_staff = self.request.user.is_staff
self.can_change = (self.request.current_page and
self.request.current_page.has_change_permission(self.request))
self.edit_mode_switcher = Switcher(LEFT, 'editmode', 'edit', 'edit-off',
_('Edit mode'))
self.edit_mode = self.is_staff and self.edit_mode_switcher.get_state(request)
self.edit_mode = self.is_staff and self.edit_mode_switcher.get_state(self.request)


def get_items(self, context, **kwargs):
Expand All @@ -73,6 +76,8 @@ def get_items(self, context, **kwargs):
Anchor(LEFT, 'logo', _('django CMS'), 'https://www.django-cms.org'),
]

self.page_states = []


if self.is_staff:

Expand All @@ -81,7 +86,9 @@ def get_items(self, context, **kwargs):
)

if self.request.current_page:
has_states = self.request.current_page.last_page_states().exists()
states = self.request.current_page.last_page_states()
has_states = states.exists()
self.page_states = states
if has_states:
items.append(
TemplateHTML(LEFT, 'status',
Expand Down Expand Up @@ -132,9 +139,14 @@ def get_items(self, context, **kwargs):

def get_template_menu(self, context, can_change, is_staff):
menu_items = []
url = reverse('admin:cms_page_change_template', args=(self.request.current_page.pk,))
for path, name in settings.CMS_TEMPLATES:
args = urllib.urlencode({'template': path})
css = 'template'
if self.request.current_page.get_template() == path:
css += ' active'
menu_items.append(
ListItem('template', name, '#%s' % path),
ListItem(css, name, '%s?%s' % (url, args), 'POST'),
)
return List(RIGHT, 'templates', _('Template'),
'', items=menu_items)
Expand All @@ -146,26 +158,26 @@ def get_page_menu(self, context, can_change, is_staff):
menu_items = [
ListItem('overview', _('Move/add Pages'),
reverse('admin:cms_page_changelist'),
'cms/images/toolbar/icons/icon_sitemap.png'),
icon='cms/images/toolbar/icons/icon_sitemap.png'),
]
menu_items.append(
ListItem('addchild', _('Add child page'),
_get_add_child_url,
'cms/images/toolbar/icons/icon_child.png')
icon='cms/images/toolbar/icons/icon_child.png')
)

menu_items.append(
ListItem('addsibling', _('Add sibling page'),
_get_add_sibling_url,
'cms/images/toolbar/icons/icon_sibling.png')
icon='cms/images/toolbar/icons/icon_sibling.png')
)

menu_items.append(
ListItem('delete', _('Delete Page'), _get_delete_url,
'cms/images/toolbar/icons/icon_delete.png')
icon='cms/images/toolbar/icons/icon_delete.png')
)
return List(RIGHT, 'page', _('Page'), 'cms/images/toolbar/icons/icon_page.png',
items=menu_items)
return List(RIGHT, 'page', _('Page'),
'cms/images/toolbar/icons/icon_page.png', items=menu_items)

def get_admin_menu(self, context, can_change, is_staff):
"""
Expand All @@ -174,25 +186,24 @@ def get_admin_menu(self, context, can_change, is_staff):
admin_items = [
ListItem('admin', _('Site Administration'),
reverse('admin:index'),
'cms/images/toolbar/icons/icon_admin.png'),
icon='cms/images/toolbar/icons/icon_admin.png'),
]
if can_change:
admin_items.append(
ListItem('settings', _('Page Settings'),
_get_page_admin_url,
'cms/images/toolbar/icons/icon_page.png')
icon='cms/images/toolbar/icons/icon_page.png')
)
if 'reversion' in settings.INSTALLED_APPS:
admin_items.append(
ListItem('history', _('View History'),
_get_page_history_url,
'cms/images/toolbar/icons/icon_history.png')
icon='cms/images/toolbar/icons/icon_history.png')
)
return List(RIGHT, 'admin', _('Admin'), 'cms/images/toolbar/icons/icon_admin.png',
items=admin_items)

def request_hook(self):
self.request.session['cms_edit'] = True
if self.request.method != 'POST':
return self._request_hook_get()
else:
Expand All @@ -212,3 +223,4 @@ def _request_hook_post(self):
user = authenticate(username=username, password=password)
if user:
login(self.request, user)
self.init()
2 changes: 1 addition & 1 deletion cms/forms/widgets.py
Expand Up @@ -207,7 +207,7 @@ def render(self, name, value, attrs=None):
)
context = {
'plugin_list': plugin_list,
'installed_plugins': plugin_pool.get_all_plugins(ph.slot),
'installed_plugins': plugin_pool.get_all_plugins(ph.slot, include_page_only=False),
'copy_languages': copy_languages,
'language': language,
'show_copy': bool(copy_languages) and ph.actions.can_copy,
Expand Down

0 comments on commit f03df8b

Please sign in to comment.