support for autoremoving X days old files

This commit is contained in:
2018-11-17 23:24:32 +02:00
parent 70420bd035
commit 375628255d
5 changed files with 164 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
import os
from datetime import datetime
from dateutil.relativedelta import relativedelta
from flask import current_app as app
import requests
import re
@@ -92,6 +93,44 @@ def download_url(url, filename):
return (True, ("OK", 200 ))
def file_autoremove(path, share, notifier = None):
autoremove = get_or_none('autoremove', share, 0)
if autoremove == 0:
return
full_path = os.path.join(
share['path'],
path
)
age, age_str = file_age(full_path)
if age.days >= autoremove:
os.remove(full_path)
if notifier != None:
notifier({
"recipient": get_or_none('recipient', share),
"share": share['name'],
"filename": full_path,
"file_age": age_str,
"operation": "autoremove"
})
return True
return False
def file_age(path):
now = datetime.now()
then = datetime.fromtimestamp(
os.stat(path).st_mtime
)
diff = now - then
rdiff = relativedelta(now, then)
return diff, "%dM %02dD %02d:%02dH" % (
rdiff.years * 12 + rdiff.months,
rdiff.days,
rdiff.hours,
rdiff.minutes
)
def file_date_human(num):
return datetime.fromtimestamp(
num