Source code for anyblok_io.bloks.io.importer

# This file is a part of the AnyBlok project
#
#    Copyright (C) 2015 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file,You can
# obtain one at http://mozilla.org/MPL/2.0/.
from anyblok import Declarations
from anyblok.column import LargeBinary, Boolean, Integer


[docs]@Declarations.register(Declarations.Model.IO) class Importer(Declarations.Mixin.IOMixin): file_to_import = LargeBinary(nullable=False) offset = Integer(default=0) nb_grouped_lines = Integer(nullable=False, default=50) commit_at_each_grouped = Boolean(default=True) check_import = Boolean(default=False) def run(self, blokname=None): return self.get_model(self.mode)(self, blokname=blokname).run() def get_key_mapping(self, key): Mapping = self.registry.IO.Mapping return Mapping.get(self.model, key) def commit(self): if self.check_import: return False elif not self.commit_at_each_grouped: return False self.registry.commit() return True def str2value(self, value, ctype, external_id=False, model=None): formater = self.get_formater(ctype) if external_id: return formater.externalIdStr2value(value, model) return formater.str2value(value, model)