summaryrefslogtreecommitdiff
path: root/chimere/utils.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-11-18 18:59:03 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-11-18 18:59:03 +0100
commitc990ea7c38eaed78ec11842c236d440eda292f1e (patch)
tree3d679a1e5b4aa622dc56caffdd30f9ed0b578221 /chimere/utils.py
parenta58a5b80ec494d87149db796d07098f46d3ab183 (diff)
downloadChimère-c990ea7c38eaed78ec11842c236d440eda292f1e.tar.bz2
Chimère-c990ea7c38eaed78ec11842c236d440eda292f1e.zip
Many fix for python3
Diffstat (limited to 'chimere/utils.py')
-rw-r--r--chimere/utils.py38
1 files changed, 21 insertions, 17 deletions
diff --git a/chimere/utils.py b/chimere/utils.py
index 37c580f..f8b7bf5 100644
--- a/chimere/utils.py
+++ b/chimere/utils.py
@@ -78,7 +78,7 @@ class ImportManager(object):
def create_or_update_item(self, cls, values, import_key, version=None,
key='', pk=None, category=None):
- from models import PropertyModel
+ from chimere.models import PropertyModel
updated, created, item = False, False, None
import_key = str(import_key).replace(':', '^')
if not values.get('name'):
@@ -189,7 +189,9 @@ class ImportManager(object):
def get_source_file(self, suffixes, dest_dir=None,
extra_url=None):
source = self.importer_instance.source_file
- if not hasattr(source, 'read'):
+ try:
+ source.read
+ except ValueError:
if not source:
source = self.importer_instance.source \
if self.importer_instance.source else self.default_source
@@ -207,13 +209,13 @@ class ImportManager(object):
except IOError as msg:
return (None, msg)
except (urllib.error.URLError, AttributeError) as error:
- return (None, error.message)
+ return (None, str(error))
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:
+ if not files or None in files or [] in files:
return (None,
_(u"Missing file(s) inside the zip file"))
source = files[0] if len(suffixes) == 1 else files
@@ -242,7 +244,7 @@ class KMLManager(ImportManager):
- number of item updated ;
- error detail on error
"""
- from models import Marker, Route
+ from chimere.models import Marker, Route
new_item, updated_item, msg = 0, 0, ''
source, msg = self.get_source_file(['.kml'])
if msg:
@@ -342,9 +344,11 @@ class ShapefileManager(ImportManager):
The filtr argument allow to specify match between the shapefile cols
and the db. JSON format is used.
"""
- from models import Marker, Route, Polygon
+ from chimere.models import Marker, Route, Polygon
new_item, updated_item, msg = 0, 0, ''
tmpdir = tempfile.mkdtemp()
+ res = self.get_source_file(['.shp', '.dbf', '.prj', '.shx'],
+ dest_dir=tmpdir)
sources, msg = self.get_source_file(['.shp', '.dbf', '.prj', '.shx'],
dest_dir=tmpdir)
if msg:
@@ -534,7 +538,7 @@ class ShapefileManager(ImportManager):
# writing to a zip file
filename = unicode_normalize(settings.PROJECT_NAME) + '-' + date
- buff = io.StringIO()
+ buff = io.BytesIO()
zip_file = zipfile.ZipFile(buff, 'w', zipfile.ZIP_DEFLATED)
suffixes = ['shp', 'shx', 'prj', 'dbf']
for suffix in suffixes:
@@ -573,7 +577,7 @@ class CSVManager(ImportManager):
- number of item updated ;
- error detail on error
"""
- from models import Marker, Route
+ from chimere.models import Marker, Route
new_item, updated_item, msg = 0, 0, ''
source, msg = self.get_source_file(['.csv'])
if msg:
@@ -666,7 +670,7 @@ class GeoRSSManager(ImportManager):
- number of item updated ;
- error detail on error
"""
- from models import Marker, Route
+ from chimere.models import Marker, Route
new_item, updated_item, msg = 0, 0, ''
feed = feedparser.parse(self.importer_instance.source)
if feed['bozo'] and not isinstance(
@@ -750,19 +754,19 @@ class JsonManager(ImportManager):
- number of item updated ;
- error detail on error
"""
- from models import Marker
+ from chimere.models import Marker
new_item, updated_item, msg = 0, 0, ''
source, msg = self.get_source_file(['.json'])
if msg:
return (0, 0, msg)
- vals = source.read().replace('\n', ' ')
+ vals = str(source.read()).replace('\n', ' ')
try:
values = json.JSONDecoder(
object_pairs_hook=collections.OrderedDict).decode(vals)
except ValueError as e:
return (new_item, updated_item,
- _(u"JSON file is not well formed: " + e.message))
+ _(u"JSON file is not well formed: ") + str(e))
# configuration in filtr
try:
filtr = json.JSONDecoder().decode(self.importer_instance.filtr)
@@ -946,7 +950,7 @@ class OSMManager(ImportManager):
def put(self, extra_args={}):
# first of all: reimport in order to verify that no changes has been
# made since the last import
- from models import Marker
+ from chimere.models import Marker
new_item, updated_item, msg = self.get()
# check if import is possible
if msg:
@@ -1115,7 +1119,7 @@ class HtmlXsltManager(ImportManager):
- updated items;
- error detail on error.
"""
- from models import Marker
+ from chimere.models import Marker
self.marker_cls = Marker
try:
main_page = urllib.request.urlopen(self.importer_instance.source)
@@ -1307,7 +1311,7 @@ class IcalManager(ImportManager):
u"""
Get data from an icalendar source
"""
- from models import Marker
+ from chimere.models import Marker
new_item, updated_item, msg = 0, 0, ''
source, msg = self.get_source_file([])
if msg:
@@ -1318,7 +1322,7 @@ class IcalManager(ImportManager):
cal = icalendar.Calendar.from_ical(data)
except ValueError as e:
return (new_item, updated_item,
- _(u"Error on icalendar parsing: " + e.message))
+ _(u"Error on icalendar parsing: ") + str(e))
default_dct = {'origin': self.importer_instance.origin,
'license': self.importer_instance.license}
@@ -1339,7 +1343,7 @@ class IcalManager(ImportManager):
url = event.get('URL', None)
if url:
dct['description'] += u"<br/><a href='{}'>{}</a>".format(
- str(url), unicode(_('Link')))
+ str(url), str(_('Link')))
dct['start_date'] = event.get('DTSTART', None)
if dct['start_date']:
dct['start_date'] = event.decoded('DTSTART')