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
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