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)
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
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
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)
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)