def save_content(request): """ View for creating/updating a piece of content. """ #Make a copy of request.POST, but as a single-value (not multi-value dict) post = request.POST data = {k: post.get(k) for k in post.keys()} key = data.pop('key') data.pop('csrfmiddlewaretoken', None) try: api.save_content_data(key, data, get_request_context(request)) return HttpResponse('ok') except ValidationError as e: return json_response_from_exception(e)
def test_save_and_get_data(self): api = BasicEditAPI() request = HttpRequest() request.path = '/test_view/' context = get_request_context(request) #First test that trying to get content for something that hasn't been saved returns {} result = api.get_content_data('some_key', context) self.assertEqual(result, {}) #Now save some data data = {'content': 'pineapple', 'href': 'http://www.google.com/'} api.save_content_data('some_key', data, context) #Now calling get_content_data should return that data result = api.get_content_data('some_key', context) self.assertIsSubDict(data, result) #And now even if we have a new request object (so that there's no on-request caching) #and even if memcache is cleared, we should still get the same result cache.clear() request = HttpRequest() request.path = '/test_view/' context = get_request_context(request) result = api.get_content_data('some_key', context) self.assertIsSubDict(data, result)
def replacement(request, *args, **kwargs): context = get_request_context(request) if not api.in_edit_mode(context): return HttpResponseForbidden() return function(request, *args, **kwargs)