flavor = kwargs["flavor"]
dtf = kwargs["dtf"]
dtt = kwargs["dtt"]
+ flavors = flavor.split(";")
que = """
SELECT count(*), users.name FROM coffees
INNER JOIN users ON coffees.id = users.id
- WHERE flavor = '{}'
+ """
+ for f in flavors:
+ if f is flavors[0]:
+ que += "WHERE flavor = '{}'".format(f)
+ else:
+ que += "OR flavor = '{}'".format(f)
+ que += """
AND coffees.time BETWEEN
datetime('{}', 'localtime') AND
datetime('{}', 'localtime')
GROUP BY coffees.id
- """.format(flavor, dtf, dtt)
+ """.format(dtf, dtt)
drunk = []
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 = {}
+ i = 0
+ 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] = [0 for j in range(i)]
+ drunk[un].append(cnt)
+ i += 1
+ return drunk