From d00b0109a611d9c73c1d6d0267c786a19d40d0a8 Mon Sep 17 00:00:00 2001 From: Markus Krogh Date: Fri, 21 Jul 2017 14:28:47 +0200 Subject: Adding sentry --- config.cfg.dist | 3 +++ maconomy/utils.py | 34 ++++++++++++++++++++++++++++++++++ maconomy_hours.py | 10 ++++++---- requirements/common.txt | 1 + 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/config.cfg.dist b/config.cfg.dist index 25e6d16..aa001cc 100644 --- a/config.cfg.dist +++ b/config.cfg.dist @@ -11,3 +11,6 @@ ceo= [view] maconomyurl= helpurl= + +[sentry] +dsn= diff --git a/maconomy/utils.py b/maconomy/utils.py index de5ccdd..9092a2d 100644 --- a/maconomy/utils.py +++ b/maconomy/utils.py @@ -1,5 +1,8 @@ from collections import defaultdict import datetime +from raven import Client + +client = None def per_manager(timesheets): @@ -18,3 +21,34 @@ def employees(timesheets): def previous_monday(date=None): today = date or datetime.date.today() return today + datetime.timedelta(days=-today.weekday(), weeks=-1) + + +def is_present(what): + return what and what.strip() + + +def is_empty(what): + return not is_present(what) + + +def sentry_log(msg, extra={}): + if client: + try: + client.captureMessage(msg, extra=extra) + except: + client.captureException() + + +def sentry_exception(): + if client: + client.captureException() + + +def sentry(config): + if config.has_option('sentry', 'dsn'): + try: + dsn = config.get('sentry', 'dsn') + global client + client = Client(dsn) + except Exception as e: + print(str(e)) diff --git a/maconomy_hours.py b/maconomy_hours.py index 608d502..4b20c7f 100644 --- a/maconomy_hours.py +++ b/maconomy_hours.py @@ -1,7 +1,6 @@ from maconomy import cli, create_db, TimeRegistrationRepository, Mailer from maconomy.views import EmployeeEmailView, ManagerEmailView, CEOEmailView from maconomy import utils -from collections import defaultdict def main(config, options): @@ -18,6 +17,9 @@ def main(config, options): summary(timesheets) else: normal(timesheets, config, mailer) + missing_mail = [ts.employee for ts in timesheets if utils.is_empty(ts.employee.email)] + if missing_mail: + utils.sentry_log("Employees missing emails", {'emplyees': [str(e) for e in missing_mail]}) # Close stuff if mailer: @@ -30,18 +32,17 @@ def normal(timesheets, config, mailer): view = EmployeeEmailView(config) for timesheet in timesheets: if not timesheet.is_submitted(): - mail = view.render(timesheet) + mail = view.render(timesheet) subject = u"Timesheet reminder for {}".format(timesheet.employee) to = timesheet.employee.email if mailer: if to and to.strip(): mailer.send(to, subject, mail) - else: - print(u"No email for: {}".format(timesheet.employee)) else: print(subject) print(mail) + def manager(timesheets, config, mailer): view = ManagerEmailView(config) # extract employees for manager email lookup @@ -84,4 +85,5 @@ def summary(timesheets): if __name__ == '__main__': args = cli.parse() config = cli.load_config(args.config) + utils.sentry(config) main(config, args) diff --git a/requirements/common.txt b/requirements/common.txt index af42dda..6456012 100644 --- a/requirements/common.txt +++ b/requirements/common.txt @@ -1 +1,2 @@ configparser +raven -- cgit v1.1