def assertMessageContains(self, response, text, level=None):
        """
        Asserts that there is exactly one message containing the given text.
        """

        messages = response.context['messages']

        matches = [m for m in messages if text in m.message]

        if len(matches) == 1:
            msg = matches[0]
            if (level is not None and msg.level != level and
                    DEFAULT_TAGS[msg.level] != level):
                msg_level_txt = DEFAULT_TAGS.get(msg.level, 'NO LEVEL')
                expected_level = DEFAULT_TAGS.get(level, level)
                self.fail('There was one matching message but with different '
                          'level: %s != %s' % (msg_level_txt, expected_level))
            self.assertContains(response, text)
            return

        elif len(matches) == 0:
            messages_str = ", ".join('"%s"' % m for m in messages)
            self.fail('No message contained text "%s", messages were: %s' % (
                text, messages_str))
        else:
            self.fail('Multiple messages contained text "%s": %s' % (
                text, ", ".join(('"%s"' % m) for m in matches)))
Esempio n. 2
0
    def assertMessageContains(self, response, text, level=None):
        """
        Asserts that there is exactly one message containing the given text.
        """

        messages = response.context['messages']

        matches = [m for m in messages if text in m.message]

        if len(matches) == 1:
            msg = matches[0]
            if (level is not None and msg.level != level and
                    DEFAULT_TAGS[msg.level] != level):
                msg_level_txt = DEFAULT_TAGS.get(msg.level, 'NO LEVEL')
                expected_level = DEFAULT_TAGS.get(level, level)
                self.fail('There was one matching message but with different '
                          'level: %s != %s' % (msg_level_txt, expected_level))
            self.assertContains(response, text)
            return

        elif len(matches) == 0:
            messages_str = ", ".join('"%s"' % m for m in messages)
            self.fail('No message contained text "%s", messages were: %s' % (
                text, messages_str))
        else:
            self.fail('Multiple messages contained text "%s": %s' % (
                text, ", ".join(('"%s"' % m) for m in matches)))
Esempio n. 3
0
from collections import defaultdict
from functools import wraps
from json import dumps

from django.conf import settings
from django.conf.urls.defaults import patterns, url
from django.contrib.messages import DEFAULT_TAGS, add_message
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseRedirect
from django.utils.http import urlquote

from hitch.support.templates import render_template

HTTPS_SCHEME = getattr(settings, 'HTTPS_SCHEME', 'https')
MESSAGE_TAGS = dict([tuple(reversed(item)) for item in DEFAULT_TAGS.items()])

log = logging.getLogger(__name__)

def viewable(name, path, **params):
    params.update(name=name, path=path, viewable=True)
    params['ajax_only'] = params.get('ajax_only', False)
    params['authenticated'] = params.get('authenticated', False)
    params['secured'] = (params.get('secured', False) and HTTPS_SCHEME == 'https')
    
    def wrapper(view):
        view.__dict__.update(params)
        return view
    return wrapper

class Response(object):