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)
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
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;')