Пример #1
0
 def handle_event(self, event, event_params):
     raw_messages = []
     if self.event_id == event.event_id:
         for message_id in self.message_ids:
             try:
                 localized_message = database.get_localized_message(
                     event.user_id, message_id)
                 if localized_message is not None:
                     raw_messages.extend(
                         database.get_raw_messages(
                             login_id=event.user_id,
                             title=localized_message.message_title,
                             content=localized_message.message_text,
                             screen=localized_message.message.screen,
                             game=config.game,
                             world_id=config.world_id,
                             dry_run=config.dry_run,
                             message_id=message_id))
                 else:
                     context.main_logger.debug(
                         "Cannot get localization for user {login_id}".
                         format(login_id=event.user_id))
             except:
                 context.main_logger.exception(
                     'Problem with preparing message (message_id={message_id})'
                     .format(message_id=message_id))
     else:
         context.main_logger.error(
             'EventToMessagesHandler can handle event_id {handled_id} but got {passed_id}'
             .format(handled_id=self.event_id, passed_id=event.event_id))
     return raw_messages
Пример #2
0
def test_message(setup_database):
    # user using serbian language
    database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_token='123',
                                application_version=1007)

    # message with english only translation
    message_1 = database.add_message(message_name='test', language_id=1, message_title='title en',
                                      message_text='text en')
    assert message_1.message_id == 1
    localized_message = database.get_localized_message(login_id=12345, message_id=message_1.message_id)
    assert localized_message.message_title == 'title en'
    assert localized_message.message_text == 'text en'
    assert localized_message.language_id == 1
    assert localized_message.message.screen == ''

    # adding other translation different from serbian
    message_2 = database.add_message(message_name='test', language_id=0, message_title='title other',
                                      message_text='text other')
    localized_message = database.get_localized_message(login_id=12345, message_id=message_2.message_id)
    assert localized_message.message_title == 'title en'
    assert localized_message.message_text == 'text en'
    assert localized_message.language_id == 1
    assert localized_message.message.screen == ''

    # adding serbian translation
    message_3 = database.add_message(message_name='test', language_id=7, message_title='title sr',
                                      message_text='text sr')
    localized_message = database.get_localized_message(login_id=12345, message_id=message_3.message_id)
    assert localized_message.message_title == 'title sr'
    assert localized_message.message_text == 'text sr'
    assert localized_message.language_id == 7
    assert localized_message.message.screen == ''

    # message with no english neither serbian translation
    bad_message = database.add_message(message_name='test_bad', language_id=0, message_title='title bad',
                                      message_text='text bad')
    localized_message = database.get_localized_message(login_id=12345, message_id=bad_message.message_id)
    assert localized_message is None

    # user doesn't exist
    localized_message = database.get_localized_message(login_id=12346, message_id=message_3.message_id)
    assert localized_message is None

    # delete a message
    database.delete_message(message_1.message)
    assert database.get_message('test') is None
Пример #3
0
def test_message(setup_database):
    # user using serbian language
    database.process_user_login(login_id=12345, language_id=7, platform_id=1, device_token='123',
                                application_version=1007)

    # message with english only translation
    message_1 = database.add_message(message_name='test', language_id=1, message_title='title en',
                                      message_text='text en')
    assert message_1.message_id == 1
    localized_message = database.get_localized_message(login_id=12345, message_id=message_1.message_id)
    assert localized_message.message_title == 'title en'
    assert localized_message.message_text == 'text en'
    assert localized_message.language_id == 1
    assert localized_message.message.screen == ''

    # adding other translation different from serbian
    message_2 = database.add_message(message_name='test', language_id=0, message_title='title other',
                                      message_text='text other')
    localized_message = database.get_localized_message(login_id=12345, message_id=message_2.message_id)
    assert localized_message.message_title == 'title en'
    assert localized_message.message_text == 'text en'
    assert localized_message.language_id == 1
    assert localized_message.message.screen == ''

    # adding serbian translation
    message_3 = database.add_message(message_name='test', language_id=7, message_title='title sr',
                                      message_text='text sr')
    localized_message = database.get_localized_message(login_id=12345, message_id=message_3.message_id)
    assert localized_message.message_title == 'title sr'
    assert localized_message.message_text == 'text sr'
    assert localized_message.language_id == 7
    assert localized_message.message.screen == ''

    # message with no english neither serbian translation
    bad_message = database.add_message(message_name='test_bad', language_id=0, message_title='title bad',
                                      message_text='text bad')
    localized_message = database.get_localized_message(login_id=12345, message_id=bad_message.message_id)
    assert localized_message is None

    # user doesn't exist
    localized_message = database.get_localized_message(login_id=12346, message_id=message_3.message_id)
    assert localized_message is None

    # delete a message
    database.delete_message(message_1.message)
    assert database.get_message('test') is None
