summaryrefslogtreecommitdiff
path: root/chimere/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-09-19 01:00:52 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-09-19 01:00:52 +0200
commit3b3b0de496dd568b7ca2a234dc0280c9b933a9ee (patch)
treedba3f9938b99cc849e312e4a6df649a3e1d2a0e9 /chimere/utils.py
parent3b6930b25c0d77e1e15c5a79becc5a523e661013 (diff)
downloadChimère-3b3b0de496dd568b7ca2a234dc0280c9b933a9ee.tar.bz2
Chimère-3b3b0de496dd568b7ca2a234dc0280c9b933a9ee.zip
Remove a duplicate portion of code (probably an old mistake)
Diffstat (limited to 'chimere/utils.py')
-rw-r--r--chimere/utils.py117
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