1
1
from tinydb import TinyDB , Query
2
-
2
+ from threading import Lock
3
3
# Programs and Activities databases
4
4
class Activities ():
5
5
_instance = None
@@ -13,34 +13,39 @@ def get_instance(cls):
13
13
def __init__ (self ):
14
14
self .activities = TinyDB ("data/activities.json" )
15
15
self .query = Query ()
16
+ self .lock = Lock ()
16
17
17
18
def load (self , name , default ):
18
- if name and default is None :
19
- activities = self .activities .search (self .query .name == name )
20
- if len (activities ) > 0 :
21
- return activities [0 ]
22
- elif default is not None :
23
- if len (self .activities .search (self .query .default == True )) > 0 :
24
- return self .activities .search (self .query .default == True )[0 ]
19
+ with self .lock :
20
+ if name and default is None :
21
+ activities = self .activities .search (self .query .name == name )
22
+ if len (activities ) > 0 :
23
+ return activities [0 ]
24
+ elif default is not None :
25
+ if len (self .activities .search (self .query .default == True )) > 0 :
26
+ return self .activities .search (self .query .default == True )[0 ]
27
+ return None
25
28
return None
26
- return None
27
29
28
30
def save (self , name , activity ):
29
- # if saved activity is "default", reset existing default activity to "non-default"
30
- if activity .get ("default" , False ) is True :
31
- self .activities .update ({'default' : False })
32
- if self .activities .search (self .query .name == name ) == []:
33
- self .activities .insert (activity )
34
- else :
35
- self .activities .update (activity , self .query .name == activity ["name" ])
31
+ with self .lock :
32
+ # if saved activity is "default", reset existing default activity to "non-default"
33
+ if activity .get ("default" , False ) is True :
34
+ self .activities .update ({'default' : False })
35
+ if self .activities .search (self .query .name == name ) == []:
36
+ self .activities .insert (activity )
37
+ else :
38
+ self .activities .update (activity , self .query .name == activity ["name" ])
36
39
37
40
def delete (self , name ):
38
- activities = self .activities .search (self .query .name == name )
39
- if len (activities ) > 0 :
40
- activity = activities [0 ]
41
- if activity .get ("default" , False ) is True :
42
- self .activities .update ({'default' : True }, self .query .stock == True )
43
- self .activities .remove (self .query .name == activity ["name" ])
41
+ with self .lock :
42
+ activities = self .activities .search (self .query .name == name )
43
+ if len (activities ) > 0 :
44
+ activity = activities [0 ]
45
+ if activity .get ("default" , False ) is True :
46
+ self .activities .update ({'default' : True }, self .query .stock == True )
47
+ self .activities .remove (self .query .name == activity ["name" ])
44
48
45
49
def list (self ):
46
- return self .activities .all ()
50
+ with self .lock :
51
+ return self .activities .all ()
0 commit comments