Browse Source

[ADD] allow setting an alternative temporary directory

pull/1308/head
Holger Brunn 7 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 os
import shutil import shutil
import tempfile
import traceback import traceback
from contextlib import contextmanager from contextlib import contextmanager
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -54,6 +55,11 @@ class DbBackup(models.Model):
default="local", default="local",
help="Choose the storage method for this backup.", 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( sftp_host = fields.Char(
string='SFTP Server', string='SFTP Server',
oldname="sftpip", oldname="sftpip",
@ -154,7 +160,8 @@ class DbBackup(models.Model):
shutil.copyfileobj(cached, destiny) shutil.copyfileobj(cached, destiny)
# Generate new backup # Generate new backup
else: 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 backup = backup or destiny.name
successful |= rec successful |= rec
@ -191,6 +198,17 @@ class DbBackup(models.Model):
"""Run all scheduled backups.""" """Run all scheduled backups."""
return self.search([]).action_backup() 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 @api.multi
@contextmanager @contextmanager
def backup_log(self): def backup_log(self):

1
auto_backup/view/db_backup_view.xml

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

Loading…
Cancel
Save