]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/commitdiff
Add drunk list db request
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 4 Apr 2019 05:58:38 +0000 (07:58 +0200)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Thu, 4 Apr 2019 05:58:38 +0000 (07:58 +0200)
cbdb.py

diff --git a/cbdb.py b/cbdb.py
index 9cf9f7ca878c44a3e9553521af63c063fcd8eb58..c4741e059ed1a98ebbc6eefdd5e42fb9554519da 100644 (file)
--- a/cbdb.py
+++ b/cbdb.py
@@ -95,3 +95,40 @@ class Db:
         for (cnt, un) in self.cur.execute(que):
             drunk.append((un, cnt))
         return drunk
+
+    def getDrunkList(self, *args, **kwargs):
+        """Return dict of lists 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"]
+        flavors = flavor.split(";")
+        drunk = {}
+        for f in flavors:
+            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(f, dtf, dtt)
+            for (cnt, un) in self.cur.execute(que):
+                if not un in drunk:
+                    drunk[un] = []
+                drunk[un].append(cnt)
+        return drunk