web/ldt/text/views.py
changeset 16 d0f617472760
parent 15 37e051f2264d
child 17 683ce4109c28
--- a/web/ldt/text/views.py	Wed Nov 17 10:28:55 2010 +0100
+++ b/web/ldt/text/views.py	Wed Nov 17 18:57:34 2010 +0100
@@ -23,7 +23,6 @@
 from urllib2 import urlparse
 from utils import *
 import StringIO
-import base64
 import cgi
 import django.core.urlresolvers
 import ldt.auth as ldt_auth
@@ -32,6 +31,7 @@
 import lucene
 import tempfile
 import uuid
+from urllib import urlopen
 
 
 ## Filters the annotation depending on the request parameters
@@ -101,9 +101,8 @@
 ## Returns an xml-structured annotation
 #@login_required
 @csrf_exempt
-def create_annotation(request, content):
-    #cont = base64.urlsafe_b64decode(str(request.POST["content"]))
-    cont = str(request.POST["content"])
+def create_annotation(request):
+    cont = request.POST["content"]
     doc = lxml.etree.fromstring(cont)
     
     id = unicode(doc.xpath("/iri/text-annotation/id/text()")[0])
@@ -130,12 +129,9 @@
         annotation = Annotation.create_annotation(external_id=id, uri=uri, tags=tags, title=title, description=desc, text=text, color=color, creator=creator, contributor=contributor, creation_date=creation_date, update_date=update_date)
         annotation.save()
         return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
-        #return doc
     except IntegrityError:
-    #except Annotation.IntegrityError:
-        #print 'This id is already used! Please choose another one!'
         return HttpResponse(status=409)
-    
+
     
     
 ## Gets an annotation (from its id)
@@ -143,8 +139,7 @@
 def get_annotation(request, id):
     try:
         annot = Annotation.objects.get(external_id=request.GET.get('id',''))
-    except:
-    #except Annotation.DoesNotExist:
+    except Annotation.DoesNotExist:
         raise Http404
     iri = lxml.etree.Element('iri')
     doc = lxml.etree.ElementTree(iri)
@@ -184,7 +179,6 @@
     updatedate = lxml.etree.SubElement(meta, "modified")
     updatedate.text = str(annot.update_date)
 
-    #return doc
     return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
 
 
@@ -192,16 +186,14 @@
 ## Returns an empty xml-structured annotation
 #@login_required
 @csrf_exempt
-def delete_annotation(request, id):
+def delete_annotation(request):
     try:
         annot = Annotation.objects.get(external_id=request.POST["id"])
         annot.delete()
-    #except Annotation.DoesNotExist:
-    except:
+    except Annotation.DoesNotExist:
         raise Http404
     
     doc=create_empty_annotation()
-    #return doc
     return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8")
 
 
@@ -209,14 +201,14 @@
 ## Returns the xml-structured updated annotation
 #@login_required
 @csrf_exempt
-def update_annotation(request, content, id):
+def update_annotation(request):
     try:
         annot = Annotation.objects.get(external_id=request.POST["id"])
-    #except Annotation.DoesNotExist:
-    except:
+    except Annotation.DoesNotExist:
+    #except:
         raise Http404
     
-    cont = base64.urlsafe_b64decode(str(request.POST["content"]))
+    cont = request.POST["content"]
     doc = lxml.etree.fromstring(cont)
     
     uri = doc.xpath("/iri/text-annotation/uri/text()")
@@ -254,6 +246,46 @@
         annot.update_date = unicode(update_date[0])
 
     annot.save()
+
+    #create xml
+    iri = lxml.etree.Element('iri')
+    doc2 = lxml.etree.ElementTree(iri)
     
-    return get_annotation(id)
+    textannotation = lxml.etree.SubElement(iri, 'text-annotation')
+    id = lxml.etree.SubElement(textannotation,'id')
+    id.text = annot.external_id
+    uri = lxml.etree.SubElement(textannotation,'uri')
+    uri.text = annot.uri
+    
+    if annot.tags:
+        if type(annot.tags) is unicode:
+            annot.tags = eval(annot.tags)
+        tags = lxml.etree.SubElement(textannotation,'tags')
+        ltags = normalize_tags(annot.tags)
+        for t in ltags:
+            tag = lxml.etree.SubElement(tags, 'tag')
+            tag.text = t
     
+    content = lxml.etree.SubElement(textannotation,'content')
+    color = lxml.etree.SubElement(content,'color')
+    color.text = annot.color
+    description = lxml.etree.SubElement(content,'description')
+    description.text = annot.description
+    title = lxml.etree.SubElement(content,'title')
+    title.text = annot.title
+    text = lxml.etree.SubElement(content,'text')
+    text.text = annot.text
+    
+    meta = lxml.etree.SubElement(textannotation,'meta')
+    contributor = lxml.etree.SubElement(meta, "contributor")
+    contributor.text = annot.contributor
+    creator = lxml.etree.SubElement(meta, "creator")
+    creator.text = annot.creator
+    creationdate = lxml.etree.SubElement(meta, "created")
+    creationdate.text = str(annot.creation_date)
+    updatedate = lxml.etree.SubElement(meta, "modified")
+    updatedate.text = str(annot.update_date)
+
+    return HttpResponse(lxml.etree.tostring(doc2, pretty_print=True), mimetype="text/xml;charset=utf-8")
+
+