1 # -*- coding: utf-8 -*-
2 """Get data from database and publish them."""
4 from random import randint
5 from requests import post
6 from cbconf import Conf
10 """This class connects configuration, database access and publishing."""
13 self.db = Db(self.cfg.getCoffeeDbPath())
23 def sendMsgToSlack(self):
24 """Send message to Slack Bot."""
25 return post(self.cfg.getCoffeebotURL(), dumps({"text": self.msg}))
27 def getHeroComment(self):
28 """Return comment for hero."""
32 " because couldn't resist",
36 " - superultramaxidrinker",
37 " and didn't sleep last week",
38 " in last 604800 seconds",
40 " and still drinking",
42 ri = randint(0, len(hsuff) - 1)
45 def getSomeSmile(self):
46 """Return some Slack smile."""
56 ri = randint(0, len(smiles) - 1)
59 def computeEqualDrinkers(self):
60 """Compute equally drunken drinkers."""
61 if len(self.top) <= 0:
63 lc = self.top[0][1] + 1
64 for (un, c) in self.top:
68 self.topeq[-1].append((un, c))
71 def loadTopMateDrinkers(self):
72 """Get list of top Mate drinkers, update message."""
73 self.msg = "*Top 5 Club-Mate drinkers*\n"
74 self.top = self.db.getTopMateDrinkers()
75 self.computeEqualDrinkers()
76 totl = [c for (un, c) in self.top]
78 isuff = {1: "st", 2: "nd", 3: "rd", 4: "th", 5: "th"}
80 for drinkers in self.topeq[:5]:
82 d = [un for (un, c) in drinkers]
83 self.msg += "{}{}".format(i, isuff[i])
90 self.msg += "*{}*".format(un)
92 self.msg += "" if len(d) == 2 else ","
93 self.msg += " and *{}*".format(un)
95 self.msg += ", *{}*".format(un)
97 self.msg += " of whom each drank "
99 self.msg += " who drank "
100 self.msg += "`{:.2f}` liters".format(c)
102 self.msg += self.getHeroComment()
106 self.msg += "Oh, and together we drank *{:.2f}* liters {}".format(
112 def loadDrunkSum(self, *args, **kwargs):
113 """Get list of drunken ``flavor`` from ``dtf`` to ``dtt``, update msg.
116 flavor -- The flavor of beverage.
117 dtf -- Date and time *from*.
118 dtt -- Date and time *to*.
120 self.top = self.db.getDrunkSum(*args, **kwargs)
126 flavor = kwargs["flavor"]
129 self.msg = "{} drunk from {} to {}:\n".format(flavor, dtf, dtt)
130 for (un, cnt) in self.top:
131 self.msg += "{}: {}\n".format(un, cnt)