]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/commitdiff
Add errors and methods
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 28 Mar 2019 15:54:00 +0000 (16:54 +0100)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 28 Mar 2019 16:45:05 +0000 (17:45 +0100)
cbdb.py
cbgetter.py

diff --git a/cbdb.py b/cbdb.py
index 3f7f0569fc47453613b41a13d0c20a0ab84475e1..b6b6922b8763d473898c58f4bb64c6bf14eba337 100644 (file)
--- 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
index aa4ab281c44812a0d08129a8b0383332ea5bd376..4622882b1e6b28c88d55d21c696688e5dfe2ab5a 100644 (file)
@@ -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