Skip to content

Commit

Permalink
[MIG] auto_backup: Migration to 17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rpinset authored and Christian-RB committed Feb 14, 2025
1 parent 829983a commit 61809ff
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 64 deletions.
5 changes: 3 additions & 2 deletions auto_backup/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,9 @@ Known issues / Roadmap
- On larger databases, it is possible that backups will die due to Odoo
server settings. In order to circumvent this without frivolously
changing settings, you need to run the backup from outside of the main
Odoo instance. How to do this is outlined in `this blog
post <https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/>`__.
Odoo instance. How to do this (for version 9.0) was outlined in `this
blog
post <https://web.archive.org/web/20240805225230/https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/>`__.
- Backups won't work if list_db=False is configured in the instance.

Bug Tracker
Expand Down
2 changes: 1 addition & 1 deletion auto_backup/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
{
"name": "Database Auto-Backup",
"summary": "Backups database",
"version": "16.0.1.0.0",
"version": "17.0.1.0.0",
"author": "Yenthe Van Ginneken, "
"Agile Business Group, "
"Grupo ESOC Ingenieria de Servicios, "
Expand Down
7 changes: 3 additions & 4 deletions auto_backup/models/db_backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,7 @@ def backup_log(self):
_logger.exception("Database backup failed: %s", self.name)
escaped_tb = tools.html_escape(traceback.format_exc())
self.message_post( # pylint: disable=translation-required
body="<p>%s</p><pre>%s</pre>"
% (_("Database backup failed."), escaped_tb),
body=f"<p>{_('Database backup failed.')}</p><pre>{escaped_tb}</pre>",
subtype_id=self.env.ref("auto_backup.mail_message_subtype_failure").id,
)
else:
Expand Down Expand Up @@ -264,8 +263,8 @@ def cleanup_log(self):
_logger.exception("Cleanup of old database backups failed: %s")
escaped_tb = tools.html_escape(traceback.format_exc())
self.message_post( # pylint: disable=translation-required
body="<p>%s</p><pre>%s</pre>"
% (_("Cleanup of old database backups failed."), escaped_tb),
body=f"<p>{_('Cleanup of old database backups failed.')}</p>"
f"<pre>{escaped_tb}</pre>",
subtype_id=self.env.ref("auto_backup.failure").id,
)
else:
Expand Down
4 changes: 2 additions & 2 deletions auto_backup/readme/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
- On larger databases, it is possible that backups will die due to Odoo
server settings. In order to circumvent this without frivolously
changing settings, you need to run the backup from outside of the main
Odoo instance. How to do this is outlined in [this blog
post](https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/).
Odoo instance. How to do this (for version 9.0) was outlined in [this blog
post](https://web.archive.org/web/20240805225230/https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/).
- Backups won't work if list_db=False is configured in the instance.
3 changes: 2 additions & 1 deletion auto_backup/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,8 @@ <h1><a class="toc-backref" href="#toc-entry-11">Known issues / Roadmap</a></h1>
<li>On larger databases, it is possible that backups will die due to Odoo
server settings. In order to circumvent this without frivolously
changing settings, you need to run the backup from outside of the main
Odoo instance. How to do this is outlined in <a class="reference external" href="https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/">this blog
Odoo instance. How to do this (for version 9.0) was outlined in <a class="reference external" href="https://web.archive.org/web/20240805225230/https://blog.laslabs.com/2016/10/running-python-scripts-within-odoos-environment/">this
blog
post</a>.</li>
<li>Backups won’t work if list_db=False is configured in the instance.</li>
</ul>
Expand Down
21 changes: 8 additions & 13 deletions auto_backup/tests/test_db_backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@

from odoo import tools
from odoo.exceptions import UserError
from odoo.tests import common

from odoo.addons.base.tests.common import BaseCommon

_logger = logging.getLogger(__name__)
try:
Expand All @@ -27,13 +28,13 @@

class TestConnectionException(pysftp.ConnectionException):
def __init__(self):
super(TestConnectionException, self).__init__("test", "test")
super().__init__("test", "test")


class TestDbBackup(common.TransactionCase):
def setUp(self):
super(TestDbBackup, self).setUp()
self.Model = self.env["db.backup"]
class TestDbBackup(BaseCommon):
def setUpClass(cls):
super().setUpClass(cls)
cls.Model = cls.env["db.backup"]

@contextmanager
def mock_assets(self):
Expand Down Expand Up @@ -77,13 +78,7 @@ def test_compute_name_sftp(self):
"""It should create proper SFTP URI"""
rec_id = self.new_record()
self.assertEqual(
"sftp://%(user)s@%(host)s:%(port)s%(folder)s"
% {
"user": self.vals["sftp_user"],
"host": self.vals["sftp_host"],
"port": self.vals["sftp_port"],
"folder": self.vals["folder"],
},
f"sftp://{self.vals['sftp_user']}@{self.vals['sftp_host']}:{self.vals['sftp_port']}{self.vals['folder']}",
rec_id.name,
)

Expand Down
89 changes: 48 additions & 41 deletions auto_backup/view/db_backup_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,49 +12,56 @@
class="oe_highlight"
/>
</header>
<div class="oe_title">
<h1>
<field name="name" />
</h1>
</div>
<group string="Basic backup configuration">
<field name="folder" />
<field name="days_to_keep" />
<field name="method" />
<field name="backup_format" />
</group>
<div attrs="{'invisible': [('method', '!=', 'sftp')]}">
<div class="bg-warning">
<h3>Warning:</h3>
Use SFTP with caution! This writes files to external servers under the path you specify.
<sheet>
<div class="oe_title">
<h1>
<field name="name" />
</h1>
</div>
<group string="SFTP Settings">
<field name="sftp_host" placeholder="sftp.example.com" />
<field name="sftp_port" />
<field name="sftp_user" placeholder="john" />
<field name="sftp_password" />
<field
name="sftp_private_key"
placeholder="/home/odoo/.ssh/id_rsa"
/>
<button
name="action_sftp_test_connection"
type="object"
string="Test SFTP Connection"
icon="fa-television"
/>
<group string="Basic backup configuration">
<field name="folder" />
<field name="days_to_keep" />
<field name="method" />
<field name="backup_format" />
</group>
</div>
<separator string="Help" colspan="2" />
<div>
Automatic backups of the database can be scheduled as follows:
<ol>
<li
>Go to Settings / Technical / Automation / Scheduled Actions.</li>
<li>Search the action named 'Backup scheduler'.</li>
<li
>Set the scheduler to active and fill in how often you want backups generated.</li>
</ol>
<div invisible="method != 'sftp'">
<div class="bg-warning">
<h3>Warning:</h3>
Use SFTP with caution! This writes files to external servers under the path you specify.
</div>
<group string="SFTP Settings">
<field name="sftp_host" placeholder="sftp.example.com" />
<field name="sftp_port" />
<field name="sftp_user" placeholder="john" />
<field name="sftp_password" />
<field
name="sftp_private_key"
placeholder="/home/odoo/.ssh/id_rsa"
/>
<button
name="action_sftp_test_connection"
type="object"
string="Test SFTP Connection"
icon="fa-television"
/>
</group>
</div>
<separator string="Help" colspan="2" />
<div>
Automatic backups of the database can be scheduled as follows:
<ol>
<li
>Go to Settings / Technical / Automation / Scheduled Actions.</li>
<li>Search the action named 'Backup scheduler'.</li>
<li
>Set the scheduler to active and fill in how often you want backups generated.</li>
</ol>
</div>
</sheet>
<!-- Chatter -->
<div class="oe_chatter">
<field name="message_follower_ids" groups="base.group_user" />
<field name="message_ids" />
</div>
</form>
</field>
Expand Down

0 comments on commit 61809ff

Please sign in to comment.