--- a/src/ldt/ldt/ldt_utils/fileimport.py Tue Nov 06 13:56:54 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/fileimport.py Tue Nov 06 14:40:44 2012 +0100
@@ -1,11 +1,13 @@
+from StringIO import StringIO
from copy import deepcopy #@UnresolvedImport
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.db import transaction
from ldt.utils import zipfileext
+from ldt.utils.url import request_with_auth
from models import Content, Media
import fnmatch
-import lxml.etree
+import lxml.etree #@UnresolvedImport
import mimetypes #@UnresolvedImport
import os.path
import shutil #@UnresolvedImport
@@ -25,8 +27,8 @@
class IriInfo(object):
- def __init__(self, id, order, titledesc, basepath="", videopath=settings.STREAM_URL, decoupage_blacklist=settings.DECOUPAGE_BLACKLIST, flatten=True):
- self.id = id
+ def __init__(self, iri_id, order, titledesc, basepath="", videopath=settings.STREAM_URL, decoupage_blacklist=settings.DECOUPAGE_BLACKLIST, flatten=True):
+ self.id = iri_id
self.basepath = basepath
self.order = order
self.src = ""
@@ -48,14 +50,15 @@
def process_iri(self):
# for just import a file ldt and get the title for every media
if 'http' in self.src:
- #url = urllib.urlopen(self.src)
path = self.src
- #doc = xml.dom.minidom.parse(url)
#for import a zip, get title and copy file .iri in the media directory
else:
path = os.path.join(self.basepath, self.src)
- #doc = xml.dom.minidom.parse(path)
-
+
+ if 'http' in path:
+ _,content = request_with_auth(path)
+ path = StringIO(content)
+
doc = lxml.etree.parse(path) #@UndefinedVariable
@@ -78,9 +81,9 @@
#if node.nodeType == xml.dom.Node.ELEMENT_NODE and node.tagName == "ensemble":
if node.tag == "ensemble":
#id = node.getAttributeNS(None,u"id")
- id = node.attrib["id"]
- if id not in ensembleids:
- ensembleids.append(id)
+ ens_id = node.attrib["id"]
+ if ens_id not in ensembleids:
+ ensembleids.append(ens_id)
if self.annotations is not None:
newEnsemble = None
@@ -304,43 +307,41 @@
for i, medianode in enumerate(result):
# get iri file's id from file ldt
- #id = medianode.attributes['id'].value
- id = medianode.attrib['id']
+ iri_id = medianode.attrib['id']
if self.check_existing_media:
try:
- Content.objects.get(iri_id=id)
+ Content.objects.get(iri_id=iri_id)
do_pass = True
except ObjectDoesNotExist: #Content.DoesNotExist
do_pass = False
else:
do_pass = False
if not do_pass:
- if not (contents.has_key(id)):
+ if not (contents.has_key(iri_id)):
# Create instance iriInfo(id, order, titledesc, basepath="", videopath=settings.STREAM_URL)
if ldtpath:
- contents[id] = IriInfo(id, i, "", os.path.dirname(ldtpath), flatten=self.flatten)
+ contents[iri_id] = IriInfo(iri_id, i, "", os.path.dirname(ldtpath), flatten=self.flatten)
else:
- contents[id] = IriInfo(id, i, "", flatten=self.flatten)
+ contents[iri_id] = IriInfo(iri_id, i, "", flatten=self.flatten)
# Get iri file's url from ldt. This url can be relative path or absolute path.
- #contents[id].src = medianode.attributes['src'].value
- contents[id].src = medianode.attrib['src']
+ contents[iri_id].src = medianode.attrib['src']
if medianode.attrib['video'] != "":
- contents[id].videopath = medianode.attrib['video']
+ contents[iri_id].videopath = medianode.attrib['video']
elif self.videopath != "" or self.videopath:
- contents[id].videopath = self.videopath
+ contents[iri_id].videopath = self.videopath
else:
- contents[id].videopath = settings.STREAM_URL
+ contents[iri_id].videopath = settings.STREAM_URL
#get annotation of file ldt
result = doc.xpath("/iri/annotations/content")
for contentnode in result:
- id = contentnode.attrib['id']
- if contents.has_key(id):
+ content_id = contentnode.attrib['id']
+ if contents.has_key(content_id):
if self.author:
contentnode.set("author", unicode(self.author))
- contents[id].annotations = contentnode
+ contents[content_id].annotations = contentnode
#go throught values
for iriinfo in contents.values():