~lutostag/ubuntu/trusty/maas/1.5.2+packagefix

« back to all changes in this revision

Viewing changes to src/maasserver/testing/__init__.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2014-03-28 10:43:53 UTC
  • mto: This revision was merged to the branch mainline in revision 57.
  • Revision ID: package-import@ubuntu.com-20140328104353-ekpolg0pm5xnvq2s
Tags: upstream-1.5+bzr2204
ImportĀ upstreamĀ versionĀ 1.5+bzr2204

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
    "get_content_links",
18
18
    "get_data",
19
19
    "get_prefixed_form_data",
 
20
    "NoReceivers",
20
21
    "reload_object",
21
22
    "reload_objects",
22
23
    ]
23
24
 
 
25
import collections
 
26
from contextlib import contextmanager
24
27
import httplib
 
28
from itertools import chain
25
29
import os
26
30
from urlparse import urlparse
27
31
 
134
138
        in the document.
135
139
    """
136
140
    doc = fromstring(response.content)
137
 
    links_per_matching_node = [
 
141
    links_per_matching_node = chain.from_iterable(
138
142
        [elem.get('href') for elem in matching_node.cssselect('a')]
139
143
        for matching_node in doc.cssselect(element)
140
 
        ]
141
 
    return sum(links_per_matching_node, [])
 
144
    )
 
145
    return list(links_per_matching_node)
 
146
 
 
147
 
 
148
@contextmanager
 
149
def NoReceivers(signals):
 
150
    """Disconnect signal receivers from the supplied signals.
 
151
 
 
152
    :param signals: A signal (or iterable of signals) for which to disable
 
153
        signal receivers while in the context manager.
 
154
    :type signal: django.dispatch.Signal
 
155
    """
 
156
    saved = dict()
 
157
    if not isinstance(signals, collections.Iterable):
 
158
        signals = [signals]
 
159
    for signal in signals:
 
160
        saved[signal] = signal.receivers
 
161
        signal.receivers = []
 
162
    try:
 
163
        yield
 
164
    finally:
 
165
        for signal in signals:
 
166
            signal.receivers = saved[signal]