예제 #1
0
def index(request):
    snippet_types = [
        (get_snippet_type_name(content_type)[1], get_snippet_type_description(content_type), content_type)
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type)
    ]
    return render(request, "wagtailsnippets/snippets/index.html", {"snippet_types": snippet_types})
예제 #2
0
def editor_js():
    content_types = []
    for content_type in get_snippet_content_types():
        verbose_name = content_type.model_class()._meta.verbose_name
        verbose_name = verbose_name[0:1].upper() + verbose_name[1:]
        content_types.append({
            'app_label': content_type.model_class()._meta.app_label,
            'model_name': content_type.model_class()._meta.model_name,
            'label': verbose_name
        })

    return format_html(
        """
            <script src="{0}{1}"></script>
            <script>window.chooserUrls.snippetChooser = '{2}';</script>
        """, settings.STATIC_URL, 'wagtailsnippets/js/snippet-chooser.js',
        urlresolvers.reverse('wagtailsnippets_choose_generic')) + """
            <script src="{0}{1}"></script>
            <script>
                registerHalloPlugin('hallowagtailsnippets', {{ 'content_types': {2} }});
            </script>
        """.format(
            settings.STATIC_URL,
            'wagtailsnippets/js/hallo-plugins/hallo-wagtailsnippets.js',
            json.dumps(content_types))
예제 #3
0
def index(request):
    snippet_types = [(get_snippet_type_name(content_type)[1], content_type)
                     for content_type in get_snippet_content_types()
                     if user_can_edit_snippet_type(request.user, content_type)]
    return render(
        request, 'wagtailsnippets/snippets/index.html', {
            'snippet_types': sorted(snippet_types, key=lambda x: x[0].lower()),
        })
예제 #4
0
def index(request):
    snippet_types = [(get_snippet_type_name(content_type)[1],
                      get_snippet_type_description(content_type), content_type)
                     for content_type in get_snippet_content_types()
                     if user_can_edit_snippet_type(request.user, content_type)]
    return render(request, 'wagtailsnippets/snippets/index.html', {
        'snippet_types': snippet_types,
    })
예제 #5
0
def index(request):
    snippet_types = [
        (get_snippet_type_name(content_type)[1], content_type)
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type)
    ]
    return render(
        request,
        "wagtailsnippets/snippets/index.html",
        {"snippet_types": sorted(snippet_types, key=lambda x: x[0].lower())},
    )
예제 #6
0
def index(request):
    snippet_types = [
        (
            get_snippet_type_name(content_type)[1],
            get_snippet_type_description(content_type),
            content_type
        )
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type)
    ]
    return render(request, 'wagtailsnippets/snippets/index.html', {
        'snippet_types': sorted(snippet_types, key=lambda x: x[0].lower()),
    })
예제 #7
0
def index(request):
    snippet_types = [
        (get_snippet_type_name(content_type)[1], '', content_type)
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type)
        and hasattr(content_type.model_class()._meta, 'embedder_snippet')
        and content_type.model_class()._meta.embedder_snippet
    ]
    return render_modal_workflow(request,
                                 'wagtailembedder/snippets/types_list.html',
                                 'wagtailembedder/snippets/types_list.js', {
                                     'snippet_types': snippet_types,
                                 })
예제 #8
0
파일: snippets.py 프로젝트: vlprans/wagtail
def index(request, template='wagtailsnippets/snippets/index.html'):
    snippet_types = [
        (
            get_snippet_type_name(content_type)[1],
            get_snippet_type_description(content_type),
            content_type
        )
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type)
    ]
    return render(request, template, {
        'snippet_types': snippet_types,
    })
예제 #9
0
def get_content_type_from_url_params(app_name, model_name):
    """
    retrieve a content type from an app_name / model_name combo.
    Throw Http404 if not a valid snippet type
    """
    try:
        content_type = ContentType.objects.get_by_natural_key(app_name, model_name)
    except ContentType.DoesNotExist:
        raise Http404
    if content_type not in get_snippet_content_types():
        # don't allow people to hack the URL to edit content types that aren't registered as snippets
        raise Http404

    return content_type
