Browse Source

[ADD] allow setting an alternative temporary directory

pull/1308/head
Holger Brunn 6 years ago
parent
commit
c85d5119e5
No known key found for this signature in database GPG Key ID: 1C9760FECA3AE18
  1. 20
      auto_backup/models/db_backup.py
  2. 1
      auto_backup/view/db_backup_view.xml

20
auto_backup/models/db_backup.py

@ -6,6 +6,7 @@
import os
import shutil
import tempfile
import traceback
from contextlib import contextmanager
from datetime import datetime, timedelta
@ -54,6 +55,11 @@ class DbBackup(models.Model):
default="local",
help="Choose the storage method for this backup.",
)
tempdir = fields.Char(
string="Temporary directory",
help="Backups first go to a temporary directory. In case you need to "
"put them somewhere else, fill in the directory here",
)
sftp_host = fields.Char(
string='SFTP Server',
oldname="sftpip",
@ -154,7 +160,8 @@ class DbBackup(models.Model):
shutil.copyfileobj(cached, destiny)
# Generate new backup
else:
db.dump_db(self.env.cr.dbname, destiny)
with rec.custom_tempdir():
db.dump_db(self.env.cr.dbname, destiny)
backup = backup or destiny.name
successful |= rec
@ -191,6 +198,17 @@ class DbBackup(models.Model):
"""Run all scheduled backups."""
return self.search([]).action_backup()
@api.multi
@contextmanager
def custom_tempdir(self):
old_tempdir = tempfile.tempdir
if self.tempdir:
tempfile.tempdir = self.tempdir
try:
yield
finally:
tempfile.tempdir = old_tempdir
@api.multi
@contextmanager
def backup_log(self):

1
auto_backup/view/db_backup_view.xml

@ -14,6 +14,7 @@
<field name="folder"/>
<field name="days_to_keep"/>
<field name="method"/>
<field name="tempdir" attrs="{'invisible': [('method', '!=', 'local')]}" groups="base.group_no_one" />
</group>
<div attrs="{'invisible': [('method', '!=', 'sftp')]}">
<div class="bg-warning text-warning">

Loading…
Cancel
Save