Пример #1
0
def create_message_from_json(json):
    channel = create_channel_from_json(json['channel'])

    message = models.Message()
    message.created_at = get_datetime_from_json_attr(json, 'created_at')
    message.updated_at = get_datetime_from_json_attr(json, 'updated_at')
    message.text = json['text']
    message.meta = create_metas_from_json(json['meta'])
    message.channel_id = channel.id
    message.channel = channel

    return message
Пример #2
0
def manage_message_db(impact, json, messages_json, messages_db, client_id):
    for message_json in json['messages']:
        if message_json["channel"]["id"] in messages_db:
            msg = messages_db[message_json["channel"]["id"]]
            mapper.fill_from_json(msg, message_json, mapper.message_mapping)
            clean_message(msg, msg.channel.content_type)
            manage_message_meta(msg, message_json)
        else:
            message = models.Message()
            message.impact_id = impact.id
            mapper.fill_from_json(message, message_json,
                                  mapper.message_mapping)
            channel = models.Channel.get(message.channel_id, client_id)
            clean_message(message, channel.content_type)
            impact.insert_message(message)
            manage_message_meta(message, message_json)
            messages_db[message.channel_id] = message
Пример #3
0
def manage_message(impact, json):
    messages_db = dict((msg.channel_id, msg) for msg in impact.messages)
    messages_json = dict()
    if 'messages' in json:
        messages_json = dict(
            (msg["channel"]["id"], msg) for msg in json['messages'])
        for message_json in json['messages']:
            if message_json["channel"]["id"] in messages_db:
                msg = messages_db[message_json["channel"]["id"]]
                mapper.fill_from_json(msg, message_json,
                                      mapper.message_mapping)
            else:
                message = models.Message()
                message.impact_id = impact.id
                mapper.fill_from_json(message, message_json,
                                      mapper.message_mapping)
                impact.insert_message(message)
                messages_db[message.channel_id] = message

    difference = set(messages_db) - set(messages_json)
    for diff in difference:
        impact.delete_message(messages_db[diff])