11from tinydb import TinyDB , Query
2-
2+ from threading import Lock
33# Programs and Activities databases
44class Activities ():
55 _instance = None
@@ -13,34 +13,39 @@ def get_instance(cls):
1313 def __init__ (self ):
1414 self .activities = TinyDB ("data/activities.json" )
1515 self .query = Query ()
16+ self .lock = Lock ()
1617
1718 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
2528 return None
26- return None
2729
2830 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" ])
3639
3740 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" ])
4448
4549 def list (self ):
46- return self .activities .all ()
50+ with self .lock :
51+ return self .activities .all ()
0 commit comments