Skip to content

Commit

Permalink
Merge pull request #3792 from timgraham/user-cleanup
Browse files Browse the repository at this point in the history
Cleaned up some compatibility shims for old Django versions.
  • Loading branch information
yakky committed Feb 7, 2015
2 parents e127953 + f653ecf commit a19923b
Show file tree
Hide file tree
Showing 104 changed files with 582 additions and 1,034 deletions.
24 changes: 10 additions & 14 deletions cms/admin/change_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django.contrib.admin.views.main import ChangeList, ALL_VAR, IS_POPUP_VAR, \
ORDER_TYPE_VAR, ORDER_VAR, SEARCH_VAR
from django.contrib.sites.models import Site
import django


COPY_VAR = "copy"

Expand Down Expand Up @@ -58,25 +58,21 @@ def __init__(self, request, *args, **kwargs):
request.session['cms_admin_site'] = self._current_site.pk
self.set_sites(request)

def get_queryset(self, request=None):
def get_queryset(self, request):
if COPY_VAR in self.params:
del self.params[COPY_VAR]
if 'language' in self.params:
del self.params['language']
if 'page_id' in self.params:
del self.params['page_id']
if django.VERSION[1] > 3:
qs = super(CMSChangeList, self).get_queryset(request).drafts()
else:
qs = super(CMSChangeList, self).get_queryset().drafts()
if request:
site = self.current_site()
permissions = Page.permissions.get_change_id_list(request.user, site)
if permissions != Page.permissions.GRANT_ALL:
qs = qs.filter(pk__in=permissions)
self.root_queryset = self.root_queryset.filter(pk__in=permissions)
self.real_queryset = True
qs = qs.filter(site=self._current_site)
qs = super(CMSChangeList, self).get_queryset(request).drafts()
site = self.current_site()
permissions = Page.permissions.get_change_id_list(request.user, site)
if permissions != Page.permissions.GRANT_ALL:
qs = qs.filter(pk__in=permissions)
self.root_queryset = self.root_queryset.filter(pk__in=permissions)
self.real_queryset = True
qs = qs.filter(site=self._current_site)
return qs

def is_filtered(self):
Expand Down
5 changes: 3 additions & 2 deletions cms/admin/forms.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.models import Site
Expand All @@ -8,14 +9,14 @@
from django.forms.util import ErrorList
from django.forms.widgets import HiddenInput
from django.template.defaultfilters import slugify
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _, get_language

from cms.apphook_pool import apphook_pool
from cms.constants import PAGE_TYPES_ID
from cms.forms.widgets import UserSelectAdminWidget, AppHookSelect
from cms.models import Page, PagePermission, PageUser, ACCESS_PAGE, PageUserGroup, Title, EmptyTitle, \
GlobalPagePermission
from cms.utils.compat.dj import get_user_model, force_unicode
from cms.utils.compat.forms import UserCreationForm
from cms.utils.conf import get_cms_setting
from cms.utils.i18n import get_language_tuple
Expand Down Expand Up @@ -146,7 +147,7 @@ def clean(self):
if hasattr(exc, 'messages'):
errors = exc.messages
else:
errors = [force_unicode(exc.message)]
errors = [force_text(exc.message)]
self._errors['slug'] = ErrorList(errors)
return cleaned_data

Expand Down
79 changes: 38 additions & 41 deletions cms/admin/pageadmin.py

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion cms/admin/permissionadmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
from copy import deepcopy
from django.contrib import admin
from django.contrib.admin import site
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import ugettext as _

from cms.admin.forms import GlobalPagePermissionAdminForm, PagePermissionInlineAdminForm, ViewRestrictionInlineAdminForm
from cms.exceptions import NoPermissionsException
from cms.models import Page, PagePermission, GlobalPagePermission, PageUser
from cms.utils.compat.dj import get_user_model
from cms.utils.conf import get_cms_setting
from cms.utils.helpers import classproperty
from cms.utils.permissions import get_user_permission_level
Expand Down
109 changes: 49 additions & 60 deletions cms/admin/placeholderadmin.py

Large diffs are not rendered by default.

23 changes: 10 additions & 13 deletions cms/admin/settingsadmin.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
# -*- coding: utf-8 -*-
from functools import update_wrapper
from cms.utils.urlutils import admin_reverse
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth.admin import csrf_protect_m
from django.contrib.admin import ModelAdmin
import json

from django.conf.urls import url
from django.contrib import admin
from django.contrib.admin import ModelAdmin
from django.contrib.auth.admin import csrf_protect_m
from django.db import transaction
from django.http import HttpResponseRedirect, HttpResponse

from cms.models import UserSettings
import json
from cms.utils.transaction import wrap_transaction
from cms.utils.urlutils import admin_reverse


class SettingsAdmin(ModelAdmin):
def get_urls(self):
from django.conf.urls import patterns, url

def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
Expand All @@ -24,8 +23,7 @@ def wrapper(*args, **kwargs):

info = self.model._meta.app_label, self.model._meta.model_name

urlpatterns = patterns(
'',
return [
url(r'^session_store/$',
self.session_store,
name='%s_%s_session_store' % info),
Expand All @@ -35,11 +33,10 @@ def wrapper(*args, **kwargs):
url(r'^(.+)/$',
wrap(self.change_view),
name='%s_%s_change' % info),
)
return urlpatterns
]

@csrf_protect_m
@wrap_transaction
@transaction.atomic
def change_view(self, request, id=None):
model = self.model
try:
Expand Down
2 changes: 1 addition & 1 deletion cms/admin/useradmin.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib.auth import get_user_model

from cms.admin.forms import PageUserForm, PageUserGroupForm
from cms.admin.permissionadmin import GenericCmsPermissionAdmin
from cms.exceptions import NoPermissionsException
from cms.models import PageUser, PageUserGroup
from cms.utils.compat.dj import get_user_model
from cms.utils.compat.forms import UserAdmin
from cms.utils.conf import get_cms_setting
from cms.utils.permissions import get_subordinate_users
Expand Down
3 changes: 2 additions & 1 deletion cms/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
"""
import datetime

from django.contrib.auth import get_user_model
from django.contrib.sites.models import Site
from django.core.exceptions import FieldError
from django.core.exceptions import PermissionDenied
from django.core.exceptions import ValidationError
from django.template.defaultfilters import slugify
from django.template.loader import get_template
from django.utils import six

from cms.admin.forms import save_permissions
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
Expand All @@ -28,7 +30,6 @@
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from cms.utils import copy_plugins
from cms.utils.compat.dj import get_user_model
from cms.utils.conf import get_cms_setting
from cms.utils.i18n import get_language_list
from cms.utils.permissions import _thread_locals
Expand Down
4 changes: 1 addition & 3 deletions cms/appresolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from __future__ import with_statement

from django.conf import settings
from django.conf.urls import patterns
from django.contrib.sites.models import Site
from django.core.exceptions import ImproperlyConfigured
from django.core.urlresolvers import (RegexURLResolver, Resolver404, reverse,
Expand Down Expand Up @@ -229,8 +228,7 @@ def get_app_patterns():
if app.permissions:
_set_permissions(current_patterns, app.exclude_permissions)

extra_patterns = patterns('', *current_patterns)
resolver.url_patterns_dict[lang] = extra_patterns
resolver.url_patterns_dict[lang] = current_patterns
app_patterns.append(resolver)
APP_RESOLVERS.append(resolver)
return app_patterns
3 changes: 2 additions & 1 deletion cms/cache/permissions.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from django.contrib.auth import get_user_model

from cms.utils import get_cms_setting
from cms.utils.compat.dj import get_user_model


PERMISSION_KEYS = [
Expand Down
6 changes: 2 additions & 4 deletions cms/cms_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from cms.plugin_rendering import render_placeholder
from cms.utils.plugins import downcast_plugins, build_plugin_tree
from cms.utils.urlutils import admin_reverse
from django.conf.urls import patterns, url
from django.conf.urls import url
from django.http import HttpResponseForbidden, HttpResponseBadRequest, HttpResponse
from django.middleware.csrf import get_token
from django.utils.safestring import mark_safe
Expand Down Expand Up @@ -67,11 +67,9 @@ def get_extra_placeholder_menu_items(self, request, placeholder):
]

def get_plugin_urls(self):
urlpatterns = [
return [
url(r'^create_alias/$', self.create_alias, name='cms_create_alias'),
]
urlpatterns = patterns('', *urlpatterns)
return urlpatterns

def create_alias(self, request):
if not request.user.is_staff:
Expand Down
8 changes: 2 additions & 6 deletions cms/cms_toolbar.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
# -*- coding: utf-8 -*-

from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse, NoReverseMatch, resolve, Resolver404
from django.utils.translation import ugettext_lazy as _
from django.contrib import admin
from django.contrib.auth import get_permission_codename
from django.contrib.auth.models import User, AnonymousUser
from django.contrib.auth.models import AnonymousUser
from django.contrib.sites.models import Site

try:
from django.contrib.auth import get_user_model
except ImportError:
get_user_model = lambda: User

from cms.api import get_page_draft
from cms.constants import TEMPLATE_INHERITANCE_MAGIC, PUBLISHER_STATE_PENDING
from cms.models import Title, Page
Expand Down
5 changes: 2 additions & 3 deletions cms/forms/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from cms.forms.utils import get_site_choices, get_page_choices
from cms.models import Page, PageUser
from cms.templatetags.cms_admin import CMS_ADMIN_ICON_BASE
from cms.utils.compat.dj import force_unicode


class PageSelectWidget(MultiWidget):
Expand Down Expand Up @@ -58,7 +57,7 @@ def _has_changed(self, initial, data):
initial_value = u''
else:
initial_value = initial
if force_unicode(initial_value) != force_unicode(data_value):
if force_text(initial_value) != force_text(data_value):
return True
return False

Expand Down Expand Up @@ -187,7 +186,7 @@ def render(self, name=None, value=None, attrs=None):
'element_id': id_,
'placeholder_text': final_attrs.get('placeholder_text', ''),
'language_code': self.language,
'ajax_url': force_unicode(self.ajax_url)
'ajax_url': force_text(self.ajax_url)
}]

output.append(super(PageSmartLinkWidget, self).render(name, value, attrs))
Expand Down
8 changes: 5 additions & 3 deletions cms/management/commands/publisher_publish.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from optparse import make_option

from django.contrib.auth import get_user_model
from django.core.management.base import NoArgsCommand, CommandError
from django.utils.encoding import force_text
from django.utils.translation import activate
from cms.utils.compat.dj import force_unicode


class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + (
Expand Down Expand Up @@ -44,7 +47,6 @@ def handle_noargs(self, **options):

def publish_pages(self, include_unpublished, language, site):
from cms.models import Page
from cms.utils.compat.dj import get_user_model
from cms.utils.permissions import set_current_user

# thread locals middleware needs to know, who are we - login as a first
Expand Down Expand Up @@ -84,7 +86,7 @@ def publish_pages(self, include_unpublished, language, site):
if add:
pages_published += 1
m = "*"
self.stdout.write(u"%d.\t%s %s [%d]\n" % (i + 1, m, force_unicode(page), page.id))
self.stdout.write(u"%d.\t%s %s [%d]\n" % (i + 1, m, force_text(page), page.id))

self.stdout.write(u"\n")
self.stdout.write(u"=" * 40)
Expand Down
5 changes: 2 additions & 3 deletions cms/menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
from cms.models.permissionmodels import ACCESS_PAGE
from cms.models.permissionmodels import PagePermission, GlobalPagePermission
from cms.utils import get_language_from_request
from cms.utils.compat.dj import user_related_name
from cms.utils.conf import get_cms_setting
from cms.utils.i18n import get_fallback_languages, hide_untranslated
from cms.utils.page_resolver import get_page_queryset
Expand All @@ -37,7 +36,7 @@ def get_visible_pages(request, pages, site=None):
visible_page_ids = []
restricted_pages = defaultdict(list)
page_permissions = PagePermission.objects.filter(can_view=True).select_related(
'page').prefetch_related('group__' + user_related_name)
'page').prefetch_related('group__user_set')

for perm in page_permissions:
# collect the pages that are affected by permissions
Expand Down Expand Up @@ -110,7 +109,7 @@ def has_permission_membership(page):
return True
if not perm.group_id:
continue
user_set = getattr(perm.group, user_related_name)
user_set = getattr(perm.group, 'user_set')
# Optimization equivalent to
# if user_pk in user_set.values_list('pk', flat=True)
if any(user_pk == user.pk for user in user_set.all()):
Expand Down
6 changes: 3 additions & 3 deletions cms/models/aliaspluginmodel.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
from cms.models import CMSPlugin, Placeholder
from cms.utils.compat.dj import python_2_unicode_compatible
from django.utils.encoding import force_text
from django.db import models
from django.utils.encoding import force_text, python_2_unicode_compatible

from cms.models import CMSPlugin, Placeholder


@python_2_unicode_compatible
Expand Down
6 changes: 1 addition & 5 deletions cms/models/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from cms.models.query import PageQuerySet
from cms.publisher import PublisherManager
from cms.utils import get_cms_setting
from cms.utils.compat.dj import user_related_query_name
from cms.utils.i18n import get_fallback_languages


Expand Down Expand Up @@ -181,10 +180,7 @@ def with_user(self, user):
"""Get all objects for given user, also takes look if user is in some
group.
"""
query = dict()
query['group__' + user_related_query_name] = user

return self.filter(Q(user=user) | Q(**query))
return self.filter(Q(user=user) | Q(group__user=user))

def with_can_change_permissions(self, user):
"""Set of objects on which user haves can_change_permissions. !But only
Expand Down

0 comments on commit a19923b

Please sign in to comment.