Пример #1
0
    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
Пример #4
0
    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
Пример #5
0
    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)
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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
Пример #11
0
    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
Пример #12
0
    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
Пример #13
0
 def top_request(self):
     if not self._top_request:
         self._top_request = get_top_request(self.request)
     return self._top_request
Пример #14
0
    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')
Пример #16
0
    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
Пример #17
0
    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