bump requirements and adapt todoist module accordingly

This commit is contained in:
aceisace 2022-10-03 01:03:24 +02:00
parent 49741f9618
commit 9dff6e88cf
3 changed files with 28 additions and 30 deletions

View File

@ -111,6 +111,10 @@ class Feeds(inkycal_module):
if "summary" in posts: if "summary" in posts:
summary = posts["summary"] summary = posts["summary"]
parsed_feeds.append(f"{posts.title}: {re.sub('<[^<]+?>', '', posts.summary)}") parsed_feeds.append(f"{posts.title}: {re.sub('<[^<]+?>', '', posts.summary)}")
# if "description" in posts:
parsed_feeds = [i.split("\n") for i in parsed_feeds][0]
parsed_feeds = [i for i in parsed_feeds if i]
self._parsed_feeds = parsed_feeds self._parsed_feeds = parsed_feeds

View File

@ -1,14 +1,15 @@
#!python3 #!python3
""" """
todoist module for Inky-Calendar Project Inkycal Todoist Module
Copyright by aceisace Copyright by aceisace
""" """
from inkycal.modules.template import inkycal_module from inkycal.modules.template import inkycal_module
from inkycal.custom import * from inkycal.custom import *
import todoist from todoist_api_python.api_async import TodoistAPIAsync
from todoist_api_python.api import TodoistAPI
filename = os.path.basename(__file__).split('.py')[0] filename = os.path.basename(__file__).split('.py')[0]
logger = logging.getLogger(filename) logger = logging.getLogger(filename)
@ -16,7 +17,7 @@ logger = logging.getLogger(filename)
class Todoist(inkycal_module): class Todoist(inkycal_module):
"""Todoist api class """Todoist api class
parses todos from api-key parses todo's from api-key
""" """
name = "Todoist API - show your todos from todoist" name = "Todoist API - show your todos from todoist"
@ -55,8 +56,7 @@ class Todoist(inkycal_module):
else: else:
self.project_filter = config['project_filter'] self.project_filter = config['project_filter']
self._api = todoist.TodoistAPI(config['api_key']) self._api = TodoistAPI(config['api_key'])
self._api.sync()
# give an OK message # give an OK message
print(f'{filename} loaded') print(f'{filename} loaded')
@ -82,7 +82,6 @@ class Todoist(inkycal_module):
# Check if internet is available # Check if internet is available
if internet_available(): if internet_available():
logger.info('Connection test passed') logger.info('Connection test passed')
self._api.sync()
else: else:
raise NetworkNotReachableError raise NetworkNotReachableError
@ -100,44 +99,40 @@ class Todoist(inkycal_module):
(0, spacing_top + _ * line_height) for _ in range(max_lines)] (0, spacing_top + _ * line_height) for _ in range(max_lines)]
# Get all projects by name and id # Get all projects by name and id
all_projects = {project['id']: project['name'] all_projects = self._api.get_projects()
for project in self._api.projects.all()} filtered_project_ids_and_names = {project.id: project.name for project in all_projects}
all_active_tasks = self._api.get_tasks()
logger.debug(f"all_projects: {all_projects}") logger.debug(f"all_projects: {all_projects}")
# Filter entries in all_projects if filter was given # Filter entries in all_projects if filter was given
if self.project_filter: if self.project_filter:
for project_id in list(all_projects): filtered_projects = [project for project in all_projects if project.name in self.project_filter]
if all_projects[project_id] not in self.project_filter: filtered_project_ids_and_names = {project.id: project.name for project in filtered_projects}
del all_projects[project_id] filtered_project_ids = [project for project in filtered_project_ids_and_names]
logger.debug(f"filtered projects: {filtered_projects}")
logger.debug(f"all_project: {all_projects}") # If filter was activated and no project was found with that name,
# If filter was activated and no roject was found with that name,
# raise an exception to avoid showing a blank image # raise an exception to avoid showing a blank image
if all_projects == {}: if not filtered_projects:
logger.error('No project found from project filter!') logger.error('No project found from project filter!')
logger.error('Please double check spellings in project_filter') logger.error('Please double check spellings in project_filter')
raise Exception('No matching project found in filter. Please ' raise Exception('No matching project found in filter. Please '
'double check spellings in project_filter or leave' 'double check spellings in project_filter or leave'
'empty') 'empty')
# filtered version of all active tasks
# Create single-use generator to filter undone and non-deleted tasks all_active_tasks = [task for task in all_active_tasks if task.project_id in filtered_project_ids]
tasks = (task.data for task in self._api.state['items'] if
task['checked'] == 0 and task['is_deleted'] == 0)
# Simplify the tasks for faster processing # Simplify the tasks for faster processing
simplified = [ simplified = [
{ {
'name': task['content'], 'name': task.content,
'due': task['due']['string'] if task['due'] is not None else "", 'due': task.due,
'priority': task['priority'], 'priority': task.priority,
'project': all_projects[task['project_id']] if task['project_id'] in all_projects else "deleted" 'project': filtered_project_ids_and_names[task.project_id]
} }
for task in tasks] for task in all_active_tasks
]
# remove groups that have been deleted
simplified = [task for task in simplified if task['project'] != "deleted"]
logger.debug(f'simplified: {simplified}') logger.debug(f'simplified: {simplified}')

View File

@ -6,7 +6,6 @@ feedparser==6.0.8
fonttools==4.32.0 fonttools==4.32.0
geojson==2.5.0 geojson==2.5.0
icalendar==4.0.9 icalendar==4.0.9
idna==3.3
kiwisolver==1.4.2 kiwisolver==1.4.2
lxml==4.8.0 lxml==4.8.0
matplotlib==3.5.1 matplotlib==3.5.1
@ -14,7 +13,7 @@ multitasking==0.0.10
numpy==1.22.3 numpy==1.22.3
packaging==21.3 packaging==21.3
pandas==1.3.5 pandas==1.3.5
Pillow==9.1.0 Pillow==9.2.0
pyowm==3.3.0 pyowm==3.3.0
pyparsing==3.0.7 pyparsing==3.0.7
PySocks==1.7.1 PySocks==1.7.1
@ -26,7 +25,7 @@ RPi.GPIO==0.7.1
sgmllib3k==1.0.0 sgmllib3k==1.0.0
six==1.16.0 six==1.16.0
spidev==3.5 spidev==3.5
todoist-python==8.1.3 todoist-api-python==2.0.0
typing_extensions==4.1.1 typing_extensions==4.1.1
urllib3==1.26.9 urllib3==1.26.9
yfinance==0.1.70 yfinance==0.1.70