summaryrefslogtreecommitdiff
path: root/be/points.py
blob: 9ad693ba22eb8ad6514d707d03bb1f5b8c8b90a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import shelve


def init_databases(teams, clear=False):
    with shelve.open("points.db", writeback=True) as db:
        for team in teams:
            if team not in db or clear:
                db[team] = {}
                db[team]["__total"] = 0
    with shelve.open("settings.db", writeback=True) as db:
        if "multiplier" not in db or clear:
            db["multiplier"] = {}
        for team in teams:
            if team not in db["multiplier"] or clear:
                db["multiplier"][team] = 1
        db["prompt"] = ""


# def init_settings(clear=False):
#     with shelve.open("settings.db") as db:
#         if "multiplier" not in db or clear:
#             db["multiplier"] = 1


def increment_points(team, username, amount):
    with shelve.open("points.db", writeback=True) as db:
        if username not in db[team]:
            db[team][username] = 0
        db[team][username] += amount
        db[team]["__total"] += amount
        return db[team][username]


def get_user_points(team, username):
    with shelve.open("points.db") as db:
        if username in db[team]:
            return db[team][username]
        return 0


def get_team_points(team):
    return get_user_points(team, "__total")


def get_leaderboard():
    multipliers = None
    with shelve.open("settings.db") as db:
        multipliers = db["multiplier"]
    with shelve.open("points.db") as db:
        return {
            "settings": {
                "prompt": get_prompt(),
                "multiplier": multipliers
                }
                ,
            "points": dict(db),
        }


def get_multiplier(team):
    with shelve.open("settings.db") as db:
        return db["multiplier"][team]


def set_multiplier(team, multiplier):
    with shelve.open("settings.db", writeback=True) as db:
        db["multiplier"][team] = multiplier
        return db["multiplier"][team]


def get_prompt():
    with shelve.open("settings.db") as db:
        return db["prompt"]


def set_prompt(prompt):
    with shelve.open("settings.db", writeback=True) as db:
        db["prompt"] = prompt
        return db["prompt"]