add command 'events'

This commit is contained in:
Romain Bignon 2012-06-15 17:29:32 +02:00
commit 1880761517

View file

@ -25,11 +25,26 @@ from weboob.core import CallErrors
from weboob.tools.application.repl import ReplApplication from weboob.tools.application.repl import ReplApplication
from weboob.applications.boobmsg import Boobmsg from weboob.applications.boobmsg import Boobmsg
from weboob.capabilities.dating import ICapDating, OptimizationNotFound from weboob.capabilities.dating import ICapDating, OptimizationNotFound
from weboob.tools.application.formatters.iformatter import PrettyFormatter
__all__ = ['HaveDate'] __all__ = ['HaveDate']
class EventListFormatter(PrettyFormatter):
MANDATORY_FIELDS = ('date', 'type')
def get_title(self, event):
s = u'(%s) %s' % (event.date, event.type)
if hasattr(event, 'contact') and event.contact:
s += u'%s' % (event.contact.name)
return s
def get_description(self, event):
if hasattr(event, 'message'):
return event.message
class HaveDate(Boobmsg): class HaveDate(Boobmsg):
APPNAME = 'havedate' APPNAME = 'havedate'
VERSION = '0.d' VERSION = '0.d'
@ -39,8 +54,11 @@ class HaveDate(Boobmsg):
STORAGE_FILENAME = 'dating.storage' STORAGE_FILENAME = 'dating.storage'
STORAGE = {'optims': {}} STORAGE = {'optims': {}}
CAPS = ICapDating CAPS = ICapDating
EXTRA_FORMATTERS = copy(Boobmsg.EXTRA_FORMATTERS)
EXTRA_FORMATTERS['events'] = EventListFormatter
COMMANDS_FORMATTERS = copy(Boobmsg.COMMANDS_FORMATTERS) COMMANDS_FORMATTERS = copy(Boobmsg.COMMANDS_FORMATTERS)
COMMANDS_FORMATTERS['optim'] = 'table' COMMANDS_FORMATTERS['optim'] = 'table'
COMMANDS_FORMATTERS['events'] = 'events'
def load_default_backends(self): def load_default_backends(self):
self.load_backends(ICapDating, storage=self.create_storage(self.STORAGE_FILENAME)) self.load_backends(ICapDating, storage=self.create_storage(self.STORAGE_FILENAME))
@ -229,3 +247,15 @@ class HaveDate(Boobmsg):
return return
print >>sys.stderr, "No such command '%s'" % cmd print >>sys.stderr, "No such command '%s'" % cmd
return 1 return 1
def do_events(self, line):
"""
events
Display dating events.
"""
self.change_path([u'events'])
self.start_format()
for backend, event in self.do('iter_events'):
self.cached_format(event)
self.flush()