]> rtime.felk.cvut.cz Git - hubacji1/coffee-getter.git/blob - cbgetter.py
Add test cases for equal drinkers
[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             ", oops",
30             " - real hero",
31             " because couldn't resist",
32             " - drunken master",
33             ", woohoo",
34             " - unbeatable",
35             " - superultramaxidrinker",
36             " and didn't sleep last week",
37             " in last 604800 seconds",
38             ", no idea how",
39             " and still drinking",
40         ]
41         ri = randint(0, len(hsuff) - 1)
42         return hsuff[ri]
43
44     def getSomeSmile(self):
45         """Return some Slack smile."""
46         smiles = [
47             ":party_parrot:",
48             ":cat2:",
49             ":heavy_check_mark:",
50             ":baby_bottle:",
51             ":+1:",
52             ":aaw_yeah:",
53             ":better:",
54         ]
55         ri = randint(0, len(smiles) - 1)
56         return smiles[ri]
57
58     def loadTopMateDrinkers(self):
59         """Get list of top Mate drinkers, update message."""
60         self.msg = "*Top 5 Club-Mate drinkers*\n"
61         self.top = self.db.getTopMateDrinkers()
62         totl = [c for (un, c) in self.top]
63         tot = sum(totl)
64         isuff = {1: "st", 2: "nd", 3: "rd", 4: "th", 5: "th"}
65         i = 1
66         for (un, c) in self.top[:5]:
67             self.msg += "{}{} is *{}* who drank `{:.2f}` liters".format(
68                 i, isuff[i],
69                 un,
70                 c
71             )
72             if i == 1:
73                 self.msg += self.getHeroComment()
74             self.msg += "\n"
75             i += 1
76         self.msg += "\n"
77         self.msg += "Oh, and together we drank *{:.2f}* liters {}".format(
78             tot,
79             self.getSomeSmile()
80         )
81         return