def test_get_params(self):
     params = get_parsed_params('Hello {user.username} - you have completed {template_var} forms today!')
     self.assertEqual(2, len(params))
     self.assertEqual('user', params[0].namespace)
     self.assertEqual('username', params[0].variable)
     self.assertEqual(GLOBAL_NAMESPACE, params[1].namespace)
     self.assertEqual('template_var', params[1].variable)
def send_messages_for_config(config, actually_send=True):
    query_engine = QueryEngine(template_vars=config.template_variables)
    params = get_parsed_params(config.template)
    sent_messages = []
    for user in config.group.get_users():
        phone_number = get_preferred_phone_number_for_recipient(user)
        if phone_number:
            query_context = QueryContext(
                user, config.group, template_vars=config.template_variables)
            message_context = query_engine.get_context(params, query_context)
            message = config.template.format(**message_context)
            if actually_send:
                metadata = MessageMetadata(workflow=WORKFLOW_PERFORMANCE)
                if isinstance(phone_number, PhoneNumber):
                    send_sms_to_verified_number(phone_number,
                                                message,
                                                metadata=metadata)
                else:
                    send_sms(config.domain,
                             user,
                             phone_number,
                             message,
                             metadata=metadata)

            sent_messages.append(MessageResult(user, message))
    return sent_messages
Exemple #3
0
 def test_get_params(self):
     params = get_parsed_params('Hello {user.username} - you have completed {template_var} forms today!')
     self.assertEqual(2, len(params))
     self.assertEqual('user', params[0].namespace)
     self.assertEqual('username', params[0].variable)
     self.assertEqual(GLOBAL_NAMESPACE, params[1].namespace)
     self.assertEqual('template_var', params[1].variable)
 def validate(self):
     """
     Will raise an exception if it can be detected that this is invalid. This currently checks
     template validity and all global variables are available.
     """
     # ensure template is valid
     params = parser.get_parsed_params(self.template)
     # ensure all global variables are available in template_variables
     variable_slugs = {x.slug for x in self.template_variables}
     for param in params:
         if param.namespace == parser.GLOBAL_NAMESPACE and param.variable not in variable_slugs:
             raise InvalidParameterException(_("Template variable '{}' not found in configuration!").format(
                 param.variable
             ))
def send_messages_for_config(config, actually_send=True):
    query_engine = QueryEngine(template_vars=config.template_variables)
    params = get_parsed_params(config.template)
    sent_messages = []
    for user in config.group.get_users():
        phone_number = get_preferred_phone_number_for_recipient(user)
        if phone_number:
            query_context = QueryContext(user, config.group, template_vars=config.template_variables)
            message_context = query_engine.get_context(params, query_context)
            message = config.template.format(**message_context)
            if actually_send:
                metadata = MessageMetadata(workflow=WORKFLOW_PERFORMANCE)
                if isinstance(phone_number, PhoneNumber):
                    send_sms_to_verified_number(phone_number, message, metadata=metadata)
                else:
                    send_sms(config.domain, user, phone_number, message, metadata=metadata)

            sent_messages.append(MessageResult(user, message))
    return sent_messages