From 6a2bc89fb62a5221d9c09bf4096f16a03538f547 Mon Sep 17 00:00:00 2001 From: Alaguraj0361 Date: Mon, 22 Jun 2026 18:04:36 +0530 Subject: [PATCH] Refactor database operations in SaaS controller and restaurant model for improved clarity and functionality --- .../dine360_saas_master/controllers/saas_api.py | 4 +--- .../dine360_saas_master/data/saas_plan_data.xml | 2 +- .../dine360_saas_master/models/saas_backup.py | 2 +- .../models/saas_restaurant.py | 17 ++++++++++++----- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/addons/dine360_saas_master/controllers/saas_api.py b/addons/dine360_saas_master/controllers/saas_api.py index cad7d74..0aa1a82 100644 --- a/addons/dine360_saas_master/controllers/saas_api.py +++ b/addons/dine360_saas_master/controllers/saas_api.py @@ -134,11 +134,9 @@ class SaasApiController(http.Controller): restaurant = request.env['saas.restaurant'].sudo().search([('database_name', '=', db_name)], limit=1) if not restaurant: return self._json_response({'error': 'Restaurant database not found'}, status=404) - try: - master_pwd = config.get('admin_passwd', 'admin') # 1. Drop database in PostgreSQL via Odoo service API - db.exp_drop(master_pwd, db_name) + db.exp_drop(db_name) # 2. Delete database registry entry in master restaurant.unlink() return self._json_response({'success': True}) diff --git a/addons/dine360_saas_master/data/saas_plan_data.xml b/addons/dine360_saas_master/data/saas_plan_data.xml index 5703315..c4b4618 100644 --- a/addons/dine360_saas_master/data/saas_plan_data.xml +++ b/addons/dine360_saas_master/data/saas_plan_data.xml @@ -32,7 +32,7 @@ SaaS Welcome Email Welcome to your Dine360 Restaurant Platform! - {{ object.company_id.email or object.env.user.email_formatted }} + {{ object.env.company.email or object.env.user.email_formatted }} {{ object.email }}
diff --git a/addons/dine360_saas_master/models/saas_backup.py b/addons/dine360_saas_master/models/saas_backup.py index 9cbb08a..0c445b8 100644 --- a/addons/dine360_saas_master/models/saas_backup.py +++ b/addons/dine360_saas_master/models/saas_backup.py @@ -51,7 +51,7 @@ class SaasBackup(models.Model): _logger.info(f"Dumping database {db_name} to {temp_filepath}...") with open(temp_filepath, 'wb') as f: # Odoo service dump database to stream - db.dump_db(db_name, f, format='zip') + db.dump_db(db_name, f, backup_format='zip') _logger.info("Database dumped successfully.") # S3 upload logic diff --git a/addons/dine360_saas_master/models/saas_restaurant.py b/addons/dine360_saas_master/models/saas_restaurant.py index e05fc9e..217f60a 100644 --- a/addons/dine360_saas_master/models/saas_restaurant.py +++ b/addons/dine360_saas_master/models/saas_restaurant.py @@ -74,12 +74,19 @@ class SaasRestaurant(models.Model): raise UserError(f"Database {self.database_name} already exists in PostgreSQL!") # 1. Provision PostgreSQL database - master_pwd = config.get('admin_passwd', 'admin') admin_pass = ''.join(random.choices(string.ascii_letters + string.digits, k=12)) try: _logger.info(f"Creating database {self.database_name}...") - db.exp_create_database(master_pwd, self.database_name, False, 'en_US', admin_pass) + db.exp_create_database( + self.database_name, + False, + 'en_US', + user_password=admin_pass, + login=self.email, + country_code=self.country_id.code if self.country_id else None, + phone=self.phone + ) _logger.info(f"Database {self.database_name} created successfully.") except Exception as e: raise UserError(f"PostgreSQL database creation failed: {str(e)}") @@ -96,7 +103,7 @@ class SaasRestaurant(models.Model): with tenant_registry.cursor() as cr: env = api.Environment(cr, SUPERUSER_ID, {}) module_objs = env['ir.module.module'].search([('name', 'in', modules_to_install)]) - module_objs.write({'state': 'to_install'}) + module_objs.write({'state': 'to install'}) cr.commit() # Run immediate install for Odoo base module_objs.button_immediate_install() @@ -127,8 +134,8 @@ class SaasRestaurant(models.Model): 'name': self.owner_name, 'login': self.email, 'email': self.email, + 'password': admin_pass, }) - admin_user._set_password(admin_pass) # Set timezone admin_user.partner_id.tz = self.timezone @@ -138,7 +145,7 @@ class SaasRestaurant(models.Model): # If provisioning fails midway, drop the database to allow clean retry _logger.error(f"Failed configuring tenant registry: {str(e)}") try: - db.exp_drop(master_pwd, self.database_name) + db.exp_drop(self.database_name) except Exception: pass raise UserError(f"Database provisioning / module installation failed: {str(e)}")