support for autoremoving X days old files
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user