def setUp(self):
        # Create the menu
        menu = Menuz.objects.create(title='Top menu', position='top_menu')

        # Add some item to menu
        # 1. add custom menu
        menuCustom = MenuzItem()
        menuCustom.menu = menu
        menuCustom.content_type = 'custom'
        menuCustom.title = 'Menu Custom'
        menuCustom.url = 'http://google.com'
        menuCustom.save()

        # 2. add innerlink menu
        menuInnerlink = MenuzItem()
        menuInnerlink.menu = menu
        menuInnerlink.content_type = 'innerlink'
        menuInnerlink.title = 'Menu innerlink'
        menuInnerlink.url = '/some_page/'
        menuInnerlink.save()

        request_factory = RequestFactory()
        self.request = request_factory.get('/this_page/')
        self.context_instance = RequestContext(self.request)
Example #2
0
def add_menuz(request):
    """
    Ajax add menu.
    """
    if request.is_ajax() and request.method == 'POST':
        mtype = request.POST.get('mtype', '')
        menu_id = request.POST.get('menu_id', 0)
        menu = Menuz.objects.get(pk=menu_id)

        #if menu type custom
        if mtype == 'custom':
            customform = CustomMenuForm(request.POST)
            if customform.is_valid():

                menuitem = MenuzItem()
                menuitem.menu = menu
                menuitem.content_type = mtype
                menuitem.title = strip_tags(customform.cleaned_data['custom_title'])
                menuitem.url = customform.cleaned_data['custom_url']
                menuitem.save()

                data = {
                    'id': menuitem.id,
                    'title': menuitem.title,
                    'url': menuitem.url,
                    'content_type': menuitem.content_type,
                    'content_id': menuitem.content_id
                }
                menu_data = [data]
                return HttpResponse(json.dumps({'status': 'success', 'menu_data': menu_data}),
                                    content_type='application/javascript; charset=utf-8;')
            else:
                fields = [field for field in customform.errors]
                return HttpResponse(json.dumps({'status': 'failed', 'fields': fields}),
                                    content_type='application/javascript; charset=utf-8;')

        #if menu type Innerlink, similar to custom but different treatment
        elif mtype == 'innerlink':

            links = request.POST.getlist(mtype)

            if links and menu:
                menu_data = []
                for link in links:
                    link_split = link.split('$')

                    menuitem = MenuzItem()
                    menuitem.menu = menu
                    menuitem.content_type = mtype
                    menuitem.title = strip_tags(link_split[1])
                    menuitem.url = strip_tags(link_split[0])
                    menuitem.save()

                    data = {
                        'id': menuitem.id,
                        'title': menuitem.title,
                        'url': menuitem.url,
                        'content_type': menuitem.content_type,
                        'content_id': menuitem.content_id
                    }
                    menu_data.append(data)
                return HttpResponse(json.dumps({'status': 'success', 'menu_data': menu_data}),
                                    content_type='application/javascript; charset=utf-8;')

        #if menu type Model Menu
        else:
            obj_ids = request.POST.getlist(mtype)
            model = get_menuz_object_model(mtype)

            if obj_ids and menu and model:
                queryset = model.objects.filter(pk__in=obj_ids)
                menu_data = []
                for obj in queryset:

                    menuitem = MenuzItem()
                    menuitem.menu = menu
                    menuitem.content_type = mtype
                    menuitem.content_id = obj.pk
                    menuitem.title = obj.__unicode__()
                    menuitem.save()

                    data = {
                        'id': menuitem.id,
                        'title': menuitem.title,
                        'url': menuitem.url,
                        'content_type': menuitem.content_type,
                        'content_id': menuitem.content_id
                    }
                    menu_data.append(data)
                return HttpResponse(json.dumps({'status': 'success', 'menu_data': menu_data}),
                                    content_type='application/javascript; charset=utf-8;')

        return HttpResponse(json.dumps({'status': 'failed'}),
                                content_type='application/javascript; charset=utf-8;')
    raise Http404
Example #3
0
def add_menuz(request):
    if request.is_ajax():
        if request.method == 'POST':
            mtype = request.POST.get('mtype','')
            menu_id = request.POST.get('menu_id',0)
            menu = Menuz.objects.get(pk=menu_id)

            #if menu type custom
            if mtype == 'custom':
                customform = CustomMenuForm(request.POST)
                if customform.is_valid():

                    menuitem = MenuzItem()
                    menuitem.menu = menu
                    menuitem.content_type = mtype
                    menuitem.title = strip_tags(customform.cleaned_data['custom_title'])
                    menuitem.url = customform.cleaned_data['custom_url']
                    menuitem.save()
                    data = {
                        'id': menuitem.id,
                        'title': menuitem.title,
                        'url': menuitem.url,
                        'content_type': menuitem.content_type,
                        'content_id': menuitem.content_id
                    }
                    menu_data = [data]
                    return HttpResponse(simplejson.dumps({'status':'success', 'menu_data': menu_data}),
                                        content_type='application/javascript; charset=utf-8;')
                else:
                    fields = [field for field in customform.errors]
                    return HttpResponse(simplejson.dumps({'status':'failed', 'fields':fields}),
                                        content_type='application/javascript; charset=utf-8;')

            #if menu type Innerlink, similar to custom but different treatment
            elif mtype == 'innerlink':

                links = request.POST.getlist(mtype)

                if links and menu:
                    menu_data = []
                    for link in links:
                        link_split = link.split('$')

                        menuitem = MenuzItem()
                        menuitem.menu = menu
                        menuitem.content_type = mtype
                        menuitem.title = strip_tags(link_split[1])
                        menuitem.url = strip_tags(link_split[0])
                        menuitem.save()

                        data = {
                            'id': menuitem.id,
                            'title': menuitem.title,
                            'url': menuitem.url,
                            'content_type': menuitem.content_type,
                            'content_id': menuitem.content_id
                        }
                        menu_data.append(data)
                    return HttpResponse(simplejson.dumps({'status':'success', 'menu_data': menu_data}),
                                        content_type='application/javascript; charset=utf-8;')

            #if menu type Model Menu
            else:
                obj_ids = request.POST.getlist(mtype)
                model = get_menuz_object_model(mtype)

                if obj_ids and menu and model:
                    queryset = model.objects.filter(pk__in=obj_ids)
                    menu_data = []
                    for obj in queryset:

                        menuitem = MenuzItem()
                        menuitem.menu = menu
                        menuitem.content_type = mtype
                        menuitem.content_id = obj.pk
                        menuitem.title = obj.__unicode__()
                        menuitem.save()

                        data = {
                            'id': menuitem.id,
                            'title': menuitem.title,
                            'url': menuitem.url,
                            'content_type': menuitem.content_type,
                            'content_id': menuitem.content_id
                        }
                        menu_data.append(data)
                    return HttpResponse(simplejson.dumps({'status':'success', 'menu_data': menu_data}),
                                        content_type='application/javascript; charset=utf-8;')

            return HttpResponse(simplejson.dumps({'status':'failed'}),
                                    content_type='application/javascript; charset=utf-8;')