# -*- coding: utf-8 -*- from datetime import datetime import argparse import common def datefmt(): """ Get adapted date format """ today = datetime.today() return today.strftime('%Y-%m-%d_%Hh%Mm%Ss') def dump(odoo, bakpath, password, dbnames): """ Dumps a database list """ for dbname in dbnames: dump = odoo.db.dump(password, dbname) fpath = '{bakpath}/{date}_{dbname}.zip'.format(bakpath=bakpath, dbname=dbname, date=datefmt()) with open(fpath, 'wb') as zipf: zipf.write(dump.read()) return True def dump_all(odoo, bakpath, password): """ Dump all databases """ return dump(odoo, bakpath, password, odoo.db.list()) def main(): """ Main function with argument parsing """ parser = argparse.ArgumentParser(description='Backup Odoo databases') parser = common.parser(parser) parser.add_argument('-pw', '--password', type=str, required=True, help='the odoo master password') parser.add_argument('-D', '--directory', type=str, required=True, help='the directory path where to save backups') parser.add_argument('-n', '--names', type=str, help='optional database names (default:all)') args = parser.parse_args() # Connection odoo = common.connection(args) # Backup actions if not args.names: dump_all(odoo, args.directory, args.password) else: dump(odoo, args.directory, args.password, args.names.split(',')) if __name__ == "__main__": main()