Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
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()
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
    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
Exemplo n.º 13
0
 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)
Exemplo n.º 15
0
    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
        )