Пример #1
0
 def test_with_multiple_signals(self):
     signal1 = Signal(providing_args=[u'message'])
     signal2 = Signal(providing_args=[u'message'])
     original_receiver = mock.Mock()
     signal1.connect(original_receiver)
     signal2.connect(original_receiver)
     signal1.send(sender=None, message=u'before')
     signal2.send(sender=None, message=u'before')
     with override_signals(signal1, signal2):
         new_receiver = mock.Mock()
         signal1.connect(new_receiver)
         signal2.connect(new_receiver)
         signal1.send(sender=None, message=u'overriden')
         signal2.send(sender=None, message=u'overriden')
     signal1.send(sender=None, message=u'after')
     signal2.send(sender=None, message=u'after')
     self.assertEqual(original_receiver.mock_calls, [
         mock.call(message=u'before', sender=None, signal=signal1),
         mock.call(message=u'before', sender=None, signal=signal2),
         mock.call(message=u'after', sender=None, signal=signal1),
         mock.call(message=u'after', sender=None, signal=signal2),
         ])
     self.assertEqual(new_receiver.mock_calls, [
         mock.call(message=u'overriden', sender=None, signal=signal1),
         mock.call(message=u'overriden', sender=None, signal=signal2),
         ])
Пример #2
0
 def test_with_multiple_signals(self):
     signal1 = Signal(providing_args=[u'message'])
     signal2 = Signal(providing_args=[u'message'])
     original_receiver = mock.Mock()
     signal1.connect(original_receiver)
     signal2.connect(original_receiver)
     signal1.send(sender=None, message=u'before')
     signal2.send(sender=None, message=u'before')
     with override_signals(signal1, signal2):
         new_receiver = mock.Mock()
         signal1.connect(new_receiver)
         signal2.connect(new_receiver)
         signal1.send(sender=None, message=u'overriden')
         signal2.send(sender=None, message=u'overriden')
     signal1.send(sender=None, message=u'after')
     signal2.send(sender=None, message=u'after')
     self.assertEqual(original_receiver.mock_calls, [
         mock.call(message=u'before', sender=None, signal=signal1),
         mock.call(message=u'before', sender=None, signal=signal2),
         mock.call(message=u'after', sender=None, signal=signal1),
         mock.call(message=u'after', sender=None, signal=signal2),
     ])
     self.assertEqual(new_receiver.mock_calls, [
         mock.call(message=u'overriden', sender=None, signal=signal1),
         mock.call(message=u'overriden', sender=None, signal=signal2),
     ])
Пример #3
0
 def test_new_receiver_gets_only_overriden_signal(self):
     u"""
     Checks that receivers registered inside ``override_signals`` context get only signals
     emitted inside the context block.
     """
     signal = Signal(providing_args=[u'message'])
     signal.send(sender=None, message=u'before')
     with override_signals(signal):
         new_receiver = mock.Mock()
         signal.connect(new_receiver)
         signal.send(sender=None, message=u'overriden')
     signal.send(sender=None, message=u'after')
     self.assertEqual(new_receiver.mock_calls, [
         mock.call(message=u'overriden', sender=None, signal=signal),
         ])
Пример #4
0
 def test_new_receiver_gets_only_overriden_signal(self):
     u"""
     Checks that receivers registered inside ``override_signals`` context get only signals
     emitted inside the context block.
     """
     signal = Signal(providing_args=[u'message'])
     signal.send(sender=None, message=u'before')
     with override_signals(signal):
         new_receiver = mock.Mock()
         signal.connect(new_receiver)
         signal.send(sender=None, message=u'overriden')
     signal.send(sender=None, message=u'after')
     self.assertEqual(new_receiver.mock_calls, [
         mock.call(message=u'overriden', sender=None, signal=signal),
     ])
Пример #5
0
 def test_original_receiver_does_not_get_overriden_signal(self):
     u"""
     Checks that receivers registered outside ``override_signals`` context do not get signals
     emitted inside the context block.
     """
     signal = Signal(providing_args=[u'message'])
     original_receiver = mock.Mock()
     signal.connect(original_receiver)
     signal.send(sender=None, message=u'before')
     with override_signals(signal):
         signal.send(sender=None, message=u'overriden')
     signal.send(sender=None, message=u'after')
     self.assertEqual(original_receiver.mock_calls, [
         mock.call(message=u'before', sender=None, signal=signal),
         mock.call(message=u'after', sender=None, signal=signal),
         ])
