bemade-addons/bemade_git_repos_addons/wizard/directory_wizard.py
2025-05-29 21:35:47 -04:00

83 lines
No EOL
2.8 KiB
Python

from odoo import models, fields, api
import os
class DirectoryWizard(models.TransientModel):
_name = 'directory.wizard'
_description = 'Directory Wizard'
# Directories to exclude from the list, including hidden directories and directories that are not relevant
EXCLUDED_DIRS = [
'.idea',
'.cache',
'.config',
'.git',
'.local',
'.odoo-deploy',
'.ssh',
'.testing',
'conf',
'design-themes',
'enterprise',
'filestore',
'Notes',
'odoo',
'server',
'themes',
'tools',
'venv',
]
def _get_directory_list(self):
# Fetch all directories in the current working directory
directories = [(d, d) for d in os.listdir(os.getcwd())
if os.path.isdir(d) and d not in self.EXCLUDED_DIRS]
return directories
addons_dir = fields.Selection(_get_directory_list, string='Addons Directory')
repos_dir = fields.Selection(_get_directory_list, string='Repos Directory')
new_directory = fields.Char(string='New Directory')
def create_directory(self):
for record in self:
if not os.path.exists(record.new_directory):
os.makedirs(record.new_directory)
wizard = self.create({'new_directory': False}) # reset the value of new_directory
return {
'name': 'Directory Wizard',
'res_model': self._name,
'res_id': wizard.id,
'views': [(False, 'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
else:
return {
'warning': {
'title': "Directory Exists",
'message': "The directory already exists, please choose another name or directory.",
}
}
def apply_selections(self):
IrConfigParameter = self.env['ir.config_parameter']
if self.addons_dir:
IrConfigParameter.set_param('bemade_git_repos_addons.addons_dir', self.addons_dir)
if self.repos_dir:
IrConfigParameter.set_param('bemade_git_repos_addons.clone_dir', self.repos_dir)
return {}
@api.model
def default_get(self, fields):
res = super().default_get(fields)
addons_dir = self.env['ir.config_parameter'].get_param('bemade_git_repos_addons.addons_dir')
repos_dir = self.env['ir.config_parameter'].get_param('bemade_git_repos_addons.clone_dir')
if 'addons_dir' in fields and addons_dir:
res['addons_dir'] = addons_dir
if 'repos_dir' in fields and repos_dir:
res['repos_dir'] = repos_dir
return res