| @@ -25,14 +25,13 @@ def fromisoformat(datestr): | |||||
| else: | else: | ||||
| return None | return None | ||||
| ##@class TodoProject | |||||
| ## | |||||
| # @class TodoProject | |||||
| # @brief functions to load a single or all projects and has methods to check the state of the project | # @brief functions to load a single or all projects and has methods to check the state of the project | ||||
| class TodoProject: | class TodoProject: | ||||
| ''' Common class for api calls''' | |||||
| ##@brief constructor of class | |||||
| # tries to load api-token from apikey-file. | |||||
| # @param project String with project name or integer with project_id | |||||
| ##@brief constructor of class | |||||
| # tries to load api-token from apikey-file. | |||||
| # @param project String with project name or integer with project_id | |||||
| def __init__(self,project=None): | def __init__(self,project=None): | ||||
| fh_api = open("apikey","r") | fh_api = open("apikey","r") | ||||
| self.apikey = fh_api.read() | self.apikey = fh_api.read() | ||||
| @@ -49,20 +48,26 @@ class TodoProject: | |||||
| self.project == None | self.project == None | ||||
| self.items = TodoItemList(None,self.api) | self.items = TodoItemList(None,self.api) | ||||
| ##@brief synchronize data from Todoist with the api object. | |||||
| # @return response of server | |||||
| ##@brief synchronize data from Todoist with the api object. | |||||
| # @return response of server | |||||
| def sync(self): | def sync(self): | ||||
| return self.api.sync() | return self.api.sync() | ||||
| ##@brief verify if there are atleast three tasks scheduled for today. | |||||
| # @param tasklimit Number of tasks required. if not met notification will be given. | |||||
| def checktaskstoday(self,tasklimit): | def checktaskstoday(self,tasklimit): | ||||
| numOfItems = len(self.items.itemsForDay()) | numOfItems = len(self.items.itemsForDay()) | ||||
| if numOfItems < tasklimit: | if numOfItems < tasklimit: | ||||
| self.sendnotification("TASKS","Not enough Tasks Scheduled for today!\n" + "Only " + str(numOfItems) + " of " + str(tasklimit) + " tasks set!" ) | self.sendnotification("TASKS","Not enough Tasks Scheduled for today!\n" + "Only " + str(numOfItems) + " of " + str(tasklimit) + " tasks set!" ) | ||||
| def checkTasksWithoutNotes(self,date=date.today()): | |||||
| ##@brief verify if all tasks that are closed also have notes attached. | |||||
| # A notification is send by this function if there are tasks that do not meet this condition. | |||||
| # @sa TodoProject::openTasksWithoutNotes | |||||
| def checkTasksWithoutNotes(self): | |||||
| if len(self.items.itemsClosedWithoutNotes())>0: | if len(self.items.itemsClosedWithoutNotes())>0: | ||||
| self.sendnotification("TASKS","There are tasks without a log.") | self.sendnotification("TASKS","There are tasks without a log.") | ||||
| ##@brief verify if all tasks that are closed also have notes attached. | |||||
| def checkTasksOverDue(self): | def checkTasksOverDue(self): | ||||
| _overdueItems = len(self.items.itemsOverDue()) | _overdueItems = len(self.items.itemsOverDue()) | ||||
| if _overdueItems==1: | if _overdueItems==1: | ||||
| @@ -70,6 +75,8 @@ class TodoProject: | |||||
| elif _overdueItems>1: | elif _overdueItems>1: | ||||
| self.sendnotification("TASKS","There are " + str(_overdueItems) + " tasks over due!") | self.sendnotification("TASKS","There are " + str(_overdueItems) + " tasks over due!") | ||||
| ##@brief reopen all tasks that are closed but do not have notes attached. | |||||
| # @sa TodoProject::checkTasksWithoutNotes | |||||
| def openTasksWithoutNotes(self): | def openTasksWithoutNotes(self): | ||||
| for item in self.items.itemsClosedWithoutNotes(): | for item in self.items.itemsClosedWithoutNotes(): | ||||
| item_handle = item.api.items.get_by_id(item.id) | item_handle = item.api.items.get_by_id(item.id) | ||||
| @@ -77,6 +84,10 @@ class TodoProject: | |||||
| self.api.commit() | self.api.commit() | ||||
| ##@brief Show a notification on Linux desktop | |||||
| # Uses Gio-2.0 package to make a notification | |||||
| # @param title string with title of the notification | |||||
| # @param body string with the body text of the notification | |||||
| def sendnotification(self,title,body): | def sendnotification(self,title,body): | ||||
| Application = Gio.Application.new("todoist.tasks", Gio.ApplicationFlags.FLAGS_NONE) | Application = Gio.Application.new("todoist.tasks", Gio.ApplicationFlags.FLAGS_NONE) | ||||
| Application.register() | Application.register() | ||||