summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Krogh <markus@nordu.net>2017-07-21 14:28:47 +0200
committerMarkus Krogh <markus@nordu.net>2017-07-21 14:28:47 +0200
commitd00b0109a611d9c73c1d6d0267c786a19d40d0a8 (patch)
tree1c27be983a5ce390fa967606c42dda2bda1205ea
parent70f08422e643bb859dcad7f21a1d340200beca51 (diff)
Adding sentryHEADmaster
-rw-r--r--config.cfg.dist3
-rw-r--r--maconomy/utils.py34
-rw-r--r--maconomy_hours.py10
-rw-r--r--requirements/common.txt1
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