From f21b5defb682fbcb5044189286ebee7026f10709 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Thu, 28 Nov 2013 14:00:00 +0100 Subject: [PATCH] [boobcoming] move parse_date to weboob/tools/date.py --- weboob/applications/boobcoming/boobcoming.py | 54 ++------------------ weboob/tools/date.py | 49 ++++++++++++++++++ 2 files changed, 53 insertions(+), 50 deletions(-) diff --git a/weboob/applications/boobcoming/boobcoming.py b/weboob/applications/boobcoming/boobcoming.py index 3a781086..671278f6 100644 --- a/weboob/applications/boobcoming/boobcoming.py +++ b/weboob/applications/boobcoming/boobcoming.py @@ -17,10 +17,10 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -import re import sys -from datetime import date, timedelta, time, datetime +from datetime import time, datetime +from weboob.tools.date import parse_date from weboob.tools.application.formatters.iformatter import IFormatter, PrettyFormatter from weboob.capabilities.base import empty from weboob.capabilities.calendar import ICapCalendarEvent, Query, CATEGORIES @@ -154,22 +154,6 @@ class Boobcoming(ReplApplication): 'export': 'ical_formatter' } - WEEK = {'MONDAY': 0, - 'TUESDAY': 1, - 'WEDNESDAY': 2, - 'THURSDAY': 3, - 'FRIDAY': 4, - 'SATURDAY': 5, - 'SUNDAY': 6, - 'LUNDI': 0, - 'MARDI': 1, - 'MERCREDI': 2, - 'JEUDI': 3, - 'VENDREDI': 4, - 'SAMEDI': 5, - 'DIMANCHE': 6, - } - @defaultcount(10) def do_search(self, line): """ @@ -221,7 +205,7 @@ class Boobcoming(ReplApplication): def ask_date(self, txt, default=''): r = self.ask(txt, default=default) - return self.parse_date(r) + return parse_date(r) @defaultcount(10) def do_list(self, line): @@ -232,7 +216,7 @@ class Boobcoming(ReplApplication): self.change_path([u'events']) if line: - _date = self.parse_date(line) + _date = parse_date(line) if not _date: print >>sys.stderr, 'Invalid argument: %s' % self.get_command_help('list', short=True) return 2 @@ -324,36 +308,6 @@ class Boobcoming(ReplApplication): else: return _file - def get_date_from_day(self, day): - today = date.today() - today_day_number = today.weekday() - - requested_day_number = self.WEEK[day.upper()] - - if today_day_number < requested_day_number: - day_to_go = requested_day_number - today_day_number - else: - day_to_go = 7 - today_day_number + requested_day_number - - requested_date = today + timedelta(day_to_go) - return date(requested_date.year, requested_date.month, requested_date.day) - - def parse_date(self, string): - matches = re.search('\s*([012]?[0-9]|3[01])\s*/\s*(0?[1-9]|1[012])\s*/?(\d{2}|\d{4})?$', string) - if matches: - year = matches.group(3) - if not year: - year = date.today().year - elif len(year) == 2: - year = 2000 + int(year) - return date(int(year), int(matches.group(2)), int(matches.group(1))) - - elif string.upper() in self.WEEK.keys(): - return self.get_date_from_day(string) - - elif string.upper() == "TODAY": - return date.today() - def do_attends(self, line): """ attends ID1 [ID2 ID3 ...] diff --git a/weboob/tools/date.py b/weboob/tools/date.py index 69080b01..0a363792 100644 --- a/weboob/tools/date.py +++ b/weboob/tools/date.py @@ -226,3 +226,52 @@ def parse_french_date(date): date = fr.sub(en, date) return dateutil.parser.parse(date) + + +WEEK = {'MONDAY': 0, + 'TUESDAY': 1, + 'WEDNESDAY': 2, + 'THURSDAY': 3, + 'FRIDAY': 4, + 'SATURDAY': 5, + 'SUNDAY': 6, + 'LUNDI': 0, + 'MARDI': 1, + 'MERCREDI': 2, + 'JEUDI': 3, + 'VENDREDI': 4, + 'SAMEDI': 5, + 'DIMANCHE': 6, + } + + +def get_date_from_day(day): + today = date.today() + today_day_number = today.weekday() + + requested_day_number = WEEK[day.upper()] + + if today_day_number < requested_day_number: + day_to_go = requested_day_number - today_day_number + else: + day_to_go = 7 - today_day_number + requested_day_number + + requested_date = today + timedelta(day_to_go) + return date(requested_date.year, requested_date.month, requested_date.day) + + +def parse_date(string): + matches = re.search('\s*([012]?[0-9]|3[01])\s*/\s*(0?[1-9]|1[012])\s*/?(\d{2}|\d{4})?$', string) + if matches: + year = matches.group(3) + if not year: + year = date.today().year + elif len(year) == 2: + year = 2000 + int(year) + return date(int(year), int(matches.group(2)), int(matches.group(1))) + + elif string.upper() in WEEK.keys(): + return get_date_from_day(string) + + elif string.upper() == "TODAY": + return date.today()