예제 #10
0
def user_can_edit_snippets(user):
    """ true if user has any permission related to any content type registered as a snippet type """
    snippet_content_types = get_snippet_content_types()
    if user.is_active and user.is_superuser:
        # admin can edit snippets iff any snippet types exist
        return bool(snippet_content_types)

    permissions = Permission.objects.filter(content_type__in=snippet_content_types).select_related('content_type')
    for perm in permissions:
        permission_name = "%s.%s" % (perm.content_type.app_label, perm.codename)
        if user.has_perm(permission_name):
            return True

    return False
예제 #11
0
def get_content_type_from_url_params(app_name, model_name):
    """
    retrieve a content type from an app_name / model_name combo.
    Throw Http404 if not a valid snippet type
    """
    try:
        content_type = ContentType.objects.get_by_natural_key(app_name, model_name)
    except ContentType.DoesNotExist:
        raise Http404
    if content_type not in get_snippet_content_types():
        # don't allow people to hack the URL to edit content types that aren't registered as snippets
        raise Http404

    return content_type
예제 #12
0
def index(request):
    snippet_types = [(
        get_snippet_type_name(content_type)[1],
        '',
        content_type)
        for content_type in get_snippet_content_types()
        if user_can_edit_snippet_type(request.user, content_type) and hasattr(content_type.model_class()._meta, 'embedder_snippet') and content_type.model_class()._meta.embedder_snippet


    ]
    return render_modal_workflow(
        request,
        'wagtailembedder/snippets/types_list.html',
        'wagtailembedder/snippets/types_list.js',
        {
            'snippet_types': snippet_types,
        }
    )
예제 #13
0
def register_snippets_menu_item():
    menu_items = []
    i = 0

    for content_type in get_snippet_content_types():
        verbose_name = content_type.model_class()._meta.verbose_name
        verbose_name = verbose_name[0:1].upper() + verbose_name[1:]
        menu_items.append(
            SnippetsMenuItem(verbose_name,
                             urlresolvers.reverse('wagtailsnippets_list',
                                                  args=[
                                                      content_type.app_label,
                                                      content_type.model
                                                  ]),
                             classnames='icon icon-snippet icon-snippet-' +
                             content_type.model,
                             order=500 - i))
        i += 1

    return menu_items
예제 #14
0
def index_objects(request, content_type_app_name, content_type_model_name):
    snippet_types = get_snippet_content_types()
    for content_type in snippet_types:
        if content_type.model.lower().replace(" ",
                                              "") == content_type_model_name:
            model = content_type.model_class()
            items = model.objects.all()
            snippet_type_name, snippet_type_name_plural = get_snippet_type_name(
                content_type)

            return render_modal_workflow(
                request, 'wagtailembedder/snippets/type_index.html',
                'wagtailembedder/snippets/type_index.js', {
                    'content_type': content_type,
                    'snippet_type_name': snippet_type_name,
                    'snippet_type_name_plural': snippet_type_name_plural,
                    'items': items,
                })

    raise ObjectDoesNotExist
예제 #15
0
def index_objects(request, content_type_app_name, content_type_model_name):
    snippet_types = get_snippet_content_types()
    for content_type in snippet_types:
        if content_type.model.lower().replace(" ", "") == content_type_model_name:
            model = content_type.model_class()
            items = model.objects.all()
            snippet_type_name, snippet_type_name_plural = get_snippet_type_name(content_type)

            return render_modal_workflow(
                request,
                'wagtailembedder/snippets/type_index.html',
                'wagtailembedder/snippets/type_index.js',
                {
                    'content_type': content_type,
                    'snippet_type_name': snippet_type_name,
                    'snippet_type_name_plural': snippet_type_name_plural,
                    'items': items,
                }
            )

    raise ObjectDoesNotExist
예제 #16
0
def register_permissions():
    snippet_content_types = get_snippet_content_types()
    snippet_permissions = Permission.objects.filter(
        content_type__in=snippet_content_types)
    return snippet_permissions
예제 #17
0
def register_permissions():
    snippet_content_types = get_snippet_content_types()
    snippet_permissions = Permission.objects.filter(content_type__in=snippet_content_types)
    return snippet_permissions