]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/blob - cbgetter.py
d4fb60d3388df3ddcfed7aa2e243637e54b8b43b
[hubacji1/coffee-getter.git] / cbgetter.py
1 # -*- coding: utf-8 -*-
2 """Get data from database and publish them."""
3 from json import dumps
4 from random import randint
5 from requests import post
6 from cbconf import Conf
7 from cbdb import Db
8
9 class CoffeebotGetter:
10     """This class connects configuration, database access and publishing."""
11     def __init__(self):
12         self.cfg = Conf()
13         self.db = Db(self.cfg.getCoffeeDbPath())
14         self.msg = ""
15         self.top = []
16         return None
17
18     def getMsg(self):
19         """Return message."""
20         return self.msg
21
22     def sendMsgToSlack(self):
23         """Send message to Slack Bot."""
24         return post(self.cfg.getCoffeebotURL(), dumps({"text": self.msg}))
25
26     def getHeroComment(self):
27         """Return comment for hero."""
28         hsuff = [
29             " - yes",
30             " - no",
31             " - maybe",
32             #", oops",
33             #" - real hero",
34             #" because couldn't resist",
35             #" - drunken master",
36             #", woohoo",
37             #" - unbeatable",
38             #" - superultramaxidrinker",
39             #" and didn't sleep last week",
40             #" in last 604800 seconds",
41             #", no idea how",
42             #" and still drinking",
43         ]
44         ri = randint(0, len(hsuff) - 1)
45         return hsuff[ri]
46
47     def getSomeSmile(self):
48         """Return some Slack smile."""
49         smiles = [
50             ":party_parrot:",
51             ":cat2:",
52             ":heavy_check_mark:",
53             ":baby_bottle:",
54             ":+1:",
55             ":aaw_yeah:",
56             ":better:",
57         ]
58         ri = randint(0, len(smiles) - 1)
59         return smiles[ri]
60
61     def loadTopMateDrinkers(self):
62         """Get list of top Mate drinkers, update message."""
63         self.msg = "*Top 5 Club-Mate drinkers*\n"
64         self.top = self.db.getTopMateDrinkers()
65         totl = [c for (un, c) in self.top]
66         tot = sum(totl)
67         isuff = {1: "st", 2: "nd", 3: "rd", 4: "th", 5: "th"}
68         i = 1
69         for (un, c) in self.top[:5]:
70             self.msg += "{}{} is *{}* who drank `{:.2f}` liters".format(
71                 i, isuff[i],
72                 un,
73                 c
74             )
75             if i == 1:
76                 self.msg += self.getHeroComment()
77             self.msg += "\n"
78             i += 1
79         self.msg += "\n"
80         self.msg += "Oh, and together we drank *{:.2f}* liters {}".format(
81             tot,
82             self.getSomeSmile()
83         )
84         return