Пример #4
0
    def handle_event(self, event, event_params):

        # Allowed characters for parameter name are [a-zA-Z0-9_]
        def get_parameter(param_name):
            parameter = event_params.get(param_name)
            if parameter is None:
                raise Exception("Parameter '{param_name}' required in localization is missing from event!".
                                format(param_name=param_name))
            if type(parameter) == unicode:
                parameter = parameter.encode('utf-8')
            return parameter

        def get_parameter_map(parametrized_text):
            parameter_names = [key.group(0).strip("{}") for key in
                               PARAM_REGEX.finditer(parametrized_text)]
            parameter_map = {
                param_name: get_parameter(param_name)
                for param_name in parameter_names
            }
            return parameter_map

        raw_messages = []
        if self.event_id == event.event_id:

            filter_platform_id = event_params.get('platform_id')
            if filter_platform_id is not None:
                filter_platform_id = int(filter_platform_id)
            filter_device_token = event_params.get('device_token')
            for message_id in self.message_ids:
                if message_id not in context.message_blacklist.get(event.user_id, set()):
                    try:
                        localized_message = database.get_localized_message(event.user_id, message_id)

                        if localized_message is not None:
                            text_parameter_map = get_parameter_map(localized_message.message_text)
                            title_parameter_map = get_parameter_map(localized_message.message_title)
                            raw_messages.extend(
                                database.get_raw_messages(
                                    login_id=event.user_id, title=localized_message.message_title.encode('utf-8').format(**title_parameter_map).decode('utf-8'),
                                    content=localized_message.message_text.encode('utf-8').format(**text_parameter_map).decode('utf-8'),
                                    screen=localized_message.message.screen, game=config.game, world_id=config.world_id,
                                    dry_run=config.dry_run, message_id=message_id, event_ts_bigint=event.timestamp,
                                    expiry_millis=localized_message.message.expiry_millis, priority=localized_message.message.priority,
                                    filter_platform_id=filter_platform_id, filter_device_token=filter_device_token
                                ))
                        else:
                            context.main_logger.debug("Cannot get localization for user {login_id}".format(login_id=event.user_id))
                    except:
                        context.main_logger.exception(
                            'Problem with preparing message (message_id={message_id})'.format(message_id=message_id))
        else:
            context.main_logger.error('EventToMessagesHandler can handle event_id {handled_id} but got {passed_id}'
                                      .format(handled_id=self.event_id, passed_id=event.event_id))
        return raw_messages
Пример #5
0
 def handle_event(self, event, event_params):
     raw_messages = []
     if self.event_id == event.event_id:
         for message_id in self.message_ids:
             try:
                 localized_message = database.get_localized_message(event.user_id, message_id)
                 if localized_message is not None:
                     raw_messages.extend(
                         database.get_raw_messages(
                             login_id=event.user_id, title=localized_message.message_title,
                             content=localized_message.message_text,
                             screen=localized_message.message.screen, game=config.game, world_id=config.world_id,
                             dry_run=config.dry_run, message_id=message_id
                         )
                     )
                 else:
                     context.main_logger.debug("Cannot get localization for user {login_id}".format(login_id=event.user_id))
             except:
                 context.main_logger.exception(
                     'Problem with preparing message (message_id={message_id})'.format(message_id=message_id))
     else:
         context.main_logger.error('EventToMessagesHandler can handle event_id {handled_id} but got {passed_id}'
                                   .format(handled_id=self.event_id, passed_id=event.event_id))
     return raw_messages
Пример #6
0
    def handle_event(self, event, event_params):

        # Allowed characters for parameter name are [a-zA-Z0-9_]
        def get_parameter(param_name):
            parameter = event_params.get(param_name)
            if parameter is None:
                raise Exception(
                    "Parameter '{param_name}' required in localization is missing from event!"
                    .format(param_name=param_name))
            if type(parameter) == unicode:
                parameter = parameter.encode('utf-8')
            return parameter

        def get_parameter_map(parametrized_text):
            parameter_names = [
                key.group(0).strip("{}")
                for key in PARAM_REGEX.finditer(parametrized_text)
            ]
            parameter_map = {
                param_name: get_parameter(param_name)
                for param_name in parameter_names
            }
            return parameter_map

        raw_messages = []
        if self.event_id == event.event_id:

            filter_platform_id = event_params.get('platform_id')
            if filter_platform_id is not None:
                filter_platform_id = int(filter_platform_id)
            filter_device_token = event_params.get('device_token')
            for message_id in self.message_ids:
                if message_id not in context.message_blacklist.get(
                        event.user_id, set()):
                    try:
                        localized_message = database.get_localized_message(
                            event.user_id, message_id)

                        if localized_message is not None:
                            text_parameter_map = get_parameter_map(
                                localized_message.message_text)
                            title_parameter_map = get_parameter_map(
                                localized_message.message_title)
                            raw_messages.extend(
                                database.get_raw_messages(
                                    login_id=event.user_id,
                                    title=localized_message.message_title.
                                    encode('utf-8').format(
                                        **title_parameter_map).decode('utf-8'),
                                    content=localized_message.message_text.
                                    encode('utf-8').format(
                                        **text_parameter_map).decode('utf-8'),
                                    screen=localized_message.message.screen,
                                    game=config.game,
                                    world_id=config.world_id,
                                    dry_run=config.dry_run,
                                    message_id=message_id,
                                    event_ts_bigint=event.timestamp,
                                    expiry_millis=localized_message.message.
                                    expiry_millis,
                                    priority=localized_message.message.
                                    priority,
                                    filter_platform_id=filter_platform_id,
                                    filter_device_token=filter_device_token))
                        else:
                            context.main_logger.debug(
                                "Cannot get localization for user {login_id}".
                                format(login_id=event.user_id))
                    except:
                        context.main_logger.exception(
                            'Problem with preparing message (message_id={message_id})'
                            .format(message_id=message_id))
        else:
            context.main_logger.error(
                'EventToMessagesHandler can handle event_id {handled_id} but got {passed_id}'
                .format(handled_id=self.event_id, passed_id=event.event_id))
        return raw_messages