Пример #6
0
 def test_original_receiver_does_not_get_overriden_signal(self):
     u"""
     Checks that receivers registered outside ``override_signals`` context do not get signals
     emitted inside the context block.
     """
     signal = Signal(providing_args=[u'message'])
     original_receiver = mock.Mock()
     signal.connect(original_receiver)
     signal.send(sender=None, message=u'before')
     with override_signals(signal):
         signal.send(sender=None, message=u'overriden')
     signal.send(sender=None, message=u'after')
     self.assertEqual(original_receiver.mock_calls, [
         mock.call(message=u'before', sender=None, signal=signal),
         mock.call(message=u'after', sender=None, signal=signal),
     ])
Пример #7
0
    def mockSignal(self, signal: Signal) -> typing.Iterator[mock.Mock]:  # pylint: disable=invalid-name
        """Context manager to attach a mock to the given signal."""

        # This function is only here to create an autospec. From the documentation:
        #
        #   Notice that the function takes a sender argument, along with wildcard keyword arguments
        #   (**kwargs); all signal handlers must take these arguments.
        #
        # https://docs.djangoproject.com/en/dev/topics/signals/#connecting-to-specific-signals
        def callback(sender: models.Model, **kwargs: typing.Any) -> None:  # pragma: no cover
            # pylint: disable=unused-argument
            pass

        signal_mock = mock.create_autospec(callback, spec_set=True)
        signal.connect(signal_mock)
        try:
            yield signal_mock
        finally:
            signal.disconnect(signal_mock)
Пример #8
0
 def test_email_not_sent_when_watcher_removed(self, notifications):
     dispatch_uid = "publicweb.models.decision_signal_handler"
     Signal.disconnect(signals.post_save, sender=Decision,
                       dispatch_uid=dispatch_uid)
     decision = self.create_and_return_decision()
     data = {
           'description': decision.description,
           'status': decision.status,
           'deadline': decision.deadline,
           'people': decision.people,
           'watch': True
     }
     form = DecisionForm(data, instance=decision)
     form.watch = False
     form.is_valid()
     form.save()
     Signal.connect(
         signals.post_save,
         sender=Decision,
         receiver=decision_signal_handler,
         dispatch_uid=dispatch_uid
     )
     self.assertFalse(notifications.called)
Пример #9
0
        return

    try:
        domain_obj = Domain.get_by_name(application.domain)
        cc_config = domain_obj.call_center_config
        if not cc_config or not (cc_config.fixtures_are_active() and cc_config.config_is_valid()):
            return

        app_config = get_call_center_config_from_app(application)
        save = cc_config.update_from_app_config(app_config)
        if save:
            cc_config.save()
    except Exception:
        notify_exception(None, "Error updating CallCenter config for app build")


def expire_latest_enabled_build_profiles(sender, application, **kwargs):
    if application.copy_of and toggles.RELEASE_BUILDS_PER_PROFILE.enabled(application.domain):
        for build_profile_id in application.build_profiles:
            get_latest_enabled_build_for_profile.clear(application.domain, build_profile_id)
        get_latest_enabled_versions_per_profile.clear(application.copy_of)


app_post_save = Signal(providing_args=['application'])

app_post_save.connect(create_app_structure_repeat_records)
app_post_save.connect(update_callcenter_config)
app_post_save.connect(expire_latest_enabled_build_profiles)

app_post_release = Signal(providing_args=['application'])
Пример #10
0
import json
from django.dispatch.dispatcher import Signal

invite_recieved = Signal(providing_args=["from", "to"])

def match(sender, **kwargs):
    """Trap the signal and do whatever is needed"""
    """
		1)create topic
		2)subscribe sender_id,receiver_id to this topic
		3)Publish message
		4)delete topic
		*check if message goes when phone is switched off and i delete the topic
	"""
    from_user = kwargs['from']
    to_user = kwargs['to']
    topic = get_topic_arn("hello")
	#endpoint_sender = notifications.objects.get(user_id=sender_id).values_list('endpoint', flat=True)
	#endpoint_receiver = notifications.objects.get(user_id=receiver_id).values_list('endpoint', flat=True)
	subscribe_to_topic(TopicArn=topic, EndpointArn=create_platform_endpoint(token='APA91bEANg9ULweUM2eFbs1LHuDar3bF16aGb1uwsSufm9Eek6azzW1NoViRasFJ8Afla4FVSrVwlDoXlUG6e8F6kLxrPyOXHypM83CiB6VpQDBNtfOLNuX8SDmGtB18x3HZbxAcHx7_T7sDaZ99Z4LGdX_58blwa5qGySi9ewPBO7fi7CibA9U'))
	print topic
	#subscribe_to_topic(TopicArn=topic, EndpointArn=endpoint_receiver[0])
	message = {'type':'match','users':[sender_id, receiver_id]}
	print message
	publish(TopicArn=topic, message=json.dumps(message))
	delete_topic(topic)

    # Write to log, update db, send mail etc.

