1
# -*- encoding: utf-8 -*-
2
###############################################################################
4
# ftp_external_referential for OpenERP #
5
# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@akretion.com> #
7
# This program is free software: you can redistribute it and/or modify #
8
# it under the terms of the GNU Affero General Public License as #
9
# published by the Free Software Foundation, either version 3 of the #
10
# License, or (at your option) any later version. #
12
# This program is distributed in the hope that it will be useful, #
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15
# GNU Affero General Public License for more details. #
17
# You should have received a copy of the GNU Affero General Public License #
18
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
20
###############################################################################
22
from openerp.osv.orm import Model
23
from base_external_referentials.decorator import only_for_referential, catch_error_in_report
25
Model._feo_record_one_external_resource = Model._record_one_external_resource #feo mean file_exchange_original
27
@only_for_referential(ref_categ ='File Exchange', super_function = Model._feo_record_one_external_resource)
28
@catch_error_in_report
29
def _record_one_external_resource(self, cr, uid, external_session, resource, **kwargs):
30
context=kwargs.get('context')
31
method = self.pool.get('file.exchange').browse(cr, uid, context['file_exchange_id'], context=context)
32
check = method.start_action('check_if_import', self, None, resource, context=context)
35
method.start_action('action_before_each', self, None, resource, context=context)
36
res = self._feo_record_one_external_resource(cr, uid, external_session, resource, **kwargs)
37
res_id = res.get('create_id', False) or res.get('write_id', False)
39
method.start_action('action_after_each', self, [res_id], resource, context=context)
42
Model._record_one_external_resource = _record_one_external_resource
44
Model._feo_get_default_import_values = Model._get_default_import_values #feo mean file_exchange_original
46
@only_for_referential(ref_categ ='File Exchange', super_function = Model._feo_get_default_import_values)
47
def _get_default_import_values(self, cr, uid, external_session, mapping_id=None, defaults=None, context=None):
50
method = external_session.sync_from_object
51
mapping = self.pool.get('external.mapping').browse(cr, uid, mapping_id, context=context)
52
for field in method.import_default_fields:
53
if field.mapping_id.id == mapping.id:
54
if field.type == 'integer':
55
defaults[field.import_default_field.name] = int(field.import_default_value)
56
elif field.type == 'float':
57
defaults[field.import_default_field.name] = float(field.import_default_value.replace(',','.'))
58
elif field.type in ['list','dict']:
59
defaults[field.import_default_field.name] = eval(field.import_default_value)
61
defaults[field.import_default_field.name] = str(field.import_default_value)
64
Model._get_default_import_values = _get_default_import_values
66
def _get_oe_resources_into_external_format(self, cr, uid, external_session, ids, mapping=None, mapping_id=None, mapping_line_filter_ids=None, fields=[], defaults=None, context=None):
68
for resource in self.read_w_order(cr, uid, ids, fields, context):
69
result.append(self._transform_one_resource(cr, uid, external_session, 'from_openerp_to_external', resource, mapping, mapping_id, mapping_line_filter_ids=mapping_line_filter_ids, parent_data=None, previous_result=None, defaults=defaults, context=context))
71
Model._get_oe_resources_into_external_format = _get_oe_resources_into_external_format