Esempio n. 1
0
    def __call__(self, message, status=None,
        overwrite=False,
        **extra_payload):

        if response is None:
            raise ValueError("Must provide a response object or "
                "configure a callable that provides one")

        payload = []

        if not overwrite and request:
            try:
                # Get payload, if already set before
                payload = request.environ['webflash.payload']
                payload = json.loads(url_unquote(payload))
                log.debug("Got payload from environ %d", id(request.environ))
                if isinstance(payload, dict):
                    log.debug('Upgrading old-style payload...')
                    payload = [payload]
            except:
                # No previous payload set before
                pass

        payload.append(
            dict(
                # Force the message to be unicode so lazystrings, etc... are coerced
                message=unicode_text(message),
                status=status or self.default_status,
                **extra_payload
            ))

        payload = url_quote(json.dumps(payload))

        if request:
            # Save the payload in environ too in case JavaScript is not being
            # used and the message is being displayed in the same request.
            request.environ['webflash.payload'] = payload
            log.debug("Setting payload in environ %d", id(request.environ))
        log.debug("Setting payload in cookie")
        response.set_cookie(self.cookie_name, payload)

        if len(response.headers['Set-Cookie']) > 4096:
            raise ValueError('Flash value is too long (cookie would be >4k)')
Esempio n. 2
0
 def _prepare_payload(self, **data):
     return url_quote(json.dumps(data))
Esempio n. 3
0
File: flash.py Progetto: Cito/tg2
 def prepare_payload(self, **data):
     return url_quote(json.dumps(data))