--- 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")
+
+