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