|
| 1 | +import logging |
1 | 2 | from tinydb import TinyDB, Query
|
2 | 3 | from threading import Lock
|
3 | 4 | from datetime import datetime
|
@@ -29,11 +30,16 @@ def __init__(self):
|
29 | 30 | self.activities = TinyDB("data/activities.json")
|
30 | 31 | self.query = Query()
|
31 | 32 | self.lock = Lock()
|
| 33 | + self.permanentlyRemoveDeletedActivities() |
32 | 34 |
|
33 |
| - def load(self, name, default): |
| 35 | + def load(self, name, default, active_only=True): |
34 | 36 | with self.lock:
|
35 | 37 | if name and default is None:
|
36 |
| - activities = self.activities.search(self.query.name == name) |
| 38 | + activities = [] |
| 39 | + if active_only: |
| 40 | + self.activities.search((self.query.name == name) & (self.query.status == ACTIVITY_STATUS_ACTIVE)) |
| 41 | + else: |
| 42 | + self.activities.search(self.query.name == name) |
37 | 43 | if len(activities) > 0:
|
38 | 44 | return activities[0]
|
39 | 45 | elif default is not None:
|
@@ -66,7 +72,16 @@ def delete(self, name, logical = True):
|
66 | 72 | else:
|
67 | 73 | self.activities.remove(self.query.name == activity["name"])
|
68 | 74 |
|
| 75 | + def permanentlyRemoveDeletedActivities(self): |
| 76 | + for a in self.list(active_only=False): |
| 77 | + logging.info("checking: " + a["name"]) |
| 78 | + if a["status"] == ACTIVITY_STATUS_DELETED: |
| 79 | + logging.info("deleting: " + a["name"]) |
| 80 | + self.delete(a["name"], logical=False) |
69 | 81 |
|
70 | 82 | def list(self, active_only = True):
|
71 | 83 | with self.lock:
|
72 |
| - return self.activities.search(self.query.status == ACTIVITY_STATUS_ACTIVE) |
| 84 | + if active_only: |
| 85 | + return self.activities.search(self.query.status == ACTIVITY_STATUS_ACTIVE) |
| 86 | + else: |
| 87 | + return self.activities.all() |
0 commit comments