invite_recieved.connect(match)
Пример #11
0
from django.dispatch.dispatcher import Signal


def create_app_structure_repeat_records(sender, application, **kwargs):
    from corehq.motech.repeaters.models import AppStructureRepeater
    domain = application.domain
    if domain:
        repeaters = AppStructureRepeater.by_domain(domain)
        for repeater in repeaters:
            repeater.register(application)


app_post_save = Signal(providing_args=['application'])

app_post_save.connect(create_app_structure_repeat_records)

app_post_release = Signal(providing_args=['application'])
Пример #12
0
from django.dispatch.dispatcher import Signal
from app import signal_handlers
import sys


# import logging
# logger = logging.getLogger(__name__)

notification_via_sms = Signal(providing_args=["frm", "to", "message", "frm_alias"])
notification_via_sms.connect(signal_handlers.notify_via_sms)
Пример #13
0
from django.dispatch.dispatcher import Signal
from order.models import Checkout
from inventory.models import Product

def update_product_quantity_handler(checkout:Checkout):
    product = checkout.product
    product.qty = product.qty - checkout.amount
    product.save()


Signal.connect(receiver=update_product_quantity_handler, sender=Checkout, dispatch_uid="update_product_quantity_handler")

Пример #14
0
        if app and hasattr(app, "langs"):
            try:
                lang = xform.openrosa_headers[OPENROSA_ACCEPT_LANGUAGE]
            except (AttributeError, KeyError):
                lang = "default"
            if lang == "default":
                lang = app.build_langs[0] if app.build_langs else None
            message = app.success_message.get(lang)
            if message:
                success_message = SuccessMessage(message, userID, domain=domain, tz=timedelta(hours=0)).render()
                return ReceiverResult(
                    xml.get_simple_response_xml(success_message, nature=ResponseNature.SUBMIT_SUCCESS), Certainty.STRONG
                )


def create_app_structure_repeat_records(sender, application, **kwargs):
    from corehq.apps.app_manager.models import AppStructureRepeater

    domain = application.domain
    if domain:
        repeaters = AppStructureRepeater.by_domain(domain)
        for repeater in repeaters:
            repeater.register(application)


successful_form_received.connect(get_custom_response_message)

app_post_save = Signal(providing_args=["application"])

app_post_save.connect(create_app_structure_repeat_records)
Пример #15
0
from django.conf import settings
from django.dispatch.dispatcher import Signal
from django.template import loader
from django.template.loader import render_to_string, BaseLoader
from django.test.testcases import TestCase


build_response = Signal()

def buildresponse(sender, **kwargs):
    for name in dir(http):
        obj = getattr(http, name)
        if getattr(obj, 'status_code', None) == sender.status_code:
            sender.response = obj(sender.content)
            return
build_response.connect(buildresponse)

view = Signal()

class expertmiddleware:
    def __init__(self):
        loader.template_source_loaders = (templateloader(),)
    
    def process_request(self, request):
        view.send(sender=request)
        if hasattr(request, 'response'):
            return request.response

render_template = Signal()

def render(sender, **kwargs):
Пример #16
0
        cc_config = domain_obj.call_center_config
        if not cc_config or not (cc_config.fixtures_are_active()
                                 and cc_config.config_is_valid()):
            return

        app_config = get_call_center_config_from_app(application)
        save = cc_config.update_from_app_config(app_config)
        if save:
            cc_config.save()
    except Exception:
        notify_exception(None,
                         "Error updating CallCenter config for app build")


def expire_latest_enabled_build_profiles(sender, application, **kwargs):
    if application.copy_of and toggles.RELEASE_BUILDS_PER_PROFILE.enabled(
            application.domain):
        for build_profile_id in application.build_profiles:
            get_latest_enabled_build_for_profile.clear(application.domain,
                                                       build_profile_id)
        get_latest_enabled_versions_per_profile.clear(application.copy_of)


