示例#1
0
文件: admin.py 项目: JamesJGarner/cms
 def add_view(self, request, *args, **kwargs):
     """Ensures that a valid content type is chosen."""
     if not PAGE_TYPE_PARAMETER in request.GET:
         # Generate the available content items.
         content_items = get_registered_content()
         content_items.sort(lambda a, b: cmp(a.classifier, b.classifier) or cmp(a._meta.verbose_name.lower(), b._meta.verbose_name.lower()))
         content_types = []
         for content_type in content_items:
             if self.has_add_content_permission(request, content_type):
                 # If we get this far, then we have permisison to add a page of this type.
                 get_params = request.GET.copy()
                 get_params[PAGE_TYPE_PARAMETER] = ContentType.objects.get_for_model(content_type).id
                 query_string = get_params.urlencode()
                 url = request.path + "?" + query_string
                 content_type_context = {
                     "name": content_type._meta.verbose_name,
                     "icon": content_type.icon,
                     "url": url,
                     "classifier": content_type.classifier
                 }
                 content_types.append(content_type_context)
         # Shortcut for when there is a single content type.
         if len(content_types) == 1:
             return redirect(content_types[0]["url"])
         # Render the select page template.
         context = {
             "title": "Select page type",
             "content_types": content_types
         }
         return render(request, "admin/pages/page/select_page_type.html", context)
     else:
         if not self.has_add_content_permission(request, ContentType.objects.get_for_id(request.GET[PAGE_TYPE_PARAMETER]).model_class()):
             raise PermissionDenied, "You are not allowed to add pages of that content type."
     return super(PageAdmin, self).add_view(request, *args, **kwargs)
示例#2
0
 def add_view(self, request, *args, **kwargs):
     """Ensures that a valid content type is chosen."""
     if not PAGE_TYPE_PARAMETER in request.GET:
         # Generate the available content items.
         content_items = get_registered_content()
         content_items.sort(lambda a, b: cmp(a.classifier, b.classifier) or cmp(a._meta.verbose_name.lower(), b._meta.verbose_name.lower()))
         content_types = []
         for content_type in content_items:
             if self.has_add_content_permission(request, content_type):
                 # If we get this far, then we have permisison to add a page of this type.
                 get_params = request.GET.copy()
                 get_params[PAGE_TYPE_PARAMETER] = ContentType.objects.get_for_model(content_type).id
                 query_string = get_params.urlencode()
                 url = request.path + "?" + query_string
                 content_type_context = {
                     "name": content_type._meta.verbose_name,
                     "icon": content_type.icon,
                     "url": url,
                     "classifier": content_type.classifier
                 }
                 content_types.append(content_type_context)
         # Shortcut for when there is a single content type.
         if len(content_types) == 1:
             return redirect(content_types[0]["url"])
         # Render the select page template.
         context = {
             "title": "Select page type",
             "content_types": content_types
         }
         return render(request, "admin/pages/page/select_page_type.html", context)
     else:
         if not self.has_add_content_permission(request, ContentType.objects.get_for_id(request.GET[PAGE_TYPE_PARAMETER]).model_class()):
             raise PermissionDenied, "You are not allowed to add pages of that content type."
     return super(PageAdmin, self).add_view(request, *args, **kwargs)
示例#3
0
 def lookups(self, request, model_admin):
     lookups = []
     content_types = ContentType.objects.get_for_models(*get_registered_content())
     for key, value in content_types.items():
         lookups.append((value.id, capfirst(key._meta.verbose_name)))
     lookups.sort(key=lambda item: item[1])
     return lookups
示例#4
0
文件: admin.py 项目: dan-gamble/cms
 def lookups(self, request, model):
     lookups = []
     content_types = ContentType.objects.get_for_models(*get_registered_content())
     for key, value in six.iteritems(content_types):
         lookups.append((value.id, capfirst(key._meta.verbose_name)))
     lookups.sort(key=lambda item: item[1])
     return lookups
示例#5
0
 def has_add_permission(self, request):
     """Checks whether the user can edits pages and at least one content model."""
     if not super(PageAdmin, self).has_add_permission(request):
         return False
     for content_model in get_registered_content():
         if self.has_add_content_permission(request, content_model):
             return True
     return False
