# -*- coding: utf-8 -*-

"""
Backup plan for Odoo databases
::::::::::::::::::::::::::::::

Keep :

- all saves the last week
- one save per week the last month
- one save per month the last year
"""

from datetime import datetime
from os import unlink
from glob import glob

DT = datetime.now()

def notkeep(fname):
    """ Filter all obsolete save files """
    fname = fname.split('/')[-1]
    fname = fname.split('_')
    if len(fname) <= 1:
        return False
    save_date = fname[0]
    save_date = datetime.strptime(save_date, '%Y-%m-%d')
    delta = DT - save_date
    if delta.days > 365:
        return True
    elif delta.days > 31:
        if save_date.day != 1:
            return True
    elif delta.days > 7:
        if (save_date.weekday() != 0) and (save_date.day != 1):
            return True
    else:
        return False

# Filters zip files and keeps only legitimate ones
# ================================================

FILES = glob('backups/*.zip') + glob('backups/*.dump')
BACKUPS_TO_REMOVE = filter(notkeep, FILES)

if len(BACKUPS_TO_REMOVE) > 0:
    print('Save files outdated, will be deleted : \n\n* ' +
          '\n* '.join(BACKUPS_TO_REMOVE))

for b in BACKUPS_TO_REMOVE:
    unlink(b)