From 0bc87a29c393ca396b5cf4aeaacd9bb7602c2514 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Thu, 12 Feb 2015 17:02:24 +0100 Subject: [PATCH] [boobcoming] add a load command --- weboob/applications/boobcoming/boobcoming.py | 55 +++++++++++++++++--- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/weboob/applications/boobcoming/boobcoming.py b/weboob/applications/boobcoming/boobcoming.py index d064ba67..3df84393 100644 --- a/weboob/applications/boobcoming/boobcoming.py +++ b/weboob/applications/boobcoming/boobcoming.py @@ -26,7 +26,7 @@ from weboob.tools.application.formatters.iformatter import IFormatter, PrettyFor from weboob.capabilities.base import empty from weboob.capabilities.calendar import CapCalendarEvent, Query, CATEGORIES, BaseCalendarEvent, TICKET from weboob.tools.application.repl import ReplApplication, defaultcount - +from weboob.tools.config.yamlconfig import YamlConfig __all__ = ['Boobcoming'] @@ -172,11 +172,16 @@ class Boobcoming(ReplApplication): } COMMANDS_FORMATTERS = {'list': 'upcoming_list', 'search': 'upcoming_list', + 'load': 'upcoming_list', 'ls': 'upcoming_list', 'info': 'upcoming', 'export': 'ical_formatter' } + def main(self, argv): + self.load_config(klass=YamlConfig) + return ReplApplication.main(self, argv) + def comp_object(self, obj1, obj2): if isinstance(obj1, BaseCalendarEvent) and isinstance(obj2, BaseCalendarEvent): if obj1.start_date == obj2.start_date: @@ -187,7 +192,6 @@ class Boobcoming(ReplApplication): else: return super(Boobcoming, self).comp_object(obj1, obj2) - def select_values(self, values_from, values_to, query_str): r = 'notempty' while r != '': @@ -210,7 +214,6 @@ class Boobcoming(ReplApplication): else: values_to.append(value) - @defaultcount(10) def do_search(self, line): """ @@ -238,16 +241,52 @@ class Boobcoming(ReplApplication): query.start_date = datetime.combine(start_date, time.min) query.end_date = end_date - self.change_path([u'events']) - self.start_format() - for event in self.do('search_events', query): - if event: - self.cached_format(event) + save_query = self.ask('Save query (y/n)', default='n') + if save_query.upper() == 'Y': + name = '' + while not name: + name = self.ask('Query name') + + self.config.set('queries', name, query) + self.config.save() + self.complete_search(query) + + def complete_search(self, query): + self.change_path([u'events']) + self.start_format() + for event in self.do('search_events', query): + if event: + self.cached_format(event) def ask_date(self, txt, default=''): r = self.ask(txt, default=default) return parse_date(r) + @defaultcount(10) + def do_load(self, query_name): + """ + load [query name] + without query name : list loadable queries + with query name laod query + """ + queries = self.config.get('queries') + if not queries: + print('There is no saved queries', file=self.stderr) + return 2 + + if not query_name: + for name in queries.keys(): + print(' %s* %s %s' % (self.BOLD, + self.NC, + name)) + query_name = self.ask('Which one') + + if query_name in queries: + self.complete_search(queries.get(query_name)) + else: + print('Unknown query', file=self.stderr) + return 2 + @defaultcount(10) def do_list(self, line): """