2626 HttpResponseBadRequest ,
2727 HttpResponseForbidden ,
2828 HttpResponseRedirect ,
29+ JsonResponse ,
2930 QueryDict ,
3031)
3132from django .shortcuts import get_object_or_404 , render
@@ -343,7 +344,7 @@ def set_home(self, request, object_id):
343344 raise self ._get_404_exception (object_id )
344345
345346 if not page .is_potential_home ():
346- return HttpResponseBadRequest (_ ("The page is not eligible to be home." ))
347+ return HttpResponseBadRequest (escape ( _ ("The page is not eligible to be home." ) ))
347348
348349 new_home_tree , old_home_tree = page .set_as_homepage (request .user )
349350
@@ -389,7 +390,7 @@ def get_list(self, *args, **kwargs):
389390 "redirect_url" : page .get_absolute_url (language = language_code ),
390391 }
391392 )
392- return HttpResponse ( json . dumps ( results ), content_type = "application/json" )
393+ return JsonResponse ( results , safe = False )
393394 return HttpResponseForbidden ()
394395
395396 def changelist_view (self , request , extra_context = None ):
@@ -555,15 +556,15 @@ def move_page(self, request, page_id, extra_context=None):
555556 form = self .move_form (request .POST or None , page = page , site = site )
556557
557558 if not form .is_valid ():
558- return jsonify_request (HttpResponseBadRequest (str (form .errors .get ("__all__" , _ ("error" )))))
559+ return jsonify_request (HttpResponseBadRequest (escape (form .errors .get ("__all__" , _ ("error" )))))
559560
560561 target = form .cleaned_data ["target" ]
561562 can_move_page = self .has_move_page_permission (request , obj = page )
562563
563564 # Does the user have permissions to do this...?
564565 if not can_move_page or (target and not target .has_add_permission (user )):
565566 message = _ ("Error! You don't have permissions to move this page. Please reload the page" )
566- return jsonify_request (HttpResponseForbidden (message ))
567+ return jsonify_request (HttpResponseForbidden (escape ( message ) ))
567568
568569 operation_token = send_pre_page_operation (
569570 request = request ,
@@ -679,14 +680,14 @@ def copy_page(self, request, page_id):
679680 return jsonify_request (HttpResponseBadRequest (message ))
680681
681682 new_page = form .copy_page (user )
682- return HttpResponse ( json . dumps ( {"id" : new_page .pk }), content_type = "application/json" )
683+ return JsonResponse ( {"id" : new_page .pk })
683684
684685 def edit_title_fields (self , request , page_id , language ):
685686 page = self .get_object (request , object_id = page_id )
686687 translation = page .get_admin_content (language )
687688
688689 if not self .has_change_permission (request , obj = page ):
689- return HttpResponseForbidden (_ ("You do not have permission to edit this page" ))
690+ return HttpResponseForbidden (escape ( _ ("You do not have permission to edit this page" ) ))
690691
691692 if page is None :
692693 raise self ._get_404_exception (page_id )
@@ -1180,15 +1181,15 @@ def change_template(self, request, object_id):
11801181
11811182 if get_cms_setting ("TEMPLATES" ):
11821183 if to_template not in dict (get_cms_setting ("TEMPLATES" )):
1183- return HttpResponseBadRequest (_ ("Template not valid" ))
1184+ return HttpResponseBadRequest (escape ( _ ("Template not valid" ) ))
11841185 else :
11851186 if to_template not in (placeholder_set [0 ] for placeholder_set in get_cms_setting ("PLACEHOLDERS" )):
1186- return HttpResponseBadRequest (_ ("Placeholder selection not valid" ))
1187+ return HttpResponseBadRequest (escape ( _ ("Placeholder selection not valid" ) ))
11871188
11881189 page_content .template = to_template
11891190 page_content .save ()
11901191
1191- return HttpResponse (_ ("The template was successfully changed" ))
1192+ return HttpResponse (escape ( _ ("The template was successfully changed" ) ))
11921193
11931194 @require_POST
11941195 @transaction .atomic
@@ -1205,7 +1206,7 @@ def copy_language(self, request, object_id):
12051206 page = source_page_content .page
12061207
12071208 if not target_language or target_language not in get_language_list (site_id = page .site_id ):
1208- return HttpResponseBadRequest (_ ("Language must be set to a supported language!" ))
1209+ return HttpResponseBadRequest (escape ( _ ("Language must be set to a supported language!" ) ))
12091210
12101211 target_page_content = page .get_content_obj (target_language , fallback = False )
12111212
@@ -1218,7 +1219,7 @@ def copy_language(self, request, object_id):
12181219 plugins = placeholder .get_plugins_list (source_page_content .language )
12191220
12201221 if not target .has_add_plugins_permission (request .user , plugins ):
1221- return HttpResponseForbidden (_ ("You do not have permission to copy these plugins." ))
1222+ return HttpResponseForbidden (escape ( _ ("You do not have permission to copy these plugins." ) ))
12221223 copy_plugins_to_placeholder (plugins , target , language = target_language )
12231224 return HttpResponse ("ok" )
12241225
@@ -1227,7 +1228,7 @@ def delete_view(self, request, object_id, extra_context=None):
12271228 page = page_content .page
12281229
12291230 if not self .has_delete_translation_permission (request , page_content .language , page ):
1230- return HttpResponseForbidden (_ ("You do not have permission to delete this page" ))
1231+ return HttpResponseForbidden (escape ( _ ("You do not have permission to delete this page" ) ))
12311232
12321233 if page is None :
12331234 raise self ._get_404_exception (object_id )
@@ -1291,7 +1292,7 @@ def change_innavigation(self, request, object_id):
12911292 else :
12921293 # Only this page? Can be permissions or versioning, or ...
12931294 message = "You cannot change this page's navigation status"
1294- return HttpResponseForbidden (_ (message ))
1295+ return HttpResponseForbidden (escape ( _ (message ) ))
12951296
12961297 if page_content is None :
12971298 raise self ._get_404_exception (object_id )
0 commit comments