예제 #1
0
    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')
예제 #2
0
 def test_url_unquote_plus(self):
     self.assertEqual(python_utils.url_unquote_plus(b'/El+Ni%C3%B1o/'),
                      b'/El Niño/')