diff --git a/birthday_reminder/manifest.ini b/birthday_reminder/manifest.ini index c2630e7361e7f2b5f3ff8fb806cbdc4b8b870774..fa523ea16d23f682ba223cb2c03c2b588b607ec1 100644 --- a/birthday_reminder/manifest.ini +++ b/birthday_reminder/manifest.ini @@ -1,7 +1,7 @@ [info] name: Birthday reminder short_name: birthday_reminder -version: 0.0.1 +version: 0.0.2 description: Birthday reminder plugin authors: Evgeniy Popov <evgeniypopov@gmail.com> homepage: https://bitbucket.org/axce1/bday diff --git a/birthday_reminder/plugin.py b/birthday_reminder/plugin.py index 7b20f205a0ccc59a50f87339af02ce0b67eae273..6476685bad05c336bb614213ec6ee53f291536f8 100644 --- a/birthday_reminder/plugin.py +++ b/birthday_reminder/plugin.py @@ -2,6 +2,7 @@ import os import glob import datetime from xml.dom.minidom import * +import gobject from plugins import GajimPlugin from plugins.helpers import log_calls @@ -20,11 +21,9 @@ class BirthDayPlugin(GajimPlugin): configpath = configpaths.ConfigPaths() cache_path = configpath.cache_root self.vcard_path = os.path.join(cache_path, 'vcards') + os.sep + self.timeout_id = 0 - - @log_calls('BirthDayPlugin') - def activate(self): - + def check_birthdays(self): vcards = [] date_dict = {} for jid in glob.glob(self.vcard_path + '*@*'): @@ -34,24 +33,26 @@ class BirthDayPlugin(GajimPlugin): for xmldoc in vcards: try: xml = parse(xmldoc) - except: pass - else: name = xml.getElementsByTagName('BDAY') for node in name: try: data = node.childNodes[0].nodeValue date_dict[xmldoc[len(self.vcard_path):]] = data - except: pass + except: + pass today = datetime.date.today() for key, value in date_dict.iteritems(): - convert_date = datetime.datetime.strptime(value, "%Y-%m-%d") - user_bday = datetime.date( - today.year, convert_date.month, convert_date.day) + try: + convert_date = datetime.datetime.strptime(value, "%Y-%m-%d") + user_bday = datetime.date(today.year, convert_date.month, + convert_date.day) + except: + continue if user_bday < today: user_bday = user_bday.replace(year=today.year+1) @@ -72,8 +73,16 @@ class BirthDayPlugin(GajimPlugin): text = "Today BDay %s" % key if text: popup('', key, key, title=title, text=text) + return True + + @log_calls('BirthDayPlugin') + def activate(self): + self.check_birthdays() + self.timeout_id = gobject.timeout_add_seconds(24*3600, + self.check_birthdays) @log_calls('BirthDayPlugin') def deactivate(self): - pass + if self.timeout_id > 0: + gobject.source_remove(self.timeout_id)