factorize aum's Contact.get_text() and boobmsg formatter into ICapContact

This commit is contained in:
Romain Bignon 2014-05-17 19:05:28 +02:00
commit a40643bf40
3 changed files with 42 additions and 75 deletions

View file

@ -265,42 +265,3 @@ class Contact(_Contact):
self.profile[section] = s self.profile[section] = s
self._aum_profile = profile self._aum_profile = profile
def get_text(self):
def print_node(node, level=1):
result = u''
if node.flags & node.SECTION:
result += u'\t' * level + node.label + '\n'
for sub in node.value.itervalues():
result += print_node(sub, level + 1)
else:
if isinstance(node.value, (tuple, list)):
value = ', '.join(unicode(v) for v in node.value)
elif isinstance(node.value, float):
value = '%.2f' % node.value
else:
value = node.value
result += u'\t' * level + u'%-20s %s\n' % (node.label + ':', value)
return result
result = u'Nickname: %s\n' % self.name
if self.status & Contact.STATUS_ONLINE:
s = 'online'
elif self.status & Contact.STATUS_OFFLINE:
s = 'offline'
elif self.status & Contact.STATUS_AWAY:
s = 'away'
else:
s = 'unknown'
result += u'Status: %s (%s)\n' % (s, self.status_msg)
result += u'URL: %s\n' % self.url
result += u'Photos:\n'
for name, photo in self.photos.iteritems():
result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'\nProfile:\n'
for head in self.profile.itervalues():
result += print_node(head)
result += u'Description:\n'
for s in self.summary.split('\n'):
result += u'\t%s\n' % s
return result

View file

@ -29,7 +29,7 @@ from lxml import etree
from weboob.core import CallErrors from weboob.core import CallErrors
from weboob.capabilities.messages import ICapMessages, Message, Thread from weboob.capabilities.messages import ICapMessages, Message, Thread
from weboob.capabilities.account import ICapAccount from weboob.capabilities.account import ICapAccount
from weboob.capabilities.contact import ICapContact, Contact from weboob.capabilities.contact import ICapContact
from weboob.tools.application.repl import ReplApplication, defaultcount from weboob.tools.application.repl import ReplApplication, defaultcount
from weboob.tools.application.formatters.iformatter import IFormatter from weboob.tools.application.formatters.iformatter import IFormatter
from weboob.tools.misc import html2text from weboob.tools.misc import html2text
@ -228,41 +228,8 @@ class ProfileFormatter(IFormatter):
def flush(self): def flush(self):
pass pass
def print_node(self, node, level=1): def format_obj(self, obj, alias=None):
result = u'' return obj.get_text()
if node.flags & node.SECTION:
result += u'\t' * level + node.label + '\n'
for sub in node.value.itervalues():
result += self.print_node(sub, level+1)
else:
if isinstance(node.value, (tuple,list)):
value = ', '.join(unicode(v) for v in node.value)
else:
value = node.value
result += u'\t' * level + u'%-20s %s\n' % (node.label + ':', value)
return result
def format_obj(self, obj, alias):
result = u'Nickname: %s\n' % obj.name
if obj.status & Contact.STATUS_ONLINE:
s = 'online'
elif obj.status & Contact.STATUS_OFFLINE:
s = 'offline'
elif obj.status & Contact.STATUS_AWAY:
s = 'away'
else:
s = 'unknown'
result += u'Status: %s (%s)\n' % (s, obj.status_msg)
result += u'Photos:\n'
for name, photo in obj.photos.iteritems():
result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'Profile:\n'
for head in obj.profile.itervalues():
result += self.print_node(head)
result += u'Description:\n'
for s in obj.summary.split('\n'):
result += u'\t%s\n' % s
return result
class Boobmsg(ReplApplication): class Boobmsg(ReplApplication):

View file

@ -108,6 +108,45 @@ class Contact(CapBaseObject):
for key, value in kwargs.iteritems(): for key, value in kwargs.iteritems():
setattr(photo, key, value) setattr(photo, key, value)
def get_text(self):
def print_node(node, level=1):
result = u''
if node.flags & node.SECTION:
result += u'\t' * level + node.label + '\n'
for sub in node.value.itervalues():
result += print_node(sub, level + 1)
else:
if isinstance(node.value, (tuple, list)):
value = ', '.join(unicode(v) for v in node.value)
elif isinstance(node.value, float):
value = '%.2f' % node.value
else:
value = node.value
result += u'\t' * level + u'%-20s %s\n' % (node.label + ':', value)
return result
result = u'Nickname: %s\n' % self.name
if self.status & Contact.STATUS_ONLINE:
s = 'online'
elif self.status & Contact.STATUS_OFFLINE:
s = 'offline'
elif self.status & Contact.STATUS_AWAY:
s = 'away'
else:
s = 'unknown'
result += u'Status: %s (%s)\n' % (s, self.status_msg)
result += u'URL: %s\n' % self.url
result += u'Photos:\n'
for name, photo in self.photos.iteritems():
result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '')
result += u'\nProfile:\n'
for head in self.profile.itervalues():
result += print_node(head)
result += u'Description:\n'
for s in self.summary.split('\n'):
result += u'\t%s\n' % s
return result
class QueryError(UserError): class QueryError(UserError):
""" """