Ejemplo n.º 1
0
 def setup_media_link(short_name, attr_name=None, source=None):
     target = join(settings.MEDIA_ROOT, short_name)
     if exists(target):
         return
     if attr_name:
         source = getattr(settings.SITE, attr_name)
         if not source:
             raise Exception("%s does not exist and LINO.%s is not set." % (target, attr_name))
     if not exists(source):
         raise Exception("LINO.%s (%s) does not exist" % (attr_name, source))
     if is_devserver():
         urlpatterns.extend(
             patterns(
                 "django.views.static",
                 (
                     r"^%s%s/(?P<path>.*)$" % (prefix, short_name),
                     "serve",
                     {"document_root": source, "show_indexes": False},
                 ),
             )
         )
     else:
         logger.info("Setting up symlink %s -> %s.", target, source)
         symlink = getattr(os, "symlink", None)
         if symlink is not None:
             symlink(source, target)
Ejemplo n.º 2
0
    def unused_get_media_urls(self):
        # ~ print "20121110 get_urls"
        urlpatterns = []
        from os.path import exists, join, abspath, dirname

        logger.info("Checking /media URLs ")
        prefix = settings.MEDIA_URL[1:]
        assert prefix.endswith("/")

        def setup_media_link(short_name, attr_name=None, source=None):
            target = join(settings.MEDIA_ROOT, short_name)
            if exists(target):
                return
            if attr_name:
                source = getattr(settings.SITE, attr_name)
                if not source:
                    raise Exception("%s does not exist and LINO.%s is not set." % (target, attr_name))
            if not exists(source):
                raise Exception("LINO.%s (%s) does not exist" % (attr_name, source))
            if is_devserver():
                urlpatterns.extend(
                    patterns(
                        "django.views.static",
                        (
                            r"^%s%s/(?P<path>.*)$" % (prefix, short_name),
                            "serve",
                            {"document_root": source, "show_indexes": False},
                        ),
                    )
                )
            else:
                logger.info("Setting up symlink %s -> %s.", target, source)
                symlink = getattr(os, "symlink", None)
                if symlink is not None:
                    symlink(source, target)

        if not settings.SITE.extjs_base_url:
            setup_media_link("extjs", "extjs_root")
        if settings.SITE.use_bootstrap:
            setup_media_link("bootstrap", "bootstrap_root")
        if settings.SITE.use_jasmine:
            setup_media_link("jasmine", "jasmine_root")
        if settings.SITE.use_extensible:
            setup_media_link("extensible", "extensible_root")
        if settings.SITE.use_tinymce:
            setup_media_link("tinymce", "tinymce_root")
        if settings.SITE.use_eid_jslib:
            setup_media_link("eid-jslib", "eid_jslib_root")

        setup_media_link("lino", source=join(dirname(lino.__file__), "..", "media"))

        if is_devserver():
            urlpatterns += patterns(
                "django.views.static",
                (r"^%s(?P<path>.*)$" % prefix, "serve", {"document_root": settings.MEDIA_ROOT, "show_indexes": True}),
            )

        return urlpatterns
Ejemplo n.º 3
0
    def get_media_urls(self):
        #~ print "20121110 get_media_urls"
        from lino.core.dbutils import is_devserver
        from django.conf import settings

        urlpatterns = []

        logger.debug("Checking /media URLs ")
        prefix = settings.MEDIA_URL[1:]
        if not prefix.endswith('/'):
            raise Exception("MEDIA_URL %r doesn't end with a '/'!" %
                            settings.MEDIA_URL)

        # if not self.site.extjs_base_url:
        #     self.setup_media_link(urlpatterns, 'extjs', 'extjs_root')

        # if self.site.use_bootstrap:
        #     if not self.site.bootstrap_base_url:
        #         self.setup_media_link(urlpatterns,
        #             'bootstrap', 'bootstrap_root')

        for p in self.site.installed_plugins:
            if isinstance(p, LinoPlugin):
                p.setup_media_links(self, urlpatterns)

        if self.site.use_tinymce:
            if not self.site.tinymce_base_url:
                self.setup_media_link(urlpatterns,
                    'tinymce', 'tinymce_root')
        if self.site.use_jasmine:
            self.setup_media_link(urlpatterns,
                'jasmine', 'jasmine_root')
        # if self.site.use_eid_jslib:
        #     self.setup_media_link(urlpatterns,
        #         'eid-jslib', 'eid_jslib_root')

        try:
            self.setup_media_link(urlpatterns,
                'lino', source=resource_filename(
                    Requirement.parse("lino"), "lino/media"))
        except DistributionNotFound:
            # if it is not installed using pip, link directly to the source
            # tree
            self.setup_media_link(urlpatterns,
                'lino', source=join(dirname(lino.__file__), 'media'))

        #~ logger.info("20130409 is_devserver() returns %s.",is_devserver())
        if is_devserver():
            urlpatterns += patterns('django.views.static',
                                    (r'^%s(?P<path>.*)$' % prefix, 'serve',
                                     {'document_root': settings.MEDIA_ROOT,
                                      'show_indexes': True}),
                                    )

        return urlpatterns
