Exemple #1
0
    def _set_navigation_parent(self, value, tree=None):
        ct = ContentType.objects.get_for_model(get_article_class())
        if value != None:
            if value < 0:  # WTF ???
                tree_id = -value
                tree = get_navTree_class().objects.get(id=tree_id)
                parent = None
            else:
                parent = NavNode.objects.get(id=value)
                if not tree:
                    tree = parent.tree

            create_navigation_node(ct, self, tree, parent)
Exemple #2
0
def get_node_choices():
    prefix = "--"
    #choices = [(None, _(u'<not in navigation>')), (0, _(u'<root node>'))]
    #for root_node in NavNode.objects.filter(parent__isnull=True).order_by('ordering'):
    #    for (progeny, level) in root_node.get_progeny():
    #        choices.append((progeny.id, prefix*level+progeny.label))
    #return choices
    choices = [(None, _(u'<not in navigation>'))]
    for tree in get_navTree_class().objects.all():
        choices.append((-tree.id, tree.name))
        for root_node in NavNode.objects.filter(tree=tree, parent__isnull=True).order_by('ordering'):
            for (progeny, level) in root_node.get_progeny():
                choices.append((progeny.id, prefix*(level+1)+progeny.label))
    return choices
Exemple #3
0
    def resolve_kwargs(self, context):
        kwargs = {}
        for (k, v) in self._kwargs.items():
            try:
                kwargs[k] = v.resolve(context)
            except VariableDoesNotExist:
                kwargs[k] = v.var  # if the variable can not be resolved, thake the value as is

            if k == 'css_class':
                kwargs[k] = self.format_css_class(v)

        if not 'tree' in kwargs:
            kwargs['tree'] = 'default'

        tree, _is_new = get_navTree_class().objects.get_or_create(name=kwargs['tree'])
        if 'coop_cms_navtrees' in context.dicts[0]:
            context.dicts[0]['coop_cms_navtrees'].append(tree)
        else:
            context.dicts[0]['coop_cms_navtrees'] = [tree]

        return kwargs
Exemple #4
0
def process_nav_edition(request, tree_id):
    """This handle ajax request sent by the tree component"""
    if request.method == "POST" and request.is_ajax() and "msg_id" in request.POST:
        try:
            # Get the current tree
            tree = get_object_or_404(get_navTree_class(), id=tree_id)

            # check permissions
            if not request.user.has_perm("coop_cms.change_navtree"):
                raise PermissionDenied

            supported_msg = {}
            # create a map between message name and handler
            # use the function name as message id
            for fct in (
                view_navnode,
                rename_navnode,
                remove_navnode,
                move_navnode,
                add_navnode,
                get_suggest_list,
                navnode_in_navigation,
            ):
                supported_msg[fct.__name__] = fct

            # Call the handler corresponding to the requested message
            response = supported_msg[request.POST["msg_id"]](request, tree)

            # If no exception raise: Success
            response["status"] = "success"
            response.setdefault("message", "Ok")  # if no message defined in response, add something

        except KeyError, msg:
            response = {"status": "error", "message": u"Unsupported message : %s" % msg}
        except PermissionDenied:
            response = {"status": "error", "message": u"You are not allowed to add a node"}
Exemple #5
0
from django import forms
from fcpe.models import *
from fcpe.autocomplete_admin import FkAutocompleteAdmin, InlineAutocompleteAdmin
from django.contrib.admin.widgets import AdminTextInputWidget
from django.utils.safestring import mark_safe
from django.utils.html import escape
import unicodedata

from django.db.models.loading import get_app, get_models
from django.contrib.sites.models import Site
from django.contrib.auth.models import Group
from coop_cms.settings import get_navTree_class

admin.site.unregister(Group)
admin.site.unregister(Site)
admin.site.unregister(get_navTree_class())

for app in ['coop_cms', 'communes', 'oembed']:
    for mod in get_models(get_app(app)):
        try:
            admin.site.unregister(mod)
        except:
            pass


def to_ascii(input_str):
    nkfd_form = unicodedata.normalize('NFKD', unicode(input_str))
    only_ascii = nkfd_form.encode('ASCII', 'ignore')
    return only_ascii

Exemple #6
0
    from coop_cms.admin import NavTreeAdmin, ArticleAdmin
    from coop_cms.settings import get_article_class, get_navTree_class
    from coop_cms.forms import ArticleAdminForm

    # -- We need to customize coop-cms NavtreeAdmin

    class MyNavTreeAdmin(NavTreeAdmin):
        change_form_template = 'admin/navtree_change_form.html'
        # list_display = ['__unicode__', 'name', 'sites']
        # list_editable = ['name', 'sites']

        # if settings.COOP_USE_SITES:
        #     list_display.append('sites')
        #     list_display.append('sites')

    navtree_model = get_navTree_class()
    admin.site.unregister(navtree_model)
    admin.site.register(navtree_model, MyNavTreeAdmin)

    # -- We need to customize coop-cms ArticleAdmin

    class CoopArticleForm(ArticleAdminForm):
        content = forms.CharField(widget=AdminTinyMCE(attrs={'cols': 80, 'rows': 60}), required=False)

        class Meta:
            model = get_model('coop_local', 'Article')
            widgets = {'sites': chosenwidgets.ChosenSelectMultiple()}

        def __init__(self, *args, **kwargs):
            super(CoopArticleForm, self).__init__(*args, **kwargs)
            if 'sites' in self.fields:
Exemple #7
0
    def navtypes_list(self, tree):
        if tree.types.count() == 0:
            return _(u'All')
        else:
            return u' - '.join([unicode(x) for x in tree.types.all()])
    navtypes_list.short_description = _(u'navigable types')

    def change_view(self, request, object_id, extra_context=None):
        extra_context = extra_context or {}
        tree = models.get_navTree_class().objects.get(id=object_id)
        extra_context['navtree'] = tree
        extra_context['navtree_nodes'] = self.nodes_li(tree)
        return super(NavTreeAdmin, self).change_view(request, object_id,
            extra_context=extra_context)

admin.site.register(get_navTree_class(), NavTreeAdmin)


class ArticleAdmin(admin.ModelAdmin):
    form = ArticleAdminForm
    list_display = ['slug', 'title', 'publication', 'is_homepage', 'in_newsletter', 'category', 'modified']
    list_editable = ['publication', 'is_homepage', 'in_newsletter', 'category']
    readonly_fields = ['slug', 'created', 'modified']
    fieldsets = (
        #(_('Navigation'), {'fields': ('navigation_parent',)}),
        (_('General'), {'fields': ('slug', 'title', 'content')}),
        (_('Advanced'), {'fields': ('template', 'category', 'logo', 'is_homepage', 'in_newsletter')}),
        (_('Publication'), {'fields': ('publication', 'created', 'modified')}),
        (_('Summary'), {'fields': ('summary',)}),
        (_('Debug'), {'fields': ('temp_logo',)}),
    )