2021-01-05 12:30:39 +01:00

53 lines
1.4 KiB
Python

# This file is part of the Indico plugins.
# Copyright (C) 2002 - 2021 CERN
#
# The Indico plugins are free software; you can redistribute
# them and/or modify them under the terms of the MIT License;
# see the LICENSE file for more details.
from __future__ import unicode_literals
import mimetypes
import re
from flask import render_template
from indico.core import signals
from indico.core.plugins import IndicoPlugin, url_for_plugin
from indico.modules.attachments.preview import Previewer
from indico_previewer_jupyter.blueprint import blueprint
def register_custom_mimetypes():
mimetypes.add_type(b'application/x-ipynb+json', b'.ipynb')
register_custom_mimetypes()
class NotebookPreviewer(Previewer):
ALLOWED_CONTENT_TYPE = re.compile(r"^application/x-ipynb\+json$")
@classmethod
def generate_content(cls, attachment):
return render_template('previewer_jupyter:iframe_preview.html',
source_url=url_for_plugin('previewer_jupyter.preview_ipynb', attachment))
class JupyterPreviewerPlugin(IndicoPlugin):
"""Jupyter Notebook renderer"""
configurable = False
def init(self):
super(JupyterPreviewerPlugin, self).init()
self.connect(signals.attachments.get_file_previewers, self._get_file_previewers)
def get_blueprints(self):
yield blueprint
def _get_file_previewers(self, sender, **kwargs):
yield NotebookPreviewer