diff -r 37e051f2264d -r d0f617472760 web/ldt/text/views.py --- 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") + +