From 6d7fbba0fc07e408af495f968364313d073a40d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 10 Jul 2016 10:56:49 +0200 Subject: [PATCH] misc: publish menu.json to get a menu entry into publik sidepage menu (#12508) --- corbo/manage_urls.py | 3 ++- corbo/views.py | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/corbo/manage_urls.py b/corbo/manage_urls.py index 6e6294e..f0e1538 100644 --- a/corbo/manage_urls.py +++ b/corbo/manage_urls.py @@ -1,7 +1,7 @@ from django.conf.urls import patterns, include, url from .views import add_announce, edit_announce, delete_announce, \ - add_category, edit_category, delete_category, manage + add_category, edit_category, delete_category, manage, menu_json urlpatterns = patterns('', url(r'^$', manage, name='manage'), @@ -16,4 +16,5 @@ urlpatterns = patterns('', name='edit_category'), url(r'^category/delete/(?P\d+)$', delete_category, name='delete_category'), + url(r'^menu.json$', menu_json), ) diff --git a/corbo/views.py b/corbo/views.py index 73109ab..a5098b6 100644 --- a/corbo/views.py +++ b/corbo/views.py @@ -1,5 +1,6 @@ from datetime import datetime import urllib +import json from django.conf import settings from django.core import signing @@ -8,12 +9,13 @@ from django.views.generic import CreateView, UpdateView, DeleteView, \ ListView, TemplateView from django.contrib.syndication.views import Feed from django.shortcuts import resolve_url +from django.utils.encoding import force_text from django.utils.feedgenerator import Atom1Feed from django.utils.http import urlencode -from django.http import Http404 +from django.http import HttpResponseRedirect, HttpResponse, Http404 from django.contrib.auth import logout as auth_logout from django.contrib.auth import views as auth_views -from django.http import HttpResponseRedirect +from django.utils.translation import ugettext_lazy as _ import models from .forms import AnnounceForm, CategoryForm @@ -182,3 +184,20 @@ class AtomView(Feed): return item.publication_time or item.mtime atom = AtomView() + + +def menu_json(request): + label = _('Announces') + json_str = json.dumps([{'label': force_text(label), + 'slug': 'announces', + 'url': request.build_absolute_uri(reverse('manage')) + }]) + for variable in ('jsonpCallback', 'callback'): + if variable in request.GET: + response = HttpResponse(content_type='application/javascript') + json_str = '%s(%s);' % (request.GET[variable], json_str) + break + else: + response = HttpResponse(content_type='application/json') + response.write(json_str) + return response -- 2.8.1