diff options
| -rw-r--r-- | chimere/utils.py | 117 | 
1 files changed, 0 insertions, 117 deletions
| diff --git a/chimere/utils.py b/chimere/utils.py index 556b51b..2e6f777 100644 --- a/chimere/utils.py +++ b/chimere/utils.py @@ -434,123 +434,6 @@ class ShapefileManager(ImportManager):          buff.close()          return filename, zip_stream -class ImportManager: -    u""" -    Generic class for specific importers -    """ -    default_source = None -    def __init__(self, importer_instance): -        self.importer_instance = importer_instance -        self.default_name = " - ".join([cat.name -           for cat in self.importer_instance.categories.order_by('name').all()]) - -    def get(self): -        pass - -    def put(self): -        pass - -    def create_or_update_item(self, cls, values, import_key, version=None): -        updated, created, item = False, False, None -        if import_key: -            dct_import = { -                'import_key__icontains':'%s:%s;' % ( -                        self.importer_instance.importer_type, -                        import_key), -                'import_source':self.importer_instance.source} -            try: -                item = cls.objects.get(**dct_import) -                if version and item.import_version == int(version): -                    # no update since the last import -                    return item, None, None -                for k in values: -                    setattr(item, k, values[k]) -                try: -                    item.save() -                except TypeError: -                    # error on data source -                    return None, False, False -                updated = True -            except ObjectDoesNotExist: -                pass -        if not item: -            values.update({ -                'import_source':self.importer_instance.source}) -            values['status'] = 'I' -            try: -                item = cls.objects.create(**values) -            except TypeError: -                # error on data source -                return None, False, False -            created = True -        if import_key: -            item.set_key(self.importer_instance.importer_type, -                         import_key) -        item.categories.clear() -        for cat in self.importer_instance.categories.all(): -            item.categories.add(cat) -        return item, updated, created - -    @classmethod -    def get_files_inside_zip(cls, zippedfile, suffixes, dest_dir=None): -        try: -            flz = zipfile.ZipFile(zippedfile) -        except zipfile.BadZipfile: -            return [], _(u"Bad zip file") -        namelist = flz.namelist() -        filenames = [] -        for suffix in suffixes: -            current_file_name = None -            for name in namelist: -                if name.endswith(suffix) \ -                  or name.endswith(suffix.lower()) \ -                  or name.endswith(suffix.upper()): -                    current_file_name = name -            filenames.append(current_file_name) -        files = [] -        for filename in filenames: -            if filename: -                if dest_dir: -                    files.append(filename) -                    flz.extract(filename, dest_dir) -                else: -                    files.append(flz.open(filename)) -            else: -                files.append(None) -        return files - -    def get_source_file(self, source, suffixes, dest_dir=None, -                        extra_url=None): -        if not hasattr(source, 'read'): -            if not source: -                source = self.importer_instance.source \ -                       if self.importer_instance.source else self.default_source -            try: -                url = source -                if extra_url: -                    url += extra_url -                remotehandle = urllib2.urlopen(url) -                source = StringIO.StringIO(remotehandle.read()) -                remotehandle.close() -            except ValueError: -                # assume it is a local file -                try: -                    source = open(source) -                except IOError, msg: -                    return (None, msg) -            except urllib2.URLError as error: -                return (None, error.message) -        if self.importer_instance.zipped: -            try: -                files = self.get_files_inside_zip(source, suffixes, dest_dir) -            except zipfile.BadZipfile: -                return (None, _(u"Bad zip file")) -            if not files or None in files: -                return (None, -                        _(u"Missing file(s) inside the zip file")) -            source = files[0] if len(suffixes) == 1 else files -        return (source, None) -  class CSVManager(ImportManager):      u"""      CSV importer | 
