You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# coding: utf-8 # @ 2015 Valentin CHEMIERE @ Akretion # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields, api from ..tasks.filestore import FileStoreTask from ..tasks.ftp import FtpTask from ..tasks.sftp import SftpTask
class Location(models.Model): _name = 'external.file.location' _description = 'Location'
name = fields.Char(string='Name', required=True) protocol = fields.Selection(selection='_get_protocol', required=True) address = fields.Char( string='Address') filestore_rootpath = fields.Char( string='FileStore Root Path', help="Server's root path") port = fields.Integer() login = fields.Char() password = fields.Char() task_ids = fields.One2many('external.file.task', 'location_id') hide_login = fields.Boolean() hide_password = fields.Boolean() hide_port = fields.Boolean() company_id = fields.Many2one( 'res.company', 'Company', default=lambda self: self.env['res.company']._company_default_get( 'external.file.location'))
@api.model def _get_classes(self): "surcharge this method to add new protocols" return { 'ftp': ('FTP', FtpTask), 'sftp': ('SFTP', SftpTask), 'file_store': ('File Store', FileStoreTask), }
@api.model def _get_protocol(self): protocols = self._get_classes() selection = [] for key, val in protocols.iteritems(): selection.append((key, val[0])) return selection
@api.onchange('protocol') def onchange_protocol(self): protocols = self._get_classes() if self.protocol: cls = protocols.get(self.protocol)[1] self.port = cls._default_port if cls._hide_login: self.hide_login = True else: self.hide_login = False if cls._hide_password: self.hide_password = True else: self.hide_password = False if cls._hide_port: self.hide_port = True else: self.hide_port = False
|