def publish_network_messages(net): " Push messages to network. " from x84.bbs import DBProxy from x84.bbs.msgbase import format_origin_line, MSGDB log = logging.getLogger(__name__) log.debug(u'[{net[name]}] publishing new messages.'.format(net=net)) queuedb = DBProxy('{0}queues'.format(net['name']), use_session=False) transdb = DBProxy('{0}trans'.format(net['name']), use_session=False) msgdb = DBProxy(MSGDB, use_session=False) # publish each message for msg_id in sorted(queuedb.keys(), cmp=lambda x, y: cmp(int(x), int(y))): if msg_id not in msgdb: log.warn('{net[name]} No such message (msg_id={msg_id})' .format(net=net, msg_id=msg_id)) del queuedb[msg_id] continue msg = msgdb[msg_id] trans_parent = None if msg.parent is not None: matches = [key for key, data in transdb.items() if int(data) == msg.parent] if len(matches) > 0: trans_parent = matches[0] else: log.warn('{net[name]} Parent ID {msg.parent} ' 'not in translation-DB (msg_id={msg_id})' .format(net=net, msg=msg, msg_id=msg_id)) trans_id = push_rest(net=net, msg=msg, parent=trans_parent) if trans_id is False: log.error('{net[name]} Message not posted (msg_id={msg_id})' .format(net=net['name'], msg_id=msg_id)) continue if trans_id in transdb.keys(): log.error('{net[name]} trans_id={trans_id} conflicts with ' '(msg_id={msg_id})' .format(net=net, trans_id=trans_id, msg_id=msg_id)) with queuedb: del queuedb[msg_id] continue # transform, and possibly duplicate(?) message .. with transdb, msgdb, queuedb: transdb[trans_id] = msg_id msg.body = u''.join((msg.body, format_origin_line())) msgdb[msg_id] = msg del queuedb[msg_id] log.info('{net[name]} Published (msg_id={msg_id}) => {trans_id}' .format(net=net, msg_id=msg_id, trans_id=trans_id))
def publish_network_messages(net): """ Push messages to network, ``net``. """ from x84.bbs import DBProxy from x84.bbs.msgbase import format_origin_line, MSGDB log = logging.getLogger(__name__) log.debug(u'[{net[name]}] publishing new messages.'.format(net=net)) queuedb = DBProxy('{0}queues'.format(net['name']), use_session=False) transdb = DBProxy('{0}trans'.format(net['name']), use_session=False) msgdb = DBProxy(MSGDB, use_session=False) # publish each message for msg_id in sorted(queuedb.keys(), cmp=lambda x, y: cmp(int(x), int(y))): if msg_id not in msgdb: log.warn('[{net[name]}] No such message (msg_id={msg_id})' .format(net=net, msg_id=msg_id)) del queuedb[msg_id] continue msg = msgdb[msg_id] trans_parent = None if msg.parent is not None: matches = [key for key, data in transdb.items() if int(data) == msg.parent] if len(matches) > 0: trans_parent = matches[0] else: log.warn('[{net[name]}] Parent ID {msg.parent} ' 'not in translation-DB (msg_id={msg_id})' .format(net=net, msg=msg, msg_id=msg_id)) trans_id = push_rest(net=net, msg=msg, parent=trans_parent) if trans_id is False: log.error('[{net[name]}] Message not posted (msg_id={msg_id})' .format(net=net, msg_id=msg_id)) continue if trans_id in transdb.keys(): log.error('[{net[name]}] trans_id={trans_id} conflicts with ' '(msg_id={msg_id})' .format(net=net, trans_id=trans_id, msg_id=msg_id)) with queuedb: del queuedb[msg_id] continue # transform, and possibly duplicate(?) message .. with transdb, msgdb, queuedb: transdb[trans_id] = msg_id msg.body = u''.join((msg.body, format_origin_line())) msgdb[msg_id] = msg del queuedb[msg_id] log.info('[{net[name]}] Published (msg_id={msg_id}) => {trans_id}' .format(net=net, msg_id=msg_id, trans_id=trans_id))
def prepare_message(msg, network, parent): """ turn a Msg object into a dict for transfer """ from x84.bbs.msgbase import format_origin_line, to_utctime return { 'author': msg.author, 'subject': msg.subject, 'recipient': msg.recipient, 'parent': parent, 'tags': [tag for tag in msg.tags if tag != network['name']], 'body': u''.join((msg.body, format_origin_line())), 'ctime': to_utctime(msg.ctime) }