Somewhat large overhaul to move the kiosk towards using normal python
[kiosk.git] / gcal_renderer.py
index c43a1448b2f8c5f256dc03951d586d7e2d758334..19b818d8ad3309890eff6ef0d7f7b4b21ba63aed 100644 (file)
@@ -5,24 +5,24 @@ contents of several Google calendars."""
 
 import datetime
 import functools
-import os
+import logging
 import time
 from typing import Any, Dict, List, Optional, Tuple
 
 from dateutil.parser import parse
-import gdata  # type: ignore
 import gdata_oauth
-from oauth2client.client import AccessTokenRefreshError  # type: ignore
 import pytz
 
 import constants
 import file_writer
 import globals
 import renderer
-import kiosk_secrets as secrets
 
 
-class gcal_renderer(renderer.debuggable_abstaining_renderer):
+logger = logging.getLogger(__file__)
+
+
+class gcal_renderer(renderer.abstaining_renderer):
     """A renderer to fetch upcoming events from www.google.com/calendar"""
 
     calendar_whitelist = frozenset(
@@ -123,7 +123,7 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
     def __init__(
         self, name_to_timeout_dict: Dict[str, int], oauth: gdata_oauth.OAuth
     ) -> None:
-        super(gcal_renderer, self).__init__(name_to_timeout_dict, True)
+        super().__init__(name_to_timeout_dict)
         self.oauth = oauth
         self.client = self.oauth.calendar_service()
         self.sortable_events: List[gcal_renderer.comparable_event] = []
@@ -133,7 +133,7 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
         return "gcal"
 
     def periodic_render(self, key: str) -> bool:
-        self.debug_print('called for "%s"' % key)
+        logger.debug('called for "%s"' % key)
         if key == "Render Upcoming Events":
             return self.render_upcoming_events()
         elif key == "Look For Triggered Events":
@@ -147,8 +147,8 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
         _time_max = now + datetime.timedelta(days=95)
         time_min = datetime.datetime.strftime(_time_min, "%Y-%m-%dT%H:%M:%SZ")
         time_max = datetime.datetime.strftime(_time_max, "%Y-%m-%dT%H:%M:%SZ")
-        self.debug_print(f"time_min is {time_min}")
-        self.debug_print(f"time_max is {time_max}")
+        logger.debug(f"time_min is {time_min}")
+        logger.debug(f"time_max is {time_max}")
         return (time_min, time_max)
 
     @staticmethod
@@ -182,7 +182,7 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
             )
             for calendar in calendar_list["items"]:
                 if calendar["summary"] in gcal_renderer.calendar_whitelist:
-                    self.debug_print(
+                    logger.debug(
                         f"{calendar['summary']} is an interesting calendar..."
                     )
                     events = (
@@ -200,11 +200,11 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
                         summary = event["summary"]
                         start = gcal_renderer.parse_date(event["start"])
                         end = gcal_renderer.parse_date(event["end"])
-                        self.debug_print(
+                        logger.debug(
                             f" ... event '{summary}' ({event['start']} ({start}) to {event['end']} ({end})"
                         )
                         if start is not None and end is not None:
-                            self.debug_print(f' ... adding {summary} to sortable_events')
+                            logger.debug(f' ... adding {summary} to sortable_events')
                             sortable_events.append(
                                 gcal_renderer.comparable_event(
                                     start, end, summary, calendar["summary"]
@@ -215,7 +215,7 @@ class gcal_renderer(renderer.debuggable_abstaining_renderer):
                                 or "Holidays" in calendar["summary"]
                                 or "Countdown" in summary
                             ):
-                                self.debug_print(f" ... adding {summary} to countdown_events")
+                                logger.debug(f" ... adding {summary} to countdown_events")
                                 countdown_events.append(
                                     gcal_renderer.comparable_event(
                                         start, end, summary, calendar["summary"]
@@ -246,7 +246,7 @@ f"""
                 )
                 upcoming_sortable_events = self.sortable_events[:12]
                 for n, event in enumerate(upcoming_sortable_events):
-                    self.debug_print(f'{n}/12: {event.friendly_name()} / {event.calendar}')
+                    logger.debug(f'{n}/12: {event.friendly_name()} / {event.calendar}')
                     if n % 2 == 0:
                         color = "#c6b0b0"
                     else:
@@ -297,7 +297,7 @@ f"""
                         )
                         timestamps[identifier] = time.mktime(eventstamp.timetuple())
                         count += 1
-                        self.debug_print(
+                        logger.debug(
                             "countdown to %s is %dd %dh %dm"
                             % (name, days[0], hours[0], minutes[0])
                         )
@@ -341,7 +341,7 @@ var fn = setInterval(function() {
 </script>"""
                 )
             return True
-        except (gdata.service.RequestError, AccessTokenRefreshError):
+        except Exception as e:
             print("********* TRYING TO REFRESH GCAL CLIENT *********")
 #            self.oauth.refresh_token()
 #            self.client = self.oauth.calendar_service()