summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/data_importer.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index e19c2dcc6..2325df11f 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -26,7 +26,9 @@ import re
import sys
import zipfile
+from django.conf import settings
from django.contrib.auth.models import User
+from django.core.files import File
from django.db import IntegrityError, transaction
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _
@@ -410,9 +412,17 @@ class FileFormater(Formater):
if not value:
return
zp = zipfile.ZipFile(archive)
+ value = value.strip().replace(u'\\', u'/')
+ items = value.replace(u'/', u'_').split(u'.')
+ filename = settings.MEDIA_ROOT + 'imported/' + \
+ u".".join(items[:-1]) + u'.' + items[-1]
try:
- with zp.open(value.strip().replace(u'\\', u'/')) as z:
- return z.read()
+ with open(filename, 'w') as f:
+ with zp.open(value) as z:
+ f.write(z.read())
+ f = open(filename, 'r')
+ my_file = File(f)
+ return my_file
except KeyError:
raise ValueError(_(u"\"%(value)s\" is not a valid path for the "
u"given archive") % {'value': value})
@@ -1026,6 +1036,8 @@ class Importer(object):
dct = create_dict.copy()
if '__force_new' in dct:
created = dct.pop('__force_new')
+ if not [k for k in dct if dct[k] is not None]:
+ return None, created
obj = cls.objects.create(**dct)
else:
dct['defaults'] = defaults
@@ -1033,6 +1045,8 @@ class Importer(object):
if self.import_instance and hasattr(obj, 'imports') \
and created:
obj.imports.add(self.import_instance)
+ except ValueError as e:
+ raise IntegrityError(e.message)
except IntegrityError as e:
raise IntegrityError(e.message)
except cls.MultipleObjectsReturned: