def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) # Users button self.add_users_button(admin_menu) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item(_('Admin Sites'), url=admin_reverse('sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item(site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=admin_reverse('index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item(_('User settings'), url=admin_reverse('cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout self.add_logout_button(admin_menu)
def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) if self.request.user.has_perm( 'user.change_user') and User in admin.site._registry: admin_menu.add_sideframe_item( _('Users'), url=reverse("admin:auth_user_changelist")) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item( _('Admin Sites'), url=reverse('admin:sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item( site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=reverse('admin:index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item( _('User settings'), url=reverse('admin:cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True)
def add_admin_menu(self): if not self._admin_menu: self._admin_menu = self.toolbar.get_or_create_menu( ADMIN_MENU_IDENTIFIER, self.current_site.name) # Users button self.add_users_button(self._admin_menu) # sites menu sites_queryset = get_user_sites_queryset(self.request.user) if len(sites_queryset) > 1: sites_menu = self._admin_menu.get_or_create_menu( 'sites', _('Sites')) sites_menu.add_sideframe_item( _('Admin Sites'), url=admin_reverse('sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item( site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin self._admin_menu.add_sideframe_item(_('Administration'), url=admin_reverse('index')) self._admin_menu.add_break(ADMINISTRATION_BREAK) # cms users settings self._admin_menu.add_sideframe_item( _('User settings'), url=admin_reverse('cms_usersettings_change')) self._admin_menu.add_break(USER_SETTINGS_BREAK) # clipboard if self.toolbar.edit_mode or self.toolbar.build_mode: # True if the clipboard exists and there's plugins in it. clipboard_is_bound = self.get_clipboard_plugins().exists() self._admin_menu.add_link_item( _('Clipboard...'), url='#', extra_classes=['cms-clipboard-trigger'], disabled=not clipboard_is_bound) self._admin_menu.add_link_item( _('Clear clipboard'), url='#', extra_classes=['cms-clipboard-empty'], disabled=not clipboard_is_bound) self._admin_menu.add_break(CLIPBOARD_BREAK) # Disable toolbar self._admin_menu.add_link_item( _('Disable toolbar'), url='?%s' % get_cms_setting('CMS_TOOLBAR_URL__DISABLE')) self._admin_menu.add_break(TOOLBAR_DISABLE_BREAK) # logout self.add_logout_button(self._admin_menu)
def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) if self.request.user.has_perm( 'user.change_user') and User in admin.site._registry: admin_menu.add_sideframe_item( _('Users'), url=reverse("admin:" + user_model_label.replace('.', '_').lower() + "_changelist")) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item( _('Admin Sites'), url=reverse('admin:sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item( site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=reverse('admin:index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item( _('User settings'), url=reverse('admin:cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout # If current page is not published or has view restrictions user is # redirected to the home page: # * published page: no redirect # * unpublished page: redirect to the home page # * published page with login_required: redirect to the home page # * published page with view permissions: redirect to the home page if self.request.current_page: if not self.request.current_page.is_published(self.current_lang): page = self.request.current_page else: page = self.request.current_page.get_public_object() else: page = None redirect_url = '/' if (page and (not page.is_published(self.current_lang) or page.login_required or not page.has_view_permission(self.request, AnonymousUser()))): admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True, on_success=redirect_url) else: admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True)
def set_sites(self, request): """Sets sites property to current instance - used in tree view for sites combo. """ if get_cms_setting('PERMISSION'): self.sites = get_user_sites_queryset(request.user) else: self.sites = Site.objects.all() self.has_access_to_multiple_sites = len(self.sites) > 1
def set_sites(self, request): """Sets sites property to current instance - used in tree view for sites combo. """ if settings.CMS_PERMISSION: self.sites = get_user_sites_queryset(request.user) else: self.sites = Site.objects.all() self.has_access_to_multiple_sites = len(self.sites) > 1
def get_allowed_sites(request, model=None): if settings.ALLOWED_SITES_FOR_USER and request and model: get_sites_for = load_object(settings.ALLOWED_SITES_FOR_USER) return get_sites_for(request.user, model) if global_settings.CMS_PERMISSION and request: from cms.utils.permissions import get_user_sites_queryset return get_user_sites_queryset(request.user) return Site.objects.all()
def get_user_allowed_sites(user): def _import_function(func_path): if not func_path: return None module_name, func_name = func_path.rsplit('.', 1) return getattr(import_module(module_name), func_name, None) get_sites_ids = _import_function( getattr(settings, 'ALLOWED_SITE_IDS_FOR_USER', None)) if get_sites_ids: return list(get_sites_ids(user)) from cms.utils.permissions import get_user_sites_queryset return list(get_user_sites_queryset(user).values_list('id', flat=True))
def add_admin_menu(self): if not self._admin_menu: self._admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) # Users button self.add_users_button(self._admin_menu) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = self._admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item(_('Admin Sites'), url=admin_reverse('sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item(site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin self._admin_menu.add_sideframe_item(_('Administration'), url=admin_reverse('index')) self._admin_menu.add_break(ADMINISTRATION_BREAK) # cms users settings self._admin_menu.add_sideframe_item(_('User settings'), url=admin_reverse('cms_usersettings_change')) self._admin_menu.add_break(USER_SETTINGS_BREAK) # clipboard if self.toolbar.edit_mode or self.toolbar.build_mode: # True if the clipboard exists and there's plugins in it. clipboard_is_bound = self.get_clipboard_plugins().exists() self._admin_menu.add_link_item(_('Clipboard...'), url='#', extra_classes=['cms-clipboard-trigger'], disabled=not clipboard_is_bound) self._admin_menu.add_link_item(_('Clear clipboard'), url='#', extra_classes=['cms-clipboard-empty'], disabled=not clipboard_is_bound) self._admin_menu.add_break(CLIPBOARD_BREAK) # Disable toolbar self._admin_menu.add_link_item(_('Disable toolbar'), url='?%s' % get_cms_setting('CMS_TOOLBAR_URL__DISABLE')) self._admin_menu.add_break(TOOLBAR_DISABLE_BREAK) # logout self.add_logout_button(self._admin_menu)
def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) if self.request.user.has_perm('user.change_user') and User in admin.site._registry: admin_menu.add_sideframe_item(_('Users'), url=reverse( "admin:" + user_model_label.replace('.', '_').lower() + "_changelist")) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item(_('Admin Sites'), url=reverse('admin:sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item(site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=reverse('admin:index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item(_('User settings'), url=reverse('admin:cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout # If current page is not published or has view restrictions user is # redirected to the home page: # * published page: no redirect # * unpublished page: redirect to the home page # * published page with login_required: redirect to the home page # * published page with view permissions: redirect to the home page if self.request.current_page: if not self.request.current_page.is_published(self.current_lang): page = self.request.current_page else: page = self.request.current_page.get_public_object() else: page = None redirect_url = '/' if (page and (not page.is_published(self.current_lang) or page.login_required or not page.has_view_permission(self.request, AnonymousUser()))): admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True, on_success=redirect_url) else: admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True)
def process_request(self, request): # Use cms_admin_site session variable to guess on what site # the user is trying to edit stuff. session_site_id = request.session.get('cms_admin_site', None) try: match = resolve(request.path) except Exception as e: logger.warning("SiteIDPatchMiddleware is raising {0}\n\n. " "Using {1} and bubble up".format(e, self.fallback)) self.fallback.process_request(request) raise e user = getattr(request, 'user', None) if (match.app_name == 'admin' and match.url_name == 'index' and session_site_id is None and user is not None and not user.is_superuser and not user.is_anonymous()): sites = get_user_sites_queryset(request.user) try: s_id = sites[0].pk session_site_id = request.session['cms_admin_site'] = s_id except IndexError as e: # This user doesn't have any sites under his control. logger.warning("SiteIDPatchMiddleware is raising {0}\n\n. " "This means the user doesn't have " "assigned any sites".format(e,)) pass if match.app_name == 'admin' and session_site_id is not None: settings.__class__.SITE_ID.value = session_site_id else: self.fallback.process_request(request) if not settings.__class__.SITE_ID.value: # This user doesn't have any sites under his control. logger.error("SiteIDPatchMiddleware ended and nothing worked! " "And now a Http404 will be raised.") raise Http404
def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) if self.request.user.has_perm('user.change_user') and User in admin.site._registry: admin_menu.add_sideframe_item(_('Users'), url=reverse("admin:auth_user_changelist")) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item(_('Admin Sites'), url=reverse('admin:sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item(site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=reverse('admin:index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item(_('User settings'), url=reverse('admin:cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout admin_menu.add_ajax_item(_('Logout'), action=reverse('admin:logout'), active=True)
def sites(self): return permissions.get_user_sites_queryset(self.request.user)
def add_admin_menu(self): admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER, self.current_site.name) if self.request.user.has_perm('user.change_user') and User in admin.site._registry: admin_menu.add_sideframe_item(_('Users'), url=reverse( "admin:" + user_model_label.replace('.', '_').lower() + "_changelist")) # sites menu if get_cms_setting('PERMISSION'): sites_queryset = get_user_sites_queryset(self.request.user) else: sites_queryset = Site.objects.all() if len(sites_queryset) > 1: sites_menu = admin_menu.get_or_create_menu('sites', _('Sites')) sites_menu.add_sideframe_item(_('Admin Sites'), url=reverse('admin:sites_site_changelist')) sites_menu.add_break(ADMIN_SITES_BREAK) for site in sites_queryset: sites_menu.add_link_item(site.name, url='http://%s' % site.domain, active=site.pk == self.current_site.pk) # admin admin_menu.add_sideframe_item(_('Administration'), url=reverse('admin:index')) admin_menu.add_break(ADMINISTRATION_BREAK) # cms users admin_menu.add_sideframe_item(_('User settings'), url=reverse('admin:cms_usersettings_change')) admin_menu.add_break(USER_SETTINGS_BREAK) # logout # If current page is not published or has view restrictions user is # redirected to the home page: # * published page: no redirect # * unpublished page: redirect to the home page # * published page with login_required: redirect to the home page # * published page with view permissions: redirect to the home page if self.request.current_page: if not self.request.current_page.is_published(self.current_lang): page = self.request.current_page else: page = self.request.current_page.get_public_object() else: page = None redirect_url = '/' # # We'll show "Logout Joe Bloggs" if the name fields in auth.User are # completed, else "Logout jbloggs". If anything goes wrong, it'll just # be "Logout". # try: if self.request.user.get_full_name(): user_name = self.request.user.get_full_name() else: if DJANGO_1_4: user_name = self.request.user.username else: user_name = self.request.user.get_username() except: user_name = '' if user_name: logout_menu_text = _('Logout %s') % user_name else: logout_menu_text = _('Logout') if (page and (not page.is_published(self.current_lang) or page.login_required or not page.has_view_permission(self.request, AnonymousUser()))): on_success=redirect_url else: on_success=self.toolbar.REFRESH_PAGE admin_menu.add_ajax_item( logout_menu_text, action=reverse('admin:logout'), active=True, on_success=on_success )