| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/usr/bin/python3
- from flask import Flask, render_template
- import json
- from datetime import datetime, date, timedelta
- import re
- import os.path, time
- app = Flask(__name__)
- @app.route('/')
- def index():
- try:
- with open('/tmp/restic_forget.txt', 'r') as f:
- content = f.read()
- match = re.search(r'{(.+?)}', content)
- if match:
- elements = match.group(1).split()
- forget_list = [str(element) for element in elements]
- except:
- forget_list = []
- with open('/tmp/restic.json') as f:
- data = json.load(f)
- for item in data:
- if item['short_id'] in forget_list:
- item['mopped'] = True
- else:
- item['mopped'] = ''
-
- today = date.today().strftime("%d.%m.%Y")
- tp = time.localtime(os.path.getmtime('/tmp/restic.json'))
- # convert struct_time to string with strftime, the result looks like "2022-03-30 12:23:55"
- tmp_restic_json_date = time.strftime('%d.%m.%Y %H:%M:%S', tp)
- try:
- tp = time.localtime(os.path.getmtime('/tmp/restic_forget.txt'))
- # convert struct_time to string with strftime, the result looks like "2022-03-30 12:23:55"
- tmp_restic_forget_date = time.strftime('/tmp/restic_forget.txt vom %d.%m.%Y %H:%M:%S', tp)
- except:
- tmp_restic_forget_date = ''
- return render_template( 'table.html', data=data, today=today,
- tmp_restic_json_date=tmp_restic_json_date,
- tmp_restic_forget_date=tmp_restic_forget_date )
- if __name__ == '__main__':
- app.run(port=5001, host='0.0.0.0', FLASK_ENV='development')
- # -------------------------------------------------- helper routines ---
- def parse_date(date_string):
- formats = (
- '%Y-%m-%dT%H:%M:%S%z',
- '%Y-%m-%dT%H:%M:%S.%f%z',
- '%Y-%m-%dT%H:%M:%SZ'
- )
- if len(date_string) > 26:
- tz = 'Z'
- m = re.search(r"(\+.*?)$", date_string)
- if m:
- tz = m[0]
- date_string = date_string[0:19] + tz #'Z+0000'
- for fmt in formats:
- try:
- return datetime.strptime(date_string, fmt)
- except ValueError:
- raise ValueError('no valid date format found for %s' % date_string)
- # https://stackoverflow.com/questions/6036082/call-a-python-function-from-jinja2
- # colors from
- @app.context_processor
- def utility_processor():
- def time_class(rtime):
- date_obj = parse_date(rtime)
- diff = date.today() - date_obj.date()
- if diff <= timedelta(days=0):
- return 'daily1'
- elif diff <= timedelta(days=1):
- return 'daily2'
- elif diff <= timedelta(days=7):
- return 'daily3'
- elif diff <= timedelta(days=15):
- return 'weekly'
- elif diff <= timedelta(days=30):
- return 'monthly'
- elif diff <= timedelta(days=200):
- return 'yearly1'
- elif diff <= timedelta(days=400):
- return 'yearly2'
- else:
- return 'yearly3'
- def clean_date(rtime):
- date_obj = parse_date(rtime)
- return date_obj.strftime('%d.%m.%Y')
- def clean_datetime(rtime):
- date_obj = parse_date(rtime)
- return date_obj.strftime('%d.%m.%Y %H:%M')
- def forget_pattern(mopped):
- if mopped:
- return 'forget'
- else:
- return ''
- return dict( time_class=time_class, clean_date=clean_date,
- clean_datetime=clean_datetime,
- forget_pattern=forget_pattern )
|