From a890b080364ff029b1d72051df7538ad0a9817a4 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 | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 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 27335bf..7d91290 100644 --- a/corbo/views.py +++ b/corbo/views.py @@ -1,4 +1,5 @@ from datetime import datetime +import json from django.conf import settings from django.core import signing @@ -6,9 +7,11 @@ from django.core.urlresolvers import reverse from django.views.generic import CreateView, UpdateView, DeleteView, \ ListView, TemplateView from django.contrib.syndication.views import Feed +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.utils.translation import ugettext_lazy as _ +from django.http import HttpResponse, Http404 import models from .forms import AnnounceForm, CategoryForm @@ -153,3 +156,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