Example #1
0
def import_events(room_id, limit=None):
    events = get_room_events(room_id)
    # restrict to messages
    messages = (event for event in events
                if event['type'] in MESSAGE_EVENT_TYPES)
    # exclude redacted messages
    messages = (event for event in messages if 'redacted_because' not in event)
    # exclude messages that have already been saved
    messages = (event for event in messages
                if not Message.objects(event_id=event['event_id'],
                                       room_id=event['room_id']))
    if limit:
        messages = islice(messages, limit)
    for event in messages:
        fields = event.copy()
        fields['messageType'] = fields.pop('type')
        fields['room_id'] = room_id
        fields['timestamp'] = datetime.fromtimestamp(
            fields.pop('origin_server_ts') / 1000)
        fields.pop('age', None)
        fields.pop('unsigned', None)
        try:
            message = Message(**replace_dots(fields))
            message.save()
        except (FieldDoesNotExist, ValidationError):
            print(fields)
            raise

        yield message
Example #2
0
def sendMessage(receiver, content, sender='system', title=''):
    # create system account if not exists
    if sender == 'system' and account.searchUser('system') is None:
        account.registerUser('system', '*****@*****.**', 'system-pwd',
                             10000)

    time = datetime.datetime.now(pytz.timezone('US/Eastern'))
    message = Message(senderUsername=sender,
                      receiverUsername=receiver,
                      title=title,
                      content=content,
                      time=time)
    try:
        db.session.add(message)
        db.session.commit()
        return message.messageId
    except Exception as e:
        print e
        db.session.rollback()
        return None