示例#6
0
文件: admin.py 项目: JamesJGarner/cms
 def has_add_permission(self, request):
     """Checks whether the user can edits pages and at least one content model."""
     if not super(PageAdmin, self).has_add_permission(request):
         return False
     for content_model in get_registered_content():
         if self.has_add_content_permission(request, content_model):
             return True
     return False
示例#7
0
 def __init__(self, *args, **kwargs):
     """Initialzies the PageAdmin."""
     super(PageAdmin, self).__init__(*args, **kwargs)
     # Patch the admin class's index template.
     self.admin_site.index_template = "admin/pages/dashboard.html"
     # Prepare to register some content inlines.
     self.content_inlines = []
     # Register all page inlines.
     for content_cls in get_registered_content():
         self._register_page_inline(content_cls)
示例#8
0
文件: admin.py 项目: JamesJGarner/cms
 def __init__(self, *args, **kwargs):
     """Initialzies the PageAdmin."""
     super(PageAdmin, self).__init__(*args, **kwargs)
     # Patch the admin class's index template.
     self.admin_site.index_template = "admin/pages/dashboard.html"
     # Prepare to register some content inlines.
     self.content_inlines = []
     # Register all page inlines.
     for content_cls in get_registered_content():
         self._register_page_inline(content_cls)
示例#9
0
文件: admin.py 项目: jamesfoley/cms
    def __init__(self, *args, **kwargs):
        """Initialzies the PageAdmin."""
        super(PageAdmin, self).__init__(*args, **kwargs)
        # Patch the admin class's index template.
        self.admin_site.index_template = "admin/pages/dashboard.html"
        # Prepare to register some content inlines.
        self.content_inlines = []
        # Register all page inlines.
        for content_cls in get_registered_content():
            self._register_page_inline(content_cls)

        if externals.reversion:
            self.list_display = ("__str__", "last_modified", "is_online",)
示例#10
0
    def __init__(self, *args, **kwargs):
        """Initialzies the PageAdmin."""
        super(PageAdmin, self).__init__(*args, **kwargs)
        # Patch the admin class's index template.
        self.admin_site.index_template = "admin/pages/dashboard.html"
        # Prepare to register some content inlines.
        self.content_inlines = []
        # Register all page inlines.
        for content_cls in get_registered_content():
            self._register_page_inline(content_cls)

        if externals.reversion:
            self.list_display = ("__str__", "last_modified", "is_online",)
示例#11
0
    def add_view(self, request, form_url='', extra_context=None):
        '''Ensures that a valid content type is chosen.'''
        if PAGE_TYPE_PARAMETER not in request.GET:
            # Generate the available content items.
            content_items = get_registered_content()

            def cmp_function(a, b):
                return (a.classifier > b.classifier) - (a.classifier < b.classifier) or \
                       (a._meta.verbose_name.lower() > b._meta.verbose_name.lower()) - (a._meta.verbose_name.lower() < b._meta.verbose_name.lower())

            content_items.sort(key=cmp_to_key(cmp_function))
            content_types = []
            for content_type in content_items:
                if self.has_add_content_permission(request, content_type):
                    # If we get this far, then we have permisison to add a page of this type.
                    get_params = request.GET.copy()
                    get_params[
                        PAGE_TYPE_PARAMETER] = ContentType.objects.get_for_model(
                            content_type).id
                    query_string = get_params.urlencode()
                    content_url = request.path + '?' + query_string
                    content_type_context = {
                        'name': content_type._meta.verbose_name,
                        'icon': staticfiles_storage.url(content_type.icon),
                        'url': content_url,
                        'classifier': content_type.classifier
                    }
                    content_types.append(content_type_context)
            # Shortcut for when there is a single content type.
            if len(content_types) == 1:
                return redirect(content_types[0]['url'])
            # Render the select page template.
            context = {
                'title': 'Select page type',
                'content_types': content_types,
                'is_popup': request.GET.get(IS_POPUP_VAR, False),
            }

            return render(request, 'admin/pages/page/select_page_type.html',
                          context)
        else:
            if not self.has_add_content_permission(
                    request,
                    ContentType.objects.get_for_id(
                        request.GET[PAGE_TYPE_PARAMETER]).model_class()):
                raise PermissionDenied(
                    'You are not allowed to add pages of that content type.')
        return super().add_view(request, form_url, extra_context)