manager: add preliminary page export to json (#6197)

This commit is contained in:
Frédéric Péters 2014-12-30 15:43:52 +01:00
parent ac28c3eff2
commit c9fea9fecb
3 changed files with 19 additions and 0 deletions

View File

@ -4,6 +4,7 @@
{% block appbar %}
<h2>Page - {{ object.title }}</h2>
<a href="{% url 'combo-manager-page-export' pk=object.id %}">export</a>
<a rel="popup" href="{% url 'combo-manager-page-edit' pk=object.id %}">edit</a>
{% endblock %}

View File

@ -27,6 +27,8 @@ urlpatterns = patterns('combo.views',
name='combo-manager-page-view'),
url(r'^pages/(?P<pk>\w+)/edit$', views.page_edit,
name='combo-manager-page-edit'),
url(r'^pages/(?P<pk>\w+)/export$', views.page_export,
name='combo-manager-page-export'),
url(r'^pages/(?P<page_pk>\w+)/add-cell-to-(?P<ph_key>\w+)/(?P<cell_type>\w+)/(?P<variant>[\w-]+)/$',
views.page_add_cell,
name='combo-manager-page-add-cell'),

View File

@ -14,8 +14,11 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.core import serializers
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.forms import models as model_forms
@ -106,6 +109,19 @@ class PageView(DetailView):
page_view = requires_csrf_token(PageView.as_view())
class PageExportView(DetailView):
model = Page
def render_to_response(self, context, **response_kwargs):
response = HttpResponse(content_type='application/json')
cells = CellBase.get_cells(page_id=self.object.id)
serialized_page = json.loads(serializers.serialize('json', [self.object]))[0]
serialized_page['cells'] = json.loads(serializers.serialize('json', cells))
json.dump(serialized_page, response, indent=2)
return response
page_export = PageExportView.as_view()
class PageAddCellView(RedirectView):
def get_redirect_url(self, page_pk, cell_type, variant, ph_key):
cell_class = ContentType.objects.get(id=cell_type).model_class()