def get(self): """Handles GET requests.""" if not constants.ENABLE_ACCOUNT_EXPORT: raise self.PageNotFoundException # Retrieve user data. user_takeout_object = takeout_service.export_data_for_user( self.user_id) user_data = user_takeout_object.user_data user_images = user_takeout_object.user_images # Create zip file. temp_file = python_utils.string_io() with zipfile.ZipFile(temp_file, mode='w', compression=zipfile.ZIP_DEFLATED) as zfile: zfile.writestr('oppia_takeout_data.json', json.dumps(user_data)) for image in user_images: b64_png_no_header = image.b64_image_data.split(',')[1] decoded_png = base64.b64decode( python_utils.url_unquote_plus(b64_png_no_header)) zfile.writestr('images/' + image.image_export_path, decoded_png) # Render file for download. self.render_downloadable_file(temp_file.getvalue(), 'oppia_takeout_data.zip', 'text/plain')
def test_url_unquote_plus(self): self.assertEqual(python_utils.url_unquote_plus(b'/El+Ni%C3%B1o/'), b'/El Niño/')