fixed long term absence visitor check
parent
f758b8bbbf
commit
94584a2a36
30
botany.py
30
botany.py
|
@ -220,17 +220,11 @@ class Plant(object):
|
||||||
user_dir = os.path.expanduser("~")
|
user_dir = os.path.expanduser("~")
|
||||||
botany_dir = os.path.join(user_dir,'.botany')
|
botany_dir = os.path.join(user_dir,'.botany')
|
||||||
visitor_filepath = os.path.join(botany_dir,'visitors.json')
|
visitor_filepath = os.path.join(botany_dir,'visitors.json')
|
||||||
latest_timestamp = 0
|
guest_timestamps = []
|
||||||
visitors_this_check = []
|
visitors_this_check = []
|
||||||
if os.path.isfile(visitor_filepath):
|
if os.path.isfile(visitor_filepath):
|
||||||
with open(visitor_filepath, 'r') as visitor_file:
|
with open(visitor_filepath, 'r') as visitor_file:
|
||||||
data = json.load(visitor_file)
|
data = json.load(visitor_file)
|
||||||
# TODO: this needs to check if the latest timestamp is greater
|
|
||||||
# than 5 days
|
|
||||||
# need to check for delta of at minimum 5 days between waters
|
|
||||||
# to make sure plant is alive
|
|
||||||
# check each visitor time, calculate delta between this and last
|
|
||||||
# watering
|
|
||||||
if data:
|
if data:
|
||||||
for element in data:
|
for element in data:
|
||||||
if element['user'] not in self.visitors:
|
if element['user'] not in self.visitors:
|
||||||
|
@ -239,11 +233,7 @@ class Plant(object):
|
||||||
visitors_this_check.append(element['user'])
|
visitors_this_check.append(element['user'])
|
||||||
# prevent users from manually setting watered_time in the future
|
# prevent users from manually setting watered_time in the future
|
||||||
if element['timestamp'] < int(time.time()):
|
if element['timestamp'] < int(time.time()):
|
||||||
# need to check here for delta between this
|
guest_timestamps.append(element['timestamp'])
|
||||||
# element and last element (also json load might
|
|
||||||
# not be sorted...
|
|
||||||
if element['timestamp'] > latest_timestamp:
|
|
||||||
latest_timestamp = element['timestamp']
|
|
||||||
try:
|
try:
|
||||||
self.update_visitor_db(visitors_this_check)
|
self.update_visitor_db(visitors_this_check)
|
||||||
except:
|
except:
|
||||||
|
@ -254,14 +244,18 @@ class Plant(object):
|
||||||
with open(visitor_filepath, mode='w') as f:
|
with open(visitor_filepath, mode='w') as f:
|
||||||
json.dump([], f)
|
json.dump([], f)
|
||||||
os.chmod(visitor_filepath, 0666)
|
os.chmod(visitor_filepath, 0666)
|
||||||
return latest_timestamp
|
return guest_timestamps
|
||||||
|
|
||||||
def water_check(self):
|
def water_check(self):
|
||||||
latest_visitor_timestamp = self.guest_check()
|
visitor_timestamps = [self.watered_timestamp] + self.guest_check()
|
||||||
if latest_visitor_timestamp > self.watered_timestamp:
|
visitor_timestamps.sort()
|
||||||
visitor_delta_watered = latest_visitor_timestamp - self.watered_timestamp
|
# calculate # of days between each water in log
|
||||||
if visitor_delta_watered <= (5 * (24 * 3600)):
|
timestamp_diffs = [(j-i)/86400.0 for i, j in zip(visitor_timestamps[:-1], visitor_timestamps[1:])]
|
||||||
self.watered_timestamp = latest_visitor_timestamp
|
# check to make sure each time diff is <= 5 days otherwise the plant
|
||||||
|
# hasn't been watered at sub-5-day intervals, which means it dies
|
||||||
|
# otherwise it will take the highest timestamp in the list
|
||||||
|
if all(i <= 5 for i in timestamp_diffs):
|
||||||
|
self.watered_timestamp = visitor_timestamps[-1]
|
||||||
self.time_delta_watered = int(time.time()) - self.watered_timestamp
|
self.time_delta_watered = int(time.time()) - self.watered_timestamp
|
||||||
if self.time_delta_watered <= (24 * 3600):
|
if self.time_delta_watered <= (24 * 3600):
|
||||||
if not self.watered_24h:
|
if not self.watered_24h:
|
||||||
|
|
Loading…
Reference in New Issue