Ejemplo n.º 4
0
    def __init__(self, site):
        # logger.info("20140227 Kernel.__init__() a")
        self.pending_threads = {}
        self.site = site
        self.kernel_startup(site)

        if site.build_js_cache_on_startup is None:
            site.build_js_cache_on_startup = not (
                settings.DEBUG or is_devserver())

        web.site_setup(site)

        for a in actors.actors_list:
            if a.get_welcome_messages is not None:
                site._welcome_actors.append(a)

        pre_ui_build.send(self)

        # self.plain_renderer = PlainRenderer(self)
        self.text_renderer = TextRenderer(self)
        self.reserved_names = [getattr(constants, n)
                               for n in constants.URL_PARAMS]

        names = set()
        for n in self.reserved_names:
            if n in names:
                raise Exception("Duplicate reserved name %r" % n)
            names.add(n)

        for p in site.installed_plugins:
            if isinstance(p, LinoPlugin):
                p.on_ui_init(self)

        ui = self.site.plugins.resolve(self.site.default_ui)
        if ui is None:
            raise Exception(
                "No installed app labelled %r"
                % self.site.default_ui)
        ui.url_prefix = None
        self.default_renderer = ui.renderer

        post_ui_build.send(self)

        # trigger creation of params_layout.params_store
        for res in actors.actors_list:
            for ba in res.get_actions():
                if ba.action.params_layout is not None:
                    ba.action.params_layout.get_layout_handle(self)
Ejemplo n.º 5
0
 def setup_media_link(self, urlpatterns, short_name,
                      attr_name=None, source=None):
     if not exists(settings.MEDIA_ROOT):
         logger.info("MEDIA_ROOT does not exist: %s",
                     settings.MEDIA_ROOT)
         return
     prefix = settings.MEDIA_URL[1:]
     target = join(settings.MEDIA_ROOT, short_name)
     if exists(target):
         logger.debug("media path exists: %s", target)
         return
     if attr_name is not None:
         # usage is deprecated
         source = getattr(self.site, attr_name)
         if not source:
             raise Exception(
                 "%s does not exist and SITE.%s is not set." % (
                     target, attr_name))
         if not exists(source):
             raise Exception("SITE.%s (%s) does not exist" %
                             (attr_name, source))
     elif not exists(source):
         raise Exception("%s does not exist" % source)
     if is_devserver():
         logger.debug("django.views.static serving /%s%s from %s",
                      prefix, short_name, source)
         urlpatterns.extend(
             patterns(
                 'django.views.static',
                 (r'^%s%s/(?P<path>.*)$' % (prefix, short_name),
                  'serve', {
                      'document_root': source,
                      'show_indexes': False})))
     else:
         symlink = getattr(os, 'symlink', None)
         if symlink is None:
             logger.warning("Cannot create symlink %s -> %s.",
                            target, source)
             #~ raise Exception("Cannot run a production server on an OS that doesn't have symlinks")
         else:
             logger.info("Create symlink %s -> %s.", target, source)
             try:
                 symlink(source, target)
             except OSError as e:
                 raise OSError(
                     "Failed to create symlink %s -> %s : %s",
                     target, source, e)