app_post_save = Signal(providing_args=['application'])

app_post_save.connect(create_app_structure_repeat_records)
app_post_save.connect(update_callcenter_config)
app_post_save.connect(expire_latest_enabled_build_profiles)

app_post_release = Signal(providing_args=['application'])
Пример #17
0
'''
Created on Sep 1, 2012

@author: staticfish
'''
from django.dispatch.dispatcher import Signal
from workflow.views import post_attach_queue_save
from tracker import views as tracker_views
from tracker.models import WeekSnapshot
from timeoff import views as timeoff_views
from timeoff.models import BookTimeOff
from overtime import views as overtime_views

post_attach_queue_save_event = Signal(providing_args=['instance', 'is_draft'])
post_attach_queue_save_event.connect(post_attach_queue_save, dispatch_uid='#weeksnapshot#')

post_final_status_event = Signal(providing_args=['instance', 'status'])
post_final_status_event.connect(tracker_views.post_final_status_update, sender=WeekSnapshot, dispatch_uid='#timeshet.weeksnapshot.approverqueue#')
post_final_status_event.connect(overtime_views.weeksnapshot_post_final_status_update, sender=WeekSnapshot, dispatch_uid='#overtime.weeksnapshot.approverqueue#')
post_final_status_event.connect(timeoff_views.post_final_status_update, sender=BookTimeOff, dispatch_uid='#booktimeoff.approverqueue#')
Пример #18
0
def update_project_careplan_config(sender, application, **kwargs):
    domain_name = application.domain
    config = CareplanConfig.for_domain(domain_name)

    if application.doc_type == 'Application-Deleted':
        if application.has_careplan_module:
            careplan_removed(domain_name, config, application.get_id)


def update_project_careplan_config_release(sender, application, **kwargs):
    domain_name = application.domain
    config = CareplanConfig.for_domain(domain_name)
    parent_app_id = application.copy_of

    latest_app = application.get_latest_app(released_only=True)
    if latest_app and latest_app.is_released and latest_app.has_careplan_module:
        config = config or CareplanConfig(domain=domain_name)
        update_careplan_config(config, parent_app_id, latest_app)
    else:
        careplan_removed(domain_name, config, parent_app_id)


app_post_save = Signal(providing_args=['application'])

app_post_save.connect(create_app_structure_repeat_records)
app_post_save.connect(update_project_careplan_config)

app_post_release = Signal(providing_args=['application'])
app_post_release.connect(update_project_careplan_config_release)
Пример #19
0
        product.stock += instance.amount
        product.save()
        signal_customizado_product_stock_changed.send(sender=None,
                                                      instance=product)


def send_mail_stock_max_overload(sender, instance, **kwargs):
    if instance.stock > instance.stock_max:
        StockGreaterMax(instance).send(MAIL_BOSS)


def test_update_post_save(sender, instance, created, **kwargs):
    print('Created? ==> ', created)


def test_pre_save(sender, instance, **kwargs):
    print('PRE_SAVE')
    print('instance ==> ', instance)


# Maneira ~1
post_save.connect(increment_stock, sender=StockEntry)
post_save.connect(test_update_post_save, sender=StockEntry)

pre_save.connect(test_pre_save, sender=StockEntry)
signal_customizado_product_stock_changed.connect(send_mail_stock_max_overload,
                                                 sender=None)

