def get_cooked_bundles(self): """ Get the cooked bundles """ request = get_top_request(self.request) # might be a subrequest # theme specific set bundles enabled_bundles = set(self.theme_enabled_bundles) disabled_bundles = set(self.theme_disabled_bundles) # Request set bundles enabled_bundles.update(getattr(request, "enabled_bundles", [])) disabled_bundles.update(getattr(request, "disabled_bundles", [])) for key, bundle in self.get_bundles().items(): # The diazo manifest and request bundles are more important than # the disabled bundle on registry. # We can access the site with diazo.off=1 without diazo bundles if ( key in disabled_bundles or (key not in enabled_bundles and not bundle.enabled) or not self.eval_expression(bundle.expression, bundle.name) ): continue yield key, bundle
def __init__(self, request): top_request = get_top_request(request) # Just add the bundle from plone.patternslib. # If it's not available, it wont't hurt. add_bundle_on_request(top_request, 'bundle-leaflet') super(GeolocationWidget, self).__init__(request)
def filter_id(self): request = get_top_request(self.request) portlethash = request.form.get( 'portlethash', getattr(self, '__portlet_metadata__', {}).get('hash', '') ) return portlethash
def scripts(self): """The requirejs scripts, the ones that are not resources are loaded on configjs.py """ if self.debug_mode or self.development or not self.production_path: result = self.default_resources() result.extend(self.ordered_bundles_result()) else: result = [{ 'src': '{0}/++plone++{1}'.format(self.site_url, self.production_path + '/default.js'), 'conditionalcomment': None, 'bundle': 'production', 'async': None, # Do not load ``async`` or 'defer': None # ``defer`` for production bundles. }] if not self.anonymous: result.append({ 'src': '{0}/++plone++{1}'.format( self.site_url, self.production_path + '/logged-in.js'), 'conditionalcomment': None, 'bundle': 'production', 'async': None, # Do not load ``async`` or 'defer': None # ``defer`` for production bundles. }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources request = get_top_request(self.request) # might be a subrequest enabled_resources = getattr(request, 'enabled_resources', []) if enabled_resources: self._add_resources(enabled_resources, result) # Add diazo url origin = None if self.diazo_production_js and not self.development: origin = self.diazo_production_js if self.diazo_development_js and self.development: origin = self.diazo_development_js if origin: result.append({ 'bundle': 'diazo', 'conditionalcomment': '', 'src': '{0}/{1}'.format(self.site_url, origin), }) return result
def scripts(self): """The requirejs scripts, the ones that are not resources are loaded on configjs.py """ if self.debug_mode or self.development or not self.production_path: result = self.default_resources() result.extend(self.ordered_bundles_result()) else: result = [{ 'src': '{0}/++plone++{1}'.format( self.site_url, self.production_path + '/default.js' ), 'conditionalcomment': None, 'bundle': 'production', 'async': None, # Do not load ``async`` or 'defer': None # ``defer`` for production bundles. }] if not self.anonymous: result.append({ 'src': '{0}/++plone++{1}'.format( self.site_url, self.production_path + '/logged-in.js' ), 'conditionalcomment': None, 'bundle': 'production', 'async': None, # Do not load ``async`` or 'defer': None # ``defer`` for production bundles. }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources request = get_top_request(self.request) # might be a subrequest enabled_resources = getattr(request, 'enabled_resources', []) if enabled_resources: self._add_resources(enabled_resources, result) # Add diazo url origin = None if self.diazo_production_js and not self.development: origin = self.diazo_production_js if self.diazo_development_js and self.development: origin = self.diazo_development_js if origin: result.append({ 'bundle': 'diazo', 'conditionalcomment': '', 'src': '{0}/{1}'.format(self.site_url, origin), }) return result
def test_get_top_request(self): """If in a subrequest, ``get_top_request`` should always return the top most request. """ from Products.CMFPlone.utils import get_top_request class MockRequest(object): def __init__(self, parent_request=None): self._dict = {} if parent_request: self._dict['PARENT_REQUEST'] = parent_request alsoProvides(self, ISubRequest) def get(self, key, default=None): return self._dict.get(key, default) req0 = MockRequest() req1 = MockRequest(req0) req2 = MockRequest(req1) self.assertEqual(get_top_request(req0), req0) self.assertEqual(get_top_request(req1), req0) self.assertEqual(get_top_request(req2), req0)
def __init__(self, context, request): venue_uid = request.get('uid', None) if venue_uid: venue_obj = uuidToObject(venue_uid) if venue_obj: # Change the context to the one of the uid referenced object. # That's the easiest way to render a venue from a different # subsite on any context. However, this might lead to broken # urls in for the edit bar. context = venue_obj top_request = get_top_request(request) # Just add the bundle from plone.patternslib. # If it's not available, it wont't hurt. add_bundle_on_request(top_request, 'bundle-leaflet') self.context = context self.request = request
def styles(self): """ Get all the styles """ if self.development or self.debug_mode or not self.production_path: result = self.ordered_bundles_result() else: result = [ { 'src': '%s/++plone++%s' % (self.site_url, self.production_path + '/default.css'), 'conditionalcomment': None, 'rel': 'stylesheet', 'bundle': 'production' }, ] if not self.anonymous: result.append({ 'src': '%s/++plone++%s' % (self.site_url, self.production_path + '/logged-in.css'), 'conditionalcomment': None, 'rel': 'stylesheet', 'bundle': 'production' }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources resources = self.get_resources() request = get_top_request(self.request) # might be a subrequest if hasattr(request, 'enabled_resources'): for resource in request.enabled_resources: if resource in resources: for data in self.get_urls(resources[resource], None): result.append(data) # Add diazo css origin = None if self.diazo_production_css and self.development is False: origin = self.diazo_production_css if self.diazo_development_css and self.development is True: origin = self.diazo_development_css if origin: url = parse.urlparse(origin) if url.netloc == '': # Local src = "%s/%s" % (self.site_url, origin) else: src = "%s" % (origin) extension = url.path.split('.')[-1] rel = 'stylesheet' if extension != '' and extension != 'css': rel = "stylesheet/%s" % extension data = { 'rel': rel, 'conditionalcomment': '', 'src': src, 'bundle': 'diazo' } result.append(data) # custom.css custom_css = { 'rel': 'stylesheet', 'conditionalcomment': '', 'src': "{0}/custom.css?timestamp={1}".format( self.site_url, self.custom_css_timestamp, ), 'bundle': 'custom-css' } result.append(custom_css) return result
def top_request(self): if not self._top_request: self._top_request = get_top_request(self.request) return self._top_request
def scripts(self): """The requirejs scripts, the ones that are not resources are loaded on configjs.py """ if self.debug_mode or self.development or not self.production_path: result = self.default_resources() result.extend(self.ordered_bundles_result()) else: # Acquire load_async and load_defer bundle options from the plone # bundle and use it for the ``default`` meta bundle. bundles = self.get_bundles() load_async = getattr(bundles.get('plone'), 'load_async', False) load_defer = getattr(bundles.get('plone'), 'load_defer', False) result = [ { 'src': '{0}/++plone++{1}'.format( self.site_url, self.production_path + '/default.js'), 'conditionalcomment': None, 'bundle': 'production', 'async': 'async' if load_async else None, 'defer': 'defer' if load_defer else None }, ] if not self.anonymous: # Acquire load_async and load_defer bundle options from the # plone-logged-in bundle and use it for the ``logged-in`` meta # bundle. load_async = getattr(bundles.get('plone-logged-in'), 'load_async', False) # noqa load_defer = getattr(bundles.get('plone-logged-in'), 'load_defer', False) # noqa result.append({ 'src': '{0}/++plone++{1}'.format( self.site_url, self.production_path + '/logged-in.js'), 'conditionalcomment': None, 'bundle': 'production', 'async': 'async' if load_async else None, 'defer': 'defer' if load_defer else None }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources request = get_top_request(self.request) # might be a subrequest enabled_resources = getattr(request, 'enabled_resources', []) if enabled_resources: self._add_resources(enabled_resources, result) # Add diazo url origin = None if self.diazo_production_js and not self.development: origin = self.diazo_production_js if self.diazo_development_js and self.development: origin = self.diazo_development_js if origin: result.append({ 'bundle': 'diazo', 'conditionalcomment': '', 'src': '{0}/{1}'.format(self.site_url, origin), }) return result
def __init__(self, context, request): super(MapsTile, self).__init__(context, request) # TODO: does not work, because CMFPlone.resources.browser.resource is # called before this one; subrequest problem top_request = get_top_request(request) add_bundle_on_request(top_request, 'bundle-leaflet')
def styles(self): """ Get all the styles """ if self.development or self.debug_mode or not self.production_path: result = self.ordered_bundles_result() else: result = [{ 'src': '%s/++plone++%s' % ( self.site_url, self.production_path + '/default.css' ), 'conditionalcomment': None, 'rel': 'stylesheet', 'bundle': 'production' }, ] if not self.anonymous: result.append({ 'src': '%s/++plone++%s' % ( self.site_url, self.production_path + '/logged-in.css' ), 'conditionalcomment': None, 'rel': 'stylesheet', 'bundle': 'production' }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources resources = self.get_resources() request = get_top_request(self.request) # might be a subrequest if hasattr(request, 'enabled_resources'): for resource in request.enabled_resources: if resource in resources: for data in self.get_urls(resources[resource], None): result.append(data) # Add diazo css origin = None if self.diazo_production_css and self.development is False: origin = self.diazo_production_css if self.diazo_development_css and self.development is True: origin = self.diazo_development_css if origin: url = urlparse(origin) if url.netloc == '': # Local src = "%s/%s" % (self.site_url, origin) else: src = "%s" % (origin) extension = url.path.split('.')[-1] rel = 'stylesheet' if extension != '' and extension != 'css': rel = "stylesheet/%s" % extension data = {'rel': rel, 'conditionalcomment': '', 'src': src, 'bundle': 'diazo'} result.append(data) return result
def styles(self): """ Get all the styles """ if self.development or self.debug_mode or not self.production_path: result = self.ordered_bundles_result() else: result = [ { "src": "{}/++plone++{}".format( self.site_url, self.production_path + "/default.css"), "conditionalcomment": None, "rel": "stylesheet", "bundle": "production", }, ] if not self.anonymous: result.append({ "src": "{}/++plone++{}".format( self.site_url, self.production_path + "/logged-in.css"), "conditionalcomment": None, "rel": "stylesheet", "bundle": "production", }) result.extend(self.ordered_bundles_result(production=True)) # Add manual added resources resources = self.get_resources() request = get_top_request(self.request) # might be a subrequest if hasattr(request, "enabled_resources"): for resource in request.enabled_resources: if resource in resources: for data in self.get_urls(resources[resource], None): result.append(data) # Add diazo css origin = None if self.diazo_production_css and self.development is False: origin = self.diazo_production_css if self.diazo_development_css and self.development is True: origin = self.diazo_development_css if origin: url = parse.urlparse(origin) if url.netloc == "": # Local src = f"{self.site_url}/{origin}" else: src = "%s" % (origin) extension = url.path.split(".")[-1] rel = "stylesheet" if extension != "" and extension != "css": rel = "stylesheet/%s" % extension data = { "rel": rel, "conditionalcomment": "", "src": src, "bundle": "diazo" } result.append(data) # custom.css if self.custom_css: custom_css = { "rel": "stylesheet", "conditionalcomment": "", "src": "{}/custom.css?timestamp={}".format( self.site_url, self.custom_css_timestamp, ), "bundle": "custom-css", } result.append(custom_css) return result