From 61550d68ec4532e5f09279432295a08e75a2a25c Mon Sep 17 00:00:00 2001 From: Jiri Vlasak Date: Thu, 28 Mar 2019 16:54:00 +0100 Subject: [PATCH] Add errors and methods --- cbdb.py | 36 ++++++++++++++++++++++++++++++++++++ cbgetter.py | 23 +++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/cbdb.py b/cbdb.py index 3f7f056..b6b6922 100644 --- a/cbdb.py +++ b/cbdb.py @@ -5,6 +5,9 @@ from sqlite3 import connect class FileNotSetError(ValueError): pass +class ArgCountError(ValueError): + pass + class Db: def __init__(self, dbpath=False): if dbpath: @@ -52,3 +55,36 @@ class Db: top.append((un, cnt)) top.sort(key=lambda x: (x[1], x[0]), reverse=True) return top + + def getDrunkSum(self, *args, **kwargs): + """Return list of drunken ``flavor`` from ``dtf`` to ``dtt``. + + Keyword arguments: + flavor -- The flavor of beverage. + dtf -- Date and time *from*. + dtt -- Date and time *to*. + """ + if not ((len(args) == 3 and len(kwargs) == 0) or + (len(args) == 0 and len(kwargs) == 3)): + raise ArgCountError("3 arguments needed: flavor, from, and to") + if args: + flavor = args[0] + dtf = args[1] + dtt = args[2] + elif kwargs: + flavor = kwargs["flavor"] + dtf = kwargs["dtf"] + dtt = kwargs["dtt"] + que = """ + SELECT count(*), users.name FROM coffees + INNER JOIN users ON coffees.id = users.id + WHERE flavor = '{}' + AND coffees.time BETWEEN + datetime('{}', 'localtime') AND + datetime('{}', 'localtime') + GROUP BY coffees.id + """.format(flavor, dtf, dtt) + drunk = [] + for (cnt, un) in self.cur.execute(que): + drunk.append((un, cnt)) + return drunk diff --git a/cbgetter.py b/cbgetter.py index aa4ab28..4622882 100644 --- a/cbgetter.py +++ b/cbgetter.py @@ -106,3 +106,26 @@ class CoffeebotGetter: self.getSomeSmile() ) return + + def loadDrunkSum(self, *args, **kwargs): + """Get list of drunken ``flavor`` from ``dtf`` to ``dtt``, update msg. + + Keyword arguments: + flavor -- The flavor of beverage. + dtf -- Date and time *from*. + dtt -- Date and time *to*. + """ + self.top = self.db.getDrunkSum(*args, **kwargs) + if args: + flavor = args[0] + dtf = args[1] + dtt = args[2] + elif kwargs: + flavor = kwargs["flavor"] + dtf = kwargs["dtf"] + dtt = kwargs["dtt"] + self.msg = "{} drunk from {} to {}:\n".format(flavor, dtf, dtt) + for (un, cnt) in self.top: + self.msg += "{}: {}\n".format(un, cnt) + self.msg += "---" + return -- 2.39.2