# Maneira ~2
# lógica em 'app.py' no método 'ready'
Пример #20
0
                        context={
                            'recipient_name':dude_full_name,
                            'post':post.id,
                            'full_name':owner_profile.facebook_name(),
                        },
                    )'''
            except:
                pass

        x = post.get_thumbnail_set_urls()

    return


post_created_signal.connect(post_save_hndlr,
                            sender=ItemForSale,
                            dispatch_uid="post_post_creating_thingy_aweaerf")


def add_name_to_email(name, email):
    """
    Returns "INSERT NAME" <INSERT EMAIL>
    formatting
    """
    return '"' + name + '"' + ' <' + email + '>'


def comment_save_hndlr(sender, **kwargs):
    ''' notify the seller that someone commented '''

    if sender == Comment:
Пример #21
0
def send_email_stock_max(sender, instance, **kwargs):
    if instance.stock > instance.stock_max:
        StockGreaterMax(instance).send(EMAIL_BOSS)


def test_save(sender, instance, created, **kwargs):
    print(created)


def test_pre_save(sender, instance, **kwargs):
    print("Pre save disparado")


# signal
post_save.connect(increment_stock, sender=StockEntry)
product_stock_changed.connect(send_email_stock_max, sender=None)

# post_save.connect(test_save, sender=StockEntry)
# pre_save.connect(test_pre_save, sender=StockEntry)

"""
m2m_changed - alteração em relacionamento NxM
pre_save - antes de salvar
post_save - depois de salvar
pre_delete - antes de excluir
post_delete - depois de excluir
request_started - quando uma requisição é recebida
request_finished - quando uma requisição estiver pronta para ser enviada
"""
Пример #22
0
@receiver(user_logged_out)
def user_logged_out(request, user, **kwargs):
    action.send(request.user, verb='Logged out')


tickets_received = Signal(providing_args=['user', 'amount'])


def tickets_received_handler(sender, user, amount, **kwargs):
    print "tickets received"
    action.send(sender,
                verb='gave ' + str(amount) + ' tickets to ',
                target=user)


tickets_received.connect(tickets_received_handler)

tickets_entered = Signal(providing_args=['amount', 'raffle'])


def tickets_entered_handler(sender, amount, raffle, **kwargs):
    print "tickets entered"
    action.send(sender,
                verb='entered ' + str(amount) + ' tickets into ',
                target=raffle)


tickets_entered.connect(tickets_entered_handler)

tickets_redeemed = Signal(providing_args=['amount', 'ticket_opportunity'])
Пример #23
0
from django.db.models.signals import post_save
from django.db.utils import DatabaseError
import logging
from .update import PassbookChannels
from django.conf import settings
from django.dispatch.dispatcher import Signal

logger = logging.getLogger("passbook")

NOTIFICATION_CLASS = getattr(settings, "NOTIFICATION_CLASS", "PassbookChannels")

if NOTIFICATION_CLASS == "PassbookChannels":
    channel_instance = PassbookChannels()
    channel = channel_instance.notify
    logger.debug("Use Apple APN for pass")
else:
    channel = NOTIFICATION_CLASS()
    logger.debug("Use Custom channel")

pass_update = Signal(providing_args=["signer", "token"])


def notify_device(sender, signer, token, **kwarg):
    logger.debug("receive notification")
    channel(signer, token)


pass_update.connect(notify_device)
Пример #24
0
    domain_name = application.domain
    config = CareplanConfig.for_domain(domain_name)

    if application.doc_type == 'Application-Deleted':
        if application.has_careplan_module:
            careplan_removed(domain_name, config, application.get_id)


def update_project_careplan_config_release(sender, application, **kwargs):
    domain_name = application.domain
    config = CareplanConfig.for_domain(domain_name)
    parent_app_id = application.copy_of

    latest_app = application.get_latest_app(released_only=True)
    if latest_app and latest_app.is_released and latest_app.has_careplan_module:
        config = config or CareplanConfig(domain=domain_name)
        update_careplan_config(config, parent_app_id, latest_app)
    else:
        careplan_removed(domain_name, config, parent_app_id)


successful_form_received.connect(get_custom_response_message)

app_post_save = Signal(providing_args=['application'])

app_post_save.connect(create_app_structure_repeat_records)
app_post_save.connect(update_project_careplan_config)

app_post_release = Signal(providing_args=['application'])
app_post_release.connect(update_project_careplan_config_release)
Пример #25
0
    def url(self, path):
        """
        Return urlquote path name
        """
        path = self.check( path )
        return self.fs.url( path )


def remove_cache( sender, **kwargs ):
    """
    Signal receiver function.
    It is delete cache files of all parent dirs
    if some files changed in directory.
    """
    HashBilder = FileUnicName( )
    lib = sender.lib
    dir = kwargs["basedir"]
    # if not system directories
    if not dir.startswith( settings.LIMITED_CACHE_PATH ) and dir != settings.LIMITED_TRASH_PATH:
        try:
            node = lib.cache.getName( *FilePath.split( dir ) )
            if node != None:
                node.setHash( HashBilder.time( ) )
                from limited.core.models import FileLib

                FileLib.objects.filter( id=lib.id ).update( cache=lib.cache )
        except Exception as e:
            logger.error( u"{0}. dir:{1}".format( e, dir ) )

file_pre_change.connect( remove_cache )