From 820cca0bf5d2760cfc2853f7daf52b59c1175c70 Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 20 Apr 2009 06:38:33 +0000 Subject: [PATCH] work in progress: package 'external' for generic export and import functionality git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3339 fd906abe-77d9-0310-91a1-e0d9ade77398 --- external/__init__.py | 3 +++ external/base.py | 41 ++++++++++++++++++++++++++++++++++++ external/csv.py | 36 ++++++++++++++++++++++++++++++++ external/interfaces.py | 47 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 external/__init__.py create mode 100644 external/base.py create mode 100644 external/csv.py create mode 100644 external/interfaces.py diff --git a/external/__init__.py b/external/__init__.py new file mode 100644 index 0000000..38314f3 --- /dev/null +++ b/external/__init__.py @@ -0,0 +1,3 @@ +""" +$Id$ +""" diff --git a/external/base.py b/external/base.py new file mode 100644 index 0000000..34512fd --- /dev/null +++ b/external/base.py @@ -0,0 +1,41 @@ +# +# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +""" +Base implementation for import adapters. + +$Id$ +""" + +from cStringIO import StringIO + +from zope import component +from zope.interface import implements +from zope.cachedescriptors.property import Lazy + +from cybertools.external.interfaces import IImporter + + +class BaseImporter(object): + + implements(IImporter) + + transcript = u'' + + def __init__(self, context): + self.context = context + self.changes = [] diff --git a/external/csv.py b/external/csv.py new file mode 100644 index 0000000..6b81d26 --- /dev/null +++ b/external/csv.py @@ -0,0 +1,36 @@ +# +# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +""" +Base implementation for import adapters. + +$Id$ +""" + +import csv + +from zope import component +from zope.interface import implements +from zope.cachedescriptors.property import Lazy + +from cybertools.external.base import BaseImporter + + +class CsvImporter(BaseImporter): + + pass + diff --git a/external/interfaces.py b/external/interfaces.py new file mode 100644 index 0000000..1214c94 --- /dev/null +++ b/external/interfaces.py @@ -0,0 +1,47 @@ +# +# Copyright (c) 2009 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +""" +Interfaces for import/export functionalities. + +$Id$ +""" + +from zope.interface import Attribute, Interface + + +class IImporter(Interface): + """ Parses an input file or string and creates one or more corresponding + objects or sets the attributes of one or more existing objects. + """ + + transcript = Attribute('A string describing the result of the ' + 'import process.') + changes = Attribute('A sequence of mappings describing the ' + 'objects that were created or modified by the ' + 'import process, together with information about ' + 'the changes.') + errors = Attribute('A sequence of mappings describing the errors ' + 'during loading and the corresponding objects.') + summary = Attribute('A simple mapping giving an overview of the numbers ' + 'of newly created and changed objects and the ' + 'number of errors.') + + def load(file): + """ Load (import) data from the file given; create objects if + necessary. + """