--- a/.pydevproject Mon Apr 18 18:34:49 2011 +0200
+++ b/.pydevproject Wed Apr 20 00:55:58 2011 +0200
@@ -2,7 +2,7 @@
<?eclipse-pydev version="1.0"?>
<pydev_project>
-<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python_live</pydev_property>
+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python_platform</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/platform/src/ldt</path>
--- a/src/ldt/distribute_setup.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/distribute_setup.py Wed Apr 20 00:55:58 2011 +0200
@@ -13,13 +13,13 @@
This file can also be run as a script to install or upgrade setuptools.
"""
+from distutils import log
+import fnmatch
import os
import sys
-import time
-import fnmatch
+import tarfile
import tempfile
-import tarfile
-from distutils import log
+import time
try:
from site import USER_SITE
@@ -144,7 +144,7 @@
except ImportError:
return _do_download(version, download_base, to_dir, download_delay)
try:
- pkg_resources.require("distribute>="+version)
+ pkg_resources.require("distribute>=" + version)
return
except pkg_resources.VersionConflict:
e = sys.exc_info()[1]
@@ -222,7 +222,7 @@
return function(*args, **kw)
finally:
if patched:
- DirectorySandbox._violation = DirectorySandbox._old
+ DirectorySandbox._violation = DirectorySandbox._old #@UndefinedVariable
del DirectorySandbox._old
return __no_sandbox
@@ -351,7 +351,7 @@
def _under_prefix(location):
if 'install' not in sys.argv:
return True
- args = sys.argv[sys.argv.index('install')+1:]
+ args = sys.argv[sys.argv.index('install') + 1:]
for index, arg in enumerate(args):
for option in ('--root', '--prefix'):
if arg.startswith('%s=' % option):
@@ -359,7 +359,7 @@
return location.startswith(top_dir)
elif arg == option:
if len(args) > index:
- top_dir = args[index+1]
+ top_dir = args[index + 1]
return location.startswith(top_dir)
if arg == '--user' and USER_SITE is not None:
return location.startswith(USER_SITE)
--- a/src/ldt/ldt/api/ldt/handlers.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/api/ldt/handlers.py Wed Apr 20 00:55:58 2011 +0200
@@ -4,7 +4,7 @@
import logging #@UnresolvedImport
class ProjectHandler(BaseHandler):
- allowed_methods = ('GET','PUT',)
+ allowed_methods = ('GET', 'PUT',)
model = Project
def read(self, request, project_id):
--- a/src/ldt/ldt/auth/views.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/auth/views.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,8 +1,8 @@
-from social_auth.views import list as social_list
-from django.contrib.auth.views import login as django_login
-
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.contrib.auth.forms import AuthenticationForm
+from django.contrib.auth.views import login as django_login
+from social_auth.views import list as social_list
+
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
@@ -11,4 +11,4 @@
extra_context = {'social_list': social_list}
- return django_login(request, template_name,redirect_field_name,authentication_form,current_app,extra_context)
+ return django_login(request, template_name, redirect_field_name, authentication_form, current_app, extra_context)
--- a/src/ldt/ldt/core/handlers/modwsgi.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/core/handlers/modwsgi.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,4 +1,6 @@
-import os, sys, site
+import os
+import sys
+import site
def application(environ, start_response):
os.environ['DJANGO_SETTINGS_MODULE'] = environ['DJANGO_SETTINGS_MODULE']
--- a/src/ldt/ldt/core/models.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/core/models.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,5 +1,5 @@
+from django.contrib.auth.models import User, Group
from django.db import models
-from django.contrib.auth.models import *
class Owner(models.Model):
--- a/src/ldt/ldt/core/views.py Mon Apr 18 18:34:49 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-# Create your views here.
--- a/src/ldt/ldt/ldt_utils/admin.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/admin.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,13 +1,12 @@
-from django.conf import settings
-from django.conf.urls.defaults import *
+from django.conf.urls.defaults import patterns, url
from django.contrib import admin
from django.shortcuts import render_to_response
from django.template import RequestContext
-from fileimport import *
-from forms import *
-from ldt.ldt_utils import ANALYZER, STORE
+from ldt.ldt_utils import STORE, ANALYZER
from ldt.ldt_utils.contentindexer import ContentIndexer
-from models import *
+from ldt.ldt_utils.fileimport import FileImport, FileImportError
+from ldt.ldt_utils.forms import LdtImportForm, ReindexForm
+from ldt.ldt_utils.models import Content, Project, Media, Author
import lucene
--- a/src/ldt/ldt/ldt_utils/contentindexer.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/contentindexer.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,9 +1,9 @@
from django.conf import settings
from ldt.ldt_utils.models import Segment
+from ldt.ldt_utils.utils import reduce_text_node
import lucene
import lxml.etree
import urllib #@UnresolvedImport
-from ldt.ldt_utils.utils import reduce_text_node
# import ldt.utils.log
def Property(func):
@@ -79,7 +79,7 @@
tags = tags + u" ; " + tagnode
title = reduce_text_node(elementNode, "title/text()")
- abstract = reduce_text_node(elementNode,"abstract/text()")
+ abstract = reduce_text_node(elementNode, "abstract/text()")
author = elementNode.get("author", "")
start_ts = int(elementNode.get("begin", "-1"))
--- a/src/ldt/ldt/ldt_utils/forms.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/forms.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,13 +1,8 @@
from django import forms
+from django.utils.translation import ugettext_lazy as _
+from ldt.forms import widgets as ldt_widgets
from models import Project, Content, Media
-import uuid
from utils import generate_uuid
-from django.forms.widgets import Widget, RadioSelect
-from django.contrib.admin import widgets as admin_widgets
-from django.core.urlresolvers import reverse
-from ldt.settings import BASE_URL
-from ldt.forms import widgets as ldt_widgets
-from django.utils.translation import ugettext_lazy as _
class LdtImportForm(forms.Form):
importFile = forms.FileField()
--- a/src/ldt/ldt/ldt_utils/models.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/models.py Wed Apr 20 00:55:58 2011 +0200
@@ -4,14 +4,14 @@
from django.utils.translation import ugettext_lazy as _
from ldt.core.models import Document, Owner
from ldt.ldt_utils import STORE, ANALYZER
-from utils import create_ldt, copy_ldt, create_empty_iri, update_iri, \
- generate_uuid
+from utils import (create_ldt, copy_ldt, create_empty_iri, update_iri,
+ generate_uuid)
import lucene
import lxml.etree
+import mimetypes
import os.path
import tagging.fields
import uuid
-import mimetypes
class Author(models.Model):
@@ -37,7 +37,7 @@
description = models.TextField(null=True, blank=True, verbose_name=_('description'))
title = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('title'))
src = models.CharField(max_length=1024, unique=True, verbose_name=_('media.src'))
- mimetype_field = models.CharField(max_length=512,null=True, blank=True, verbose_name=_('media.mimetype'))
+ mimetype_field = models.CharField(max_length=512, null=True, blank=True, verbose_name=_('media.mimetype'))
def mimetype(): #@NoSelf
def fget(self):
@@ -48,7 +48,7 @@
else:
return None
- def fset(self,value):
+ def fset(self, value):
self.mimetype_field = value
return locals()
--- a/src/ldt/ldt/ldt_utils/projectindexer.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/projectindexer.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,12 +1,5 @@
-import tempfile
-import os
-import os.path
-import shutil
-import ldt.utils.xml
from ldt import settings
import lucene
-from ldt.ldt_utils import STORE
-from ldt.ldt_utils import ANALYZER
import lxml.etree
def Property(func):
--- a/src/ldt/ldt/ldt_utils/projectserializer.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/projectserializer.py Wed Apr 20 00:55:58 2011 +0200
@@ -219,7 +219,7 @@
"description": element_description,
"color": element_color,
"img": {
- "src": element_ldt_src,
+ "src": element_ldt_src,
},
"audio": {
"src" : element_audio_src,
@@ -265,7 +265,7 @@
iri_id = mediaNode.attrib[u"id"]
if self.from_display and iri_id not in self.display_contents_list:
continue
- content = Content.objects.get(iri_id=iri_id)
+ content = Content.objects.get(iri_id=iri_id) #@UndefinedVariable
self.__parse_content(content)
res = self.ldt_doc.xpath("/iri/annotations/content")
@@ -273,7 +273,7 @@
content_id = content_node.attrib[u"id"]
if self.from_display and content_id not in self.display_contents_list:
continue
- content = Content.objects.get(iri_id=content_id)
+ content = Content.objects.get(iri_id=content_id) #@UndefinedVariable
for ensemble_node in content_node:
if ensemble_node.tag != "ensemble" :
continue
@@ -409,12 +409,12 @@
current_cutting = None
uri = None
for annot in self.annotations_dict.values():
- logging.debug("current cutting" + repr(current_cutting) + " : annot " + annot['meta']['id-ref'])
+ logging.debug("current cutting" + repr(current_cutting) + " : annot " + annot['meta']['id-ref']) #@UndefinedVariable
if first_cutting and current_cutting and current_cutting != annot['meta']['id-ref'] :
break
current_cutting = annot['meta']['id-ref']
content_id = annot['media']
- content = Content.objects.get(iri_id=content_id)
+ content = Content.objects.get(iri_id=content_id) #@UndefinedVariable
if annot['tags']:
tags_list = map(lambda tag_entry: self.tags_dict[tag_entry['id-ref']]['meta']['dc:title'], annot['tags'])
else:
--- a/src/ldt/ldt/ldt_utils/tests.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/tests.py Wed Apr 20 00:55:58 2011 +0200
@@ -5,18 +5,15 @@
Replace these with more appropriate tests for your application.
"""
+from django.conf import settings
from django.test import TestCase
-import unittest
-import lxml.etree
-from models import Project, Content
from ldt.core.models import Owner
-from utils import LdtUtils, LdtSearch, create_ldt, create_empty_iri, copy_ldt
-import base64
-import uuid
+from models import Project, Content
+from utils import LdtUtils, create_ldt, create_empty_iri, copy_ldt
+import lxml.etree
import tempfile
-from django.contrib.auth.models import *
-from views import get_attrib
-from django.conf import settings
+import unittest
+import uuid
@@ -168,12 +165,4 @@
def tearDown(self):
self.project.delete()
- ##self.cont1.delete()
- ##self.cont2.delete()
-# def test_get_attrib(self):
-# get_attrib(self.project)
-# ldoc = lxml.etree.fromstring(self.project.ldt)
-# self.assertEqual(self.project.title, ldoc.xpath("/iri/project")[0].get("title"))
-# self.assertEqual(ldoc.xpath("/iri/medias/media")[0].get('id'), self.cont1.iri_id)
-# self.assertTrue(self.cont2.iri_id not in self.project.contents.all())
--- a/src/ldt/ldt/ldt_utils/utils.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/utils.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,12 +1,11 @@
from django.conf import settings
+from ldt.ldt_utils import STORE
import datetime
import django.core.urlresolvers
import lucene
import lxml.etree
import urllib
import uuid
-from ldt.ldt_utils import STORE
-from ldt.ldt_utils import ANALYZER
__BOOLEAN_DICT = {
'false':False,
@@ -23,7 +22,7 @@
node_list = element_node.xpath(xpath_str, smart_strings=False)
else:
node_list = [element_node.text]
- return reduce(lambda t, s: t + s,node_list , "")
+ return reduce(lambda t, s: t + s, node_list , "")
def boolean_convert(bool):
if bool is None:
--- a/src/ldt/ldt/ldt_utils/views.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/views.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,62 +1,52 @@
-from contentindexer import *
from django.conf import settings
from django.contrib.auth.decorators import login_required
-from django.core import serializers
from django.core.urlresolvers import reverse
from django.db.models import Q
-from django.forms.forms import get_declared_fields
from django.forms.models import model_to_dict
from django.forms.util import ErrorList
-from django.http import HttpResponse, HttpResponseRedirect, \
- HttpResponseForbidden, HttpResponseServerError
-from django.shortcuts import render_to_response, get_object_or_404, \
- get_list_or_404
+from django.http import (HttpResponse, HttpResponseRedirect,
+ HttpResponseForbidden, HttpResponseServerError)
+from django.shortcuts import (render_to_response, get_object_or_404,
+ get_list_or_404)
from django.template import RequestContext
from django.template.loader import render_to_string
from django.utils import simplejson
from django.utils.html import escape
from django.utils.translation import ugettext as _, ungettext
-from fileimport import *
-from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, \
- CopyProjectForm, ContentForm, MediaForm
+from forms import (LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm,
+ ContentForm, MediaForm)
from ldt.core.models import Owner
-from ldt.ldt_utils.models import Content, Project, Owner
-from ldt.ldt_utils.projectserializer import ProjectSerializer
-from ldt.ldt_utils.utils import boolean_convert
-from lxml.html import fromstring, fragment_fromstring
-from models import *
-from projectserializer import *
-from string import Template
+from ldt.ldt_utils.models import Content
+from ldt.ldt_utils.utils import boolean_convert, LdtUtils, LdtSearch
+from lxml.html import fragment_fromstring
+from models import Media, Project
+from projectserializer import ProjectSerializer
from urllib2 import urlparse
-from utils import *
-import StringIO
import base64
-import cgi
import django.core.urlresolvers
import ldt.auth as ldt_auth
import ldt.utils.path as ldt_utils_path
import logging
-import lucene
import lxml.etree
-import tempfile
+import mimetypes
+import os
import urllib2
-import uuid
@login_required
def workspace(request):
# list of contents
- content_list = Content.objects.all()
+ content_list = Content.objects.all() #@UndefinedVariable
# get list of projects
- project_list = Project.objects.all()
+ project_list = Project.objects.all() #@UndefinedVariable
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
# render list
return render_to_response("ldt/ldt_utils/workspace.html",
- {'contents': content_list, 'projects': project_list,
+ {'contents': content_list, 'projects': project_list,
'is_gecko': is_gecko},
context_instance=RequestContext(request))
@@ -68,7 +58,7 @@
ldt_id = request.GET.get("ldt_id")
- project = Project.objects.get(ldt_id=ldt_id);
+ project = Project.objects.get(ldt_id=ldt_id); #@UndefinedVariable
stream_mode = project.stream_mode
if stream_mode != "video":
@@ -110,7 +100,7 @@
if is_owner:
owner = None
try:
- owner = Owner.objects.get(user=request.user)
+ owner = Owner.objects.get(user=request.user) #@UndefinedVariable
except:
return HttpResponseServerError("<h1>User not found</h1>")
query &= Q(owner=owner)
@@ -123,7 +113,7 @@
filter = filter[1:]
query &= Q(title__icontains=filter)
- project_list = Project.objects.filter(query)
+ project_list = Project.objects.filter(query) #@UndefinedVariable
return render_to_response("ldt/ldt_utils/partial/projectslist.html",
{'projects': project_list},
@@ -139,9 +129,9 @@
filter = filter[1:]
if filter:
- content_list = Content.objects.filter(title__icontains=filter)
+ content_list = Content.objects.filter(title__icontains=filter) #@UndefinedVariable
else:
- content_list = Content.objects.all()
+ content_list = Content.objects.all() #@UndefinedVariable
return render_to_response("ldt/ldt_utils/partial/contentslist.html",
{'contents': content_list},
@@ -201,11 +191,11 @@
id_list = ids.keys()
- if edition is not None:
- ids_editions = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
- id_list = filter(lambda id: id in id_list, ids_editions)
+ #if edition is not None:
+ # ids_editions = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
+ # id_list = filter(lambda id: id in id_list, ids_editions)
- contentList = Content.objects.filter(iri_id__in=id_list)
+ contentList = Content.objects.filter(iri_id__in=id_list) #@UndefinedVariable
ldtgen = LdtUtils()
@@ -226,8 +216,8 @@
iri_ids = None
- if edition is not None:
- iri_ids = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
+ #if edition is not None:
+ # iri_ids = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
iri = lxml.etree.Element('iri')
doc = lxml.etree.ElementTree(iri)
@@ -250,12 +240,12 @@
@login_required
def list_ldt(request):
- contents = Content.objects.all()
+ contents = Content.objects.all() #@UndefinedVariable
try:
- owner = Owner.objects.get(user=request.user)
+ owner = Owner.objects.get(user=request.user) #@UndefinedVariable
except:
return HttpResponseRedirect(settings.LOGIN_URL)
- ldtProjects = Project.objects.filter(owner=owner)
+ ldtProjects = Project.objects.filter(owner=owner) #@UndefinedVariable
context = {
'contents': contents,
'projects': ldtProjects.reverse(),
@@ -264,7 +254,7 @@
@login_required
def list_content(request):
- contents = Content.objects.all()
+ contents = Content.objects.all() #@UndefinedVariable
context = {
'contents': contents,
}
@@ -282,7 +272,7 @@
#return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
else:
form = LdtAddForm()
- contents = Content.objects.all()
+ contents = Content.objects.all() #@UndefinedVariable
form_status = "none"
return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status, 'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request))
@@ -335,7 +325,7 @@
resp['Cache-Control'] = 'no-cache, must-revalidate'
resp['Pragma'] = 'no-cache'
- project = Project.objects.get(ldt_id=id)
+ project = Project.objects.get(ldt_id=id) #@UndefinedVariable
resp.write(project.ldt)
return resp
@@ -349,7 +339,7 @@
def project_json_externalid(request, id):
- res_proj = get_list_or_404(Project.objects.order_by('-modification_date'), contents__external_id=id)
+ res_proj = get_list_or_404(Project.objects.order_by('-modification_date'), contents__external_id=id) #@UndefinedVariable
return project_json(request, res_proj[0], False)
@@ -401,7 +391,7 @@
def project_annotations_rdf(request, ldt_id):
- project = Project.objects.get(ldt_id=ldt_id);
+ project = Project.objects.get(ldt_id=ldt_id); #@UndefinedVariable
if not ldt_auth.checkAccess(request.user, project):
return HttpResponseForbidden(_("You can not access this project"))
@@ -428,7 +418,7 @@
rdf_root = lxml.etree.Element(rdf + u"RDF", nsmap=nsmap)
- logging.debug("RDF annotations : " + repr(annotations))
+ logging.debug("RDF annotations : " + repr(annotations)) #@UndefinedVariable
for annotation in annotations:
uri = u""
@@ -456,7 +446,7 @@
if request.method == "POST":
ldt = request.POST['ldt']
id = request.POST['id']
- ldtproject = Project.objects.get(ldt_id=id)
+ ldtproject = Project.objects.get(ldt_id=id) #@UndefinedVariable
#save xml ldt
ldtproject.ldt = ldt
@@ -525,7 +515,7 @@
resp = HttpResponse(mimetype="text/xml; charset=utf-8")
resp['Cache-Control'] = 'no-cache'
- contentList = Content.objects.filter(iri_id=url)
+ contentList = Content.objects.filter(iri_id=url) #@UndefinedVariable
ldtgen = LdtUtils()
ldtgen.generateLdt(contentList, file=resp, title=contentList[0].title, startSegment=startSegment)
@@ -617,11 +607,11 @@
def write_content_base(request, iri_id=None):
if iri_id:
- instance_content = Content.objects.get(iri_id=iri_id)
+ instance_content = Content.objects.get(iri_id=iri_id) #@UndefinedVariable
instance_media = instance_content.media_obj
- logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content))
+ logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content)) #@UndefinedVariable
else:
- logging.debug("No iri_id")
+ logging.debug("No iri_id") #@UndefinedVariable
instance_content = None
instance_media = None
@@ -658,7 +648,7 @@
media_valid = media_form.is_valid()
content_valid = content_form.is_valid()
- logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid))
+ logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid)) #@UndefinedVariable
if media_valid and content_valid :
@@ -678,7 +668,7 @@
del cleaned_data["media_file"]
if not cleaned_data['videopath']:
cleaned_data['videopath'] = settings.STREAM_URL
- media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data)
+ media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable
elif media_input_type == "url" or media_input_type == "upload" :
# copy file
#complet src
@@ -723,7 +713,7 @@
chunck = source_file.read(2048)
except Exception as inst:
- logging.debug("write_content_base : POST error when processing file:" + str(inst))
+ logging.debug("write_content_base : POST error when processing file:" + str(inst)) #@UndefinedVariable
form_status = "error"
#set error for form
if media_input_type == "url":
@@ -743,18 +733,18 @@
del cleaned_data["media_file"]
if not cleaned_data['videopath']:
cleaned_data['videopath'] = settings.STREAM_URL
- mimetype = cleaned_data.get('mimetype_field',None)
+ mimetype = cleaned_data.get('mimetype_field', None)
if not mimetype:
mimetype = mimetypes.guess_type(cleaned_data['src'])
cleaned_data['mimetype_field'] = mimetype
- media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data)
+ media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable
else:
media = None
if media and not created:
for attribute in ('external_id', 'external_permalink', 'external_publication_url', 'external_src_url', 'media_creation_date', 'videopath', 'duration', 'description', 'title'):
setattr(media, attribute, cleaned_data.get(attribute))
- mimetype = cleaned_data.get('mimetype_field',None)
+ mimetype = cleaned_data.get('mimetype_field', None)
if not mimetype:
mimetype = mimetypes.guess_type(media.src)
media.mimetype_field = mimetype
@@ -768,7 +758,7 @@
content_defaults.update(content_form.cleaned_data)
content_defaults['media_obj'] = media
del content_defaults["media_input_type"]
- content, created = Content.objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults)
+ content, created = Content.objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults) #@UndefinedVariable
if not created:
for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'):
@@ -828,7 +818,7 @@
iri_id = request.REQUEST.get("iri_id", None)
if iri_id:
- for content in Content.objects.filter(iri_id=iri_id):
+ for content in Content.objects.filter(iri_id=iri_id): #@UndefinedVariable
titles.append(unicode(content.title))
projects = content.project_set.all()
projects_nb = len(projects)
@@ -846,5 +836,5 @@
iri_id = request.REQUEST.get("iri_id", None)
if iri_id:
- Content.objects.filter(iri_id=iri_id).delete()
+ Content.objects.filter(iri_id=iri_id).delete() #@UndefinedVariable
--- a/src/ldt/ldt/management/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/management/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,11 +1,11 @@
+from django.conf import settings
+from django.contrib.auth.models import User, Group
+from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import ObjectDoesNotExist
from django.db.models import signals
-from django.conf import settings
-from django.contrib.auth.models import User, Group
from ldt.core.models import Owner
from ldt.user.models import ldt, IriGroup
-from django.contrib.contenttypes.models import ContentType
# import logging
-from django.core.exceptions import ObjectDoesNotExist
def post_save_ldt(instance, raw, created, **kwargs):
--- a/src/ldt/ldt/management/commands/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/management/commands/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -0,0 +1,1 @@
+
--- a/src/ldt/ldt/management/commands/testrunserver.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/management/commands/testrunserver.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,9 +1,8 @@
-from django.core.management.commands.runserver import Command as RunserverCommand
+from django.core.management.base import CommandError
+from django.core.management.commands.runserver import (
+ Command as RunserverCommand)
from django.core.servers.basehttp import WSGIServer, WSGIRequestHandler
import sys
-import threading
-from threading import Event
-from django.conf import settings
def run(addr, port, wsgi_handler, keep_running=None, ready_event=None):
server_address = (addr, port)
@@ -76,4 +75,4 @@
if shutdown_message:
print shutdown_message
-
\ No newline at end of file
+
--- a/src/ldt/ldt/test/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/test/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -0,0 +1,1 @@
+
--- a/src/ldt/ldt/test/client.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/test/client.py Wed Apr 20 00:55:58 2011 +0200
@@ -2,19 +2,14 @@
from django.conf import settings
from django.core.urlresolvers import reverse
from django.http import HttpResponse, SimpleCookie
-from django.test.client import encode_multipart, encode_file, Client, BOUNDARY, \
- MULTIPART_CONTENT, CONTENT_TYPE_RE
+from django.test.client import (encode_multipart, Client, BOUNDARY,
+ MULTIPART_CONTENT, CONTENT_TYPE_RE)
from django.utils.encoding import smart_str
from django.utils.http import urlencode
from ldt.utils import Property
-from oauth2 import Request, Consumer, Token, SignatureMethod_HMAC_SHA1, \
- generate_nonce, SignatureMethod_PLAINTEXT
-from oauth_provider.consts import OUT_OF_BAND
+from oauth2 import Request, Consumer, Token, SignatureMethod_HMAC_SHA1
from urlparse import urlsplit, urlunsplit, urlparse, urlunparse, parse_qs
import httplib2
-from django.utils.importlib import import_module
-import logging
-import re
try:
from cStringIO import StringIO
except ImportError:
@@ -49,7 +44,7 @@
self.__login_url = None
@Property
- def baseurl():
+ def baseurl(): #@NoSelf
def fget(self):
return self.__baseurltuple
@@ -63,7 +58,7 @@
return locals()
@Property
- def login_url():
+ def login_url(): #@NoSelf
def fget(self):
return self.__login_url
@@ -89,7 +84,7 @@
resp.client = self
resp.raw_response = response
- for key,value in response.items():
+ for key, value in response.items():
resp[key] = value
return resp
@@ -100,7 +95,7 @@
r = response.raw_response.previous
while not r is None:
- response.redirect_chain.append((r['content-location'],r.status))
+ response.redirect_chain.append((r['content-location'], r.status))
r = r.previous
return response
@@ -139,7 +134,7 @@
"""
if content_type == MULTIPART_CONTENT:
post_data = encode_multipart(BOUNDARY, data)
- elif content_type == "application/x-www-form-urlencoded":
+ elif content_type == "application/x-www-form-urlencoded":
post_data = urlencode(data)
else:
# Encode the content so that the byte representation is correct.
@@ -162,7 +157,7 @@
if extra:
headers.update(extra)
- response,content = self.handler.request(fullpath, method="POST", headers=headers, body=post_data)
+ response, content = self.handler.request(fullpath, method="POST", headers=headers, body=post_data)
resp = self._process_response(response, content)
@@ -188,10 +183,6 @@
Causes the authenticated user to be logged out.
"""
-# session = import_module(settings.SESSION_ENGINE).SessionStore()
-# session_cookie = self.cookies.get(settings.SESSION_COOKIE_NAME)
-# if session_cookie:
-# session.delete(session_key=session_cookie.value)
self.cookies = SimpleCookie()
@@ -255,7 +246,7 @@
"""
if content_type is MULTIPART_CONTENT:
put_data = encode_multipart(BOUNDARY, data)
- elif content_type == "application/x-www-form-urlencoded":
+ elif content_type == "application/x-www-form-urlencoded":
put_data = urlencode(data)
else:
put_data = data
@@ -273,7 +264,7 @@
if extra:
headers.update(extra)
- response,content = self.handler.request(fullpath, method="PUT", headers=headers, body=put_data)
+ response, content = self.handler.request(fullpath, method="PUT", headers=headers, body=put_data)
resp = self._process_response(response, content)
@@ -345,17 +336,17 @@
path_parsed = urlparse(path)
- if method=='GET' and (data is None or len(data) == 0):
+ if method == 'GET' and (data is None or len(data) == 0):
new_data = parse_qs(path_parsed[4])
elif data is None:
new_data = {}
else:
new_data = data.copy()
- clean_path = ['']*6
+ clean_path = [''] * 6
clean_path[0] = 'http'
clean_path[1] = self._servername
- for i in range(0,4):
+ for i in range(0, 4):
clean_path[i] = path_parsed[i] or clean_path[i]
path = urlunparse(clean_path)
@@ -425,15 +416,15 @@
def _generate_request_wrapper(meth):
def request_wrapper(inst, *args, **kwargs):
- path = args[0] if len(args) > 0 else kwargs.get('path','')
- data = args[1] if len(args) > 1 else kwargs.get('data',{})
+ path = args[0] if len(args) > 0 else kwargs.get('path', '')
+ data = args[1] if len(args) > 1 else kwargs.get('data', {})
args = args[2:]
if 'path' in kwargs:
del(kwargs['path'])
if 'data' in kwargs:
del(kwargs['data'])
data = inst._oauth_data.inject_oauth_data(path, METHOD_MAPPING[meth.__name__], data)
- return meth(inst,path=path, data=data, *args, **kwargs)
+ return meth(inst, path=path, data=data, *args, **kwargs)
return request_wrapper
def _generate_login_wrapper(meth):
@@ -452,7 +443,7 @@
def __new__(cls, name, bases, attrs):
newattrs = {}
def set_consumer(inst, key, secret):
- inst._oauth_data.set_consumer(key,secret)
+ inst._oauth_data.set_consumer(key, secret)
newattrs['set_consumer'] = set_consumer
def set_scope(inst, scope):
inst._oauth_data.set_scope(scope)
@@ -482,11 +473,11 @@
init_method = newattrs.get("__init__", None)
def new_init(inst, *args, **kwargs):
- inst._oauth_data = OAuthPayload(attrs.get('servername','testserver'))
+ inst._oauth_data = OAuthPayload(attrs.get('servername', 'testserver'))
if init_method is not None:
- init_method(*args,**kwargs)
+ init_method(*args, **kwargs)
else:
- super(inst.__class__,inst).__init__(*args,**kwargs)
+ super(inst.__class__, inst).__init__(*args, **kwargs)
newattrs["__init__"] = new_init
return super(OAuthMetaclass, cls).__new__(cls, name, bases, newattrs)
--- a/src/ldt/ldt/test/testcases.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/test/testcases.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,15 +1,14 @@
from django.conf import settings
from django.core.management import call_command
from django.test.testcases import TestCase, TransactionTestCase
-import django
+from ldt.test.client import WebClient, OAuthClient, OAuthWebClient
+import httplib
import threading
import time
-import httplib
-from ldt.test.client import WebClient, OAuthClient, OAuthWebClient
-def launch_webserver(addrport='', keep_running = None, ready_event = None):
- call_command('testrunserver',addrport, keep_running, ready_event)
+def launch_webserver(addrport='', keep_running=None, ready_event=None):
+ call_command('testrunserver', addrport, keep_running, ready_event)
class WebTestCase(TransactionTestCase):
@@ -22,12 +21,12 @@
self.client.login_url = value
def _pre_setup(self):
- super(WebTestCase,self)._pre_setup()
+ super(WebTestCase, self)._pre_setup()
self._keep_webserver = True
self._lock = threading.Lock()
self._ready_event = threading.Event()
- self.baseurl = "http://"+settings.TEST_WEBSERVER_ADDRPORT
+ self.baseurl = "http://" + settings.TEST_WEBSERVER_ADDRPORT
self.client = WebClient()
self.client.baseurl = self.baseurl
login_url = '/' + settings.LOGIN_URL[len(settings.BASE_URL):].lstrip('/')
@@ -38,7 +37,7 @@
return self._keep_webserver
def launch_server():
- launch_webserver(settings.TEST_WEBSERVER_ADDRPORT, keep_running=keep_runningserver, ready_event = self._ready_event)
+ launch_webserver(settings.TEST_WEBSERVER_ADDRPORT, keep_running=keep_runningserver, ready_event=self._ready_event)
#launch_server()
self._t = threading.Thread(target=launch_server)
@@ -54,7 +53,7 @@
conn.request("HEAD", "/")
conn.getresponse()
self._t.join()
- super(WebTestCase,self)._post_teardown()
+ super(WebTestCase, self)._post_teardown()
class OAuthTestCase(TestCase):
@@ -62,7 +61,7 @@
self.client.set_consumer(key, secret)
def _pre_setup(self):
- super(OAuthTestCase,self)._pre_setup()
+ super(OAuthTestCase, self)._pre_setup()
self.client = OAuthClient()
class OAuthWebTestCase(WebTestCase):
@@ -71,7 +70,7 @@
self.client.set_consumer(key, secret)
def _pre_setup(self):
- super(OAuthWebTestCase,self)._pre_setup()
+ super(OAuthWebTestCase, self)._pre_setup()
self.client = OAuthWebClient()
self.client.baseurl = self.baseurl
login_url = '/' + settings.LOGIN_URL[len(settings.BASE_URL):].lstrip('/')
@@ -79,4 +78,4 @@
-
\ No newline at end of file
+
--- a/src/ldt/ldt/text/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -5,12 +5,12 @@
STORE = lucene.SimpleFSDirectory(lucene.File(settings.INDEX_PATH))
ANALYZER = lucene.PerFieldAnalyzerWrapper(lucene.StandardAnalyzer(lucene.Version.LUCENE_CURRENT))
-ANALYZER.addAnalyzer("tags",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
-ANALYZER.addAnalyzer("title",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
-ANALYZER.addAnalyzer("abstract",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
-ANALYZER.addAnalyzer("all",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
-ANALYZER.addAnalyzer("type_doc",lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("tags", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("title", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("abstract", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("all", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
+ANALYZER.addAnalyzer("type_doc", lucene.FrenchAnalyzer(lucene.Version.LUCENE_CURRENT))
-VERSION = (1,0)
+VERSION = (1, 0)
VERSION_STR = unicode(".".join(map(lambda i:"%01d" % (i,), VERSION)))
--- a/src/ldt/ldt/text/admin.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/admin.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,5 +1,4 @@
from django.contrib import admin
-from django.conf import settings
-from models import *
+from ldt.text.models import Annotation
admin.site.register(Annotation)
--- a/src/ldt/ldt/text/annotindexer.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/annotindexer.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,9 +1,4 @@
-from django.conf import settings
-from models import *
import lucene
-from ldt.text import STORE
-from ldt.text import ANALYZER
-import lxml.etree
class AnnotIndexer(object):
@@ -43,4 +38,4 @@
self.__writer.addDocument(doc)
self.__writer.close()
-
\ No newline at end of file
+
--- a/src/ldt/ldt/text/models.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/models.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,17 +1,12 @@
-from django.conf import settings
+from annotindexer import AnnotIndexer
from django.db import models
from django.utils.translation import ugettext_lazy as _
-from ldt.core.models import Document, Owner
-from django.contrib.auth.models import User
-import tagging.fields
+from ldt.ldt_utils import STORE, ANALYZER
from tagging.models import Tag
from utils import generate_uuid
-import os.path
-import uuid
+import lucene
import lxml
-import lucene
-from ldt.ldt_utils import STORE, ANALYZER
-from annotindexer import AnnotIndexer
+import tagging.fields
#from django.core.management.validation import max_length
def Property(func):
@@ -32,14 +27,14 @@
update_date = models.DateTimeField(auto_now=True, verbose_name=_('annotation.update_date'))
@Property
- def tags():
+ def tags(): #@NoSelf
def fget(self):
return ",".join(self.tag_list)
def fset(self, value):
values = None
- if isinstance(value, (list,tuple)):
+ if isinstance(value, (list, tuple)):
values = list(value)
elif value is not None:
values = [v.lower().strip() for v in unicode(value).split(",")]
@@ -52,7 +47,7 @@
return locals()
@Property
- def tag_list():
+ def tag_list(): #@NoSelf
def fget(self):
return [t.name for t in Tag.objects.get_for_object(self)]
@@ -82,9 +77,9 @@
textannotation = lxml.etree.SubElement(iri, 'text-annotation')
- id = lxml.etree.SubElement(textannotation,'id')
+ id = lxml.etree.SubElement(textannotation, 'id')
id.text = self.external_id
- uri = lxml.etree.SubElement(textannotation,'uri')
+ uri = lxml.etree.SubElement(textannotation, 'uri')
uri.text = self.uri
if self.tags:
@@ -93,17 +88,17 @@
tag = lxml.etree.SubElement(tags, 'tag')
tag.text = t
- content = lxml.etree.SubElement(textannotation,'content')
- color = lxml.etree.SubElement(content,'color')
+ content = lxml.etree.SubElement(textannotation, 'content')
+ color = lxml.etree.SubElement(content, 'color')
color.text = self.color
- description = lxml.etree.SubElement(content,'description')
+ description = lxml.etree.SubElement(content, 'description')
description.text = self.description
- title = lxml.etree.SubElement(content,'title')
+ title = lxml.etree.SubElement(content, 'title')
title.text = self.title
- text = lxml.etree.SubElement(content,'text')
+ text = lxml.etree.SubElement(content, 'text')
text.text = self.text
- meta = lxml.etree.SubElement(textannotation,'meta')
+ meta = lxml.etree.SubElement(textannotation, 'meta')
contributor = lxml.etree.SubElement(meta, "contributor")
contributor.text = self.contributor
creator = lxml.etree.SubElement(meta, "creator")
@@ -138,8 +133,8 @@
def index_annot(self):
lucene.getVMEnv().attachCurrentThread()
writer = lucene.IndexWriter(STORE, ANALYZER, True, lucene.IndexWriter.MaxFieldLength.UNLIMITED)
- annotl = [self,]
- indexer = AnnotIndexer(annotl,writer)
+ annotl = [self, ]
+ indexer = AnnotIndexer(annotl, writer)
indexer.index_all()
writer.close()
@@ -150,4 +145,4 @@
writer.close()
self.index_annot()
-
\ No newline at end of file
+
--- a/src/ldt/ldt/text/tests/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/tests/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,3 +1,3 @@
from base_tests import *
from oauth_tests import *
-from server_tests import *
\ No newline at end of file
+from server_tests import *
--- a/src/ldt/ldt/text/tests/base_tests.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/tests/base_tests.py Wed Apr 20 00:55:58 2011 +0200
@@ -2,22 +2,11 @@
""" Run these tests with 'python manage.py test text' """
-from django.conf import settings
-from django.contrib.auth.models import *
-from django.db import transaction
-from django.test import TestCase
-from ldt.core.models import Owner
-from ldt.test.testcases import *
+from ldt.test.testcases import OAuthTestCase, TestCase
from ldt.text import VERSION_STR
-from ldt.text.models import *
-from ldt.text.views import *
+from ldt.text.models import Annotation
import datetime
import lxml.etree
-import time
-import unittest
-import urllib
-import uuid
-from oauth_provider.models import Resource, Consumer
CONSUMER_KEY = 'dpf43f3p2l4k3l03'
@@ -29,13 +18,13 @@
# 2. the returned xml contains correct data
class CreateTest(OAuthTestCase):
- fixtures = ['base_data','oauth_data']
+ fixtures = ['base_data', 'oauth_data']
def setUp(self):
self.id = 'f2c1d1fa-629d-4520-a3d2-955b4f2582c0'
self.text = "texte selectionne lors de la creation de l\'annotation"
- self.content = str('<iri><text-annotation><id>'+self.id+'</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text>'+self.text+'</text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
+ self.content = str('<iri><text-annotation><id>' + self.id + '</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text>' + self.text + '</text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
self.error_content = '<iri><text-annotation><id>z2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
self.set_consumer(CONSUMER_KEY, CONSUMER_SECRET)
@@ -43,22 +32,22 @@
def test_create_annotation(self):
- response = self.client.post('/api/'+ VERSION_STR +'/text/create/', {'content':self.content})
- self.assertEqual(response.status_code,200)
+ response = self.client.post('/api/' + VERSION_STR + '/text/create/', {'content':self.content})
+ self.assertEqual(response.status_code, 200)
annot1 = lxml.etree.fromstring(response.content)
- self.assertEqual(annot1.xpath("/iri/text-annotation/id/text()")[0],self.id)
- self.assertEqual(annot1.xpath("/iri/text-annotation/content/text/text()")[0],self.text)
- self.assertEqual(len(annot1.xpath("/iri/text-annotation/tags/tag")),2)
+ self.assertEqual(annot1.xpath("/iri/text-annotation/id/text()")[0], self.id)
+ self.assertEqual(annot1.xpath("/iri/text-annotation/content/text/text()")[0], self.text)
+ self.assertEqual(len(annot1.xpath("/iri/text-annotation/tags/tag")), 2)
self.assertEqual(annot1.xpath("/iri/text-annotation/meta/created/text()")[0][:11], str(datetime.datetime.now())[:11])
annot2 = Annotation.objects.get(external_id=self.id)
- self.assertEqual(annot2.text,self.text)
- self.assertEqual(len(annot2.tags.split(",")),2)
+ self.assertEqual(annot2.text, self.text)
+ self.assertEqual(len(annot2.tags.split(",")), 2)
self.assertEqual(str(annot2.creation_date)[:11], str(datetime.datetime.now())[:11])
def test_error_create(self):
- response = self.client.post('/api/'+ VERSION_STR +'/text/create/', {'content':self.error_content})
+ response = self.client.post('/api/' + VERSION_STR + '/text/create/', {'content':self.error_content})
self.assertEqual(response.status_code, 409)
@@ -76,20 +65,20 @@
def test_get_annotation(self):
- response = self.client.get('http://127.0.0.1:8000/api/'+ VERSION_STR +'/text/get/'+self.id+'')
- self.assertEqual(response.status_code,200)
+ response = self.client.get('http://127.0.0.1:8000/api/' + VERSION_STR + '/text/get/' + self.id + '')
+ self.assertEqual(response.status_code, 200)
annot1 = lxml.etree.fromstring(response.content)
- self.assertEqual(annot1.xpath("/iri/text-annotation/id/text()")[0],self.id)
- self.assertTrue('tag3','tag1' in annot1.xpath("/iri/text-annotation/tags/tag/text()"))
- self.assertTrue('mytag','tag2new' in annot1.xpath("/iri/text-annotation/tags/tag/text()"))
- self.assertEqual(annot1.xpath("/iri/text-annotation/content/color/text()")[0],self.color)
- self.assertEqual(annot1.xpath("/iri/text-annotation/content/title/text()")[0],self.title)
+ self.assertEqual(annot1.xpath("/iri/text-annotation/id/text()")[0], self.id)
+ self.assertTrue('tag3', 'tag1' in annot1.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertTrue('mytag', 'tag2new' in annot1.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertEqual(annot1.xpath("/iri/text-annotation/content/color/text()")[0], self.color)
+ self.assertEqual(annot1.xpath("/iri/text-annotation/content/title/text()")[0], self.title)
self.assertEqual(annot1.xpath("/iri/text-annotation/meta/created/text()")[0], self.creation_date)
def test_error_get(self):
- response = self.client.get('http://127.0.0.1:8000/api/'+ VERSION_STR +'/text/get/2')
- self.assertEqual(response.status_code,404)
+ response = self.client.get('http://127.0.0.1:8000/api/' + VERSION_STR + '/text/get/2')
+ self.assertEqual(response.status_code, 404)
class FilterTest(TestCase):
@@ -105,49 +94,49 @@
def test_filter_all(self):
- response = self.client.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':self.uri,'creator':self.user,'limit':"1,1", 'filter':self.filter})
- self.assertEqual(response.status_code,200)
+ response = self.client.get('/api/' + VERSION_STR + '/text/filter/', {'uri':self.uri, 'creator':self.user, 'limit':"1,1", 'filter':self.filter})
+ self.assertEqual(response.status_code, 200)
doc = lxml.etree.fromstring(response.content)
- self.assertEqual(len(doc.xpath("/iri/text-annotation")),1)
+ self.assertEqual(len(doc.xpath("/iri/text-annotation")), 1)
for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
- self.assertEqual(elem,self.user)
+ self.assertEqual(elem, self.user)
for elem in doc.xpath("/iri/text-annotation/uri/text()"):
- self.assertEqual(elem,self.uri)
+ self.assertEqual(elem, self.uri)
for elem in doc.xpath("/iri/text-annotation/content/text/text()"):
self.assertTrue(self.filter in elem)
def test_filter_creator_limit(self):
- response = self.client.get('/api/'+ VERSION_STR +'/text/filter/', {'creator':self.user,'limit':self.limit})
- self.assertEqual(response.status_code,200)
+ response = self.client.get('/api/' + VERSION_STR + '/text/filter/', {'creator':self.user, 'limit':self.limit})
+ self.assertEqual(response.status_code, 200)
doc = lxml.etree.fromstring(response.content)
if self.limit is not None:
- self.assertEqual(str(len(doc.xpath("/iri/text-annotation"))),self.limit[0])
+ self.assertEqual(str(len(doc.xpath("/iri/text-annotation"))), self.limit[0])
for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
- self.assertEqual(elem,self.user)
+ self.assertEqual(elem, self.user)
def test_filter_uri(self):
- response = self.client.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':self.uri})
- self.assertEqual(response.status_code,200)
+ response = self.client.get('/api/' + VERSION_STR + '/text/filter/', {'uri':self.uri})
+ self.assertEqual(response.status_code, 200)
doc = lxml.etree.fromstring(response.content)
for elem in doc.xpath("/iri/text-annotation/uri/text()"):
- self.assertEqual(elem,self.uri)
+ self.assertEqual(elem, self.uri)
def test_filter_annotation_filter(self):
- response = self.client.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':self.uri,'filter':self.filter})
- self.assertEqual(response.status_code,200)
+ response = self.client.get('/api/' + VERSION_STR + '/text/filter/', {'uri':self.uri, 'filter':self.filter})
+ self.assertEqual(response.status_code, 200)
doc = lxml.etree.fromstring(response.content)
for elem in doc.xpath("/iri/text-annotation/content/text/text()"):
self.assertTrue(self.filter in elem)
for elem in doc.xpath("/iri/text-annotation/uri/text()"):
- self.assertEqual(elem,self.uri)
+ self.assertEqual(elem, self.uri)
def test_filter_none(self):
- response = self.client.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':'uri','creator':'creator','filter':'filter'})
- self.assertEqual(response.status_code,200)
+ response = self.client.get('/api/' + VERSION_STR + '/text/filter/', {'uri':'uri', 'creator':'creator', 'filter':'filter'})
+ self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, '<iri/>\n')
@@ -157,7 +146,7 @@
# 2. the returned xml contains an empty string
class DeleteTest(OAuthTestCase):
- fixtures = ['base_data','oauth_data']
+ fixtures = ['base_data', 'oauth_data']
def setUp(self):
@@ -168,22 +157,22 @@
def test_delete_annotation(self):
- response = self.client.delete('/api/'+ VERSION_STR +'/text/delete/'+self.id+'')
+ response = self.client.delete('/api/' + VERSION_STR + '/text/delete/' + self.id + '')
self.assertEqual(response.content, "")
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
self.assertRaises(Annotation.DoesNotExist, Annotation.objects.get, external_id=self.id)
def test_error_delete(self):
- response = self.client.delete('/api/'+ VERSION_STR +'/text/ldt/delete/1')
- self.assertEqual(response.status_code,404)
+ response = self.client.delete('/api/' + VERSION_STR + '/text/ldt/delete/1')
+ self.assertEqual(response.status_code, 404)
# This test creates an annotation, then updates it with new content, and checks that the returned xml contains the updated data
class UpdateTest(OAuthTestCase):
- fixtures = ['oauth_data','base_data']
+ fixtures = ['oauth_data', 'base_data']
def setUp(self):
@@ -192,26 +181,26 @@
self.description = "texte de description update"
self.text = "texte selectionne a nouveau lors de la creation de l\'annotation"
self.contributor = "oaubert"
- self.content = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag2new</tag><tag>mytag</tag></tags><content><color>'+self.color+'</color><description>'+self.description+'</description><title></title><text>'+self.text+'</text></content><meta><contributor>'+self.contributor+'</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
+ self.content = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag2new</tag><tag>mytag</tag></tags><content><color>' + self.color + '</color><description>' + self.description + '</description><title></title><text>' + self.text + '</text></content><meta><contributor>' + self.contributor + '</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
self.set_consumer(CONSUMER_KEY, CONSUMER_SECRET)
self.client.login(username='jane', password='toto')
def test_update_annotation(self):
- response = self.client.put('/api/'+ VERSION_STR +'/text/update/'+self.id+'', {'content':self.content})
- self.assertEqual(response.status_code,200)
+ response = self.client.put('/api/' + VERSION_STR + '/text/update/' + self.id + '', {'content':self.content})
+ self.assertEqual(response.status_code, 200)
annot = Annotation.objects.get(external_id=self.id)
- self.assertEqual(str(annot.update_date)[:11],str(datetime.datetime.now())[:11])
- self.assertEqual(annot.external_id,self.id)
- self.assertTrue('tag3','tag1' not in annot.tags)
- self.assertTrue('mytag','tag2new' in annot.tags)
- self.assertEqual(annot.color,self.color)
- self.assertEqual(annot.description,self.description)
- self.assertEqual(annot.text,self.text)
- self.assertEqual(annot.contributor,self.contributor)
+ self.assertEqual(str(annot.update_date)[:11], str(datetime.datetime.now())[:11])
+ self.assertEqual(annot.external_id, self.id)
+ self.assertTrue('tag3', 'tag1' not in annot.tags)
+ self.assertTrue('mytag', 'tag2new' in annot.tags)
+ self.assertEqual(annot.color, self.color)
+ self.assertEqual(annot.description, self.description)
+ self.assertEqual(annot.text, self.text)
+ self.assertEqual(annot.contributor, self.contributor)
def test_error_update(self):
- response = self.client.put('/api/'+ VERSION_STR +'/text/update/1', {'content':self.content})
- self.assertEqual(response.status_code,404)
+ response = self.client.put('/api/' + VERSION_STR + '/text/update/1', {'content':self.content})
+ self.assertEqual(response.status_code, 404)
--- a/src/ldt/ldt/text/tests/oauth_tests.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/tests/oauth_tests.py Wed Apr 20 00:55:58 2011 +0200
@@ -2,20 +2,13 @@
""" Run these tests with 'python manage.py test text' """
-from django.conf import settings, settings
-from django.contrib.auth.models import *
-from django.db import transaction
-from django.test import TestCase
-from ldt.test.client import Client
-from ldt.test.testcases import *
+from ldt.test.testcases import TestCase
from ldt.text import VERSION_STR
-from ldt.text.models import Annotation
-from ldt.text.views import *
-from oauth2 import Request, SignatureMethod_HMAC_SHA1, SignatureMethod_PLAINTEXT, \
- generate_nonce
+from oauth2 import Request, SignatureMethod_HMAC_SHA1, generate_nonce
from oauth_provider.consts import OUT_OF_BAND
-from oauth_provider.models import Resource, Consumer, Token, Nonce
-import logging
+from oauth_provider.models import Consumer, Token
+import datetime
+import lxml
import time
import urlparse
@@ -62,7 +55,7 @@
self.parameters_request['scope'] = 'delete'
response = self.client.get("http://127.0.0.1:8000/oauth/request_token/", self.parameters_request)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
data = urlparse.parse_qs(response.content)
@@ -78,19 +71,19 @@
}
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,302)
+ self.assertEqual(response.status_code, 302)
self.assertTrue(token.key in response['Location'])
self.client.login(username='jane', password='toto')
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
- self.assertEqual(response.content,'Fake authorize view for example.com.')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'Fake authorize view for example.com.')
# fake authorization by the user
parameters['authorize_access'] = 1
response = self.client.post("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
self.assertTrue(token.is_approved)
@@ -113,14 +106,14 @@
self.parameters_protected['oauth_token'] = access_token.key
self.parameters_protected['oauth_timestamp'] = str(int(time.time()))
- oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/'+VERSION_STR+'/text/delete/z2c1d1fa-629d-4520-a3d2-955b4f2582c0', parameters=self.parameters_protected, http_method="DELETE")
+ oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/' + VERSION_STR + '/text/delete/z2c1d1fa-629d-4520-a3d2-955b4f2582c0', parameters=self.parameters_protected, http_method="DELETE")
signature_method = SignatureMethod_HMAC_SHA1()
signature = signature_method.sign(oauth_request, Consumer.objects.get(name="example.com"), access_token)
self.parameters_protected['oauth_signature'] = signature
- response = self.client.delete("/api/"+VERSION_STR+"/text/delete/z2c1d1fa-629d-4520-a3d2-955b4f2582c0", self.parameters_protected)
+ response = self.client.delete("/api/" + VERSION_STR + "/text/delete/z2c1d1fa-629d-4520-a3d2-955b4f2582c0", self.parameters_protected)
self.assertEqual(response.content, "")
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
self.client.logout()
access_token.delete()
@@ -131,7 +124,7 @@
## REQUEST TOKEN
self.parameters_request['scope'] = 'create'
response = self.client.get("/oauth/request_token/", self.parameters_request)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
data = urlparse.parse_qs(response.content)
self.assertEqual(token.key, data["oauth_token"][0])
@@ -145,19 +138,19 @@
}
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,302)
+ self.assertEqual(response.status_code, 302)
self.assertTrue(token.key in response['Location'])
self.client.login(username='jane', password='toto')
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
- self.assertEqual(response.content,'Fake authorize view for example.com.')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'Fake authorize view for example.com.')
# fake authorization by the user
parameters['authorize_access'] = 1
response = self.client.post("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
self.assertTrue(token.is_approved)
@@ -180,15 +173,15 @@
self.parameters_protected['oauth_timestamp'] = str(int(time.time()))
self.parameters_protected['content'] = '<iri><text-annotation><id>f2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
- oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/'+VERSION_STR+'/text/create/', parameters=self.parameters_protected, http_method="POST")
+ oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/' + VERSION_STR + '/text/create/', parameters=self.parameters_protected, http_method="POST")
signature_method = SignatureMethod_HMAC_SHA1()
signature = signature_method.sign(oauth_request, Consumer.objects.get(name="example.com"), access_token)
self.parameters_protected['oauth_signature'] = signature
- response = self.client.post("/api/"+VERSION_STR+"/text/create/", self.parameters_protected)
+ response = self.client.post("/api/" + VERSION_STR + "/text/create/", self.parameters_protected)
annot1 = lxml.etree.fromstring(response.content)
self.assertEqual(annot1.xpath("/iri/text-annotation/meta/created/text()")[0][:11], str(datetime.datetime.now())[:11])
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
self.client.logout()
access_token.delete()
@@ -199,7 +192,7 @@
self.parameters_request['scope'] = 'update'
response = self.client.get("/oauth/request_token/", self.parameters_request)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
data = urlparse.parse_qs(response.content)
@@ -214,19 +207,19 @@
}
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,302)
+ self.assertEqual(response.status_code, 302)
self.assertTrue(token.key in response['Location'])
self.client.login(username='jane', password='toto')
response = self.client.get("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
- self.assertEqual(response.content,'Fake authorize view for example.com.')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'Fake authorize view for example.com.')
# fake authorization by the user
parameters['authorize_access'] = 1
response = self.client.post("/oauth/authorize/", parameters)
- self.assertEqual(response.status_code,200)
+ self.assertEqual(response.status_code, 200)
token = list(Token.objects.all())[-1]
self.assertTrue(token.is_approved)
@@ -249,18 +242,18 @@
self.parameters_protected['oauth_timestamp'] = str(int(time.time()))
self.parameters_protected['content'] = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag2new</tag><tag>mytag</tag></tags><content><color>#DDDDDD</color><description><![CDATA[texte de description update]]></description><title></title><text><![CDATA[texte selectionne a nouveau lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
- oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/'+VERSION_STR+'/text/update/z2c1d1fa-629d-4520-a3d2-955b4f2582c0', parameters=self.parameters_protected, http_method="PUT")
+ oauth_request = Request.from_token_and_callback(access_token, http_url='http://testserver/api/' + VERSION_STR + '/text/update/z2c1d1fa-629d-4520-a3d2-955b4f2582c0', parameters=self.parameters_protected, http_method="PUT")
signature_method = SignatureMethod_HMAC_SHA1()
signature = signature_method.sign(oauth_request, Consumer.objects.get(name="example.com"), access_token)
self.parameters_protected['oauth_signature'] = signature
- response = self.client.put("/api/"+VERSION_STR+"/text/update/z2c1d1fa-629d-4520-a3d2-955b4f2582c0", self.parameters_protected)
+ response = self.client.put("/api/" + VERSION_STR + "/text/update/z2c1d1fa-629d-4520-a3d2-955b4f2582c0", self.parameters_protected)
doc = lxml.etree.fromstring(response.content)
- self.assertEqual(doc.xpath("/iri/text-annotation/id/text()")[0],"z2c1d1fa-629d-4520-a3d2-955b4f2582c0")
- self.assertTrue('tag3','tag1' not in doc.xpath("/iri/text-annotation/tags/tag/text()"))
- self.assertTrue('mytag','tag2new' in doc.xpath("/iri/text-annotation/tags/tag/text()"))
- self.assertEqual(doc.xpath("/iri/text-annotation/meta/modified/text()")[0][:11],str(datetime.datetime.now())[:11])
- self.assertEqual(response.status_code,200)
+ self.assertEqual(doc.xpath("/iri/text-annotation/id/text()")[0], "z2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+ self.assertTrue('tag3', 'tag1' not in doc.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertTrue('mytag', 'tag2new' in doc.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertEqual(doc.xpath("/iri/text-annotation/meta/modified/text()")[0][:11], str(datetime.datetime.now())[:11])
+ self.assertEqual(response.status_code, 200)
self.client.logout()
access_token.delete()
--- a/src/ldt/ldt/text/tests/server_tests.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/tests/server_tests.py Wed Apr 20 00:55:58 2011 +0200
@@ -2,22 +2,11 @@
""" Run these tests with 'python manage.py test text' """
-from django.conf import settings
-from django.contrib.auth.models import *
-from django.test import TestCase
-from ldt.core.models import Owner
-from ldt.test.testcases import OAuthWebTestCase, OAuthTestCase, WebTestCase
+from ldt.test.testcases import OAuthWebTestCase, WebTestCase
from ldt.text import VERSION_STR
-from ldt.text.models import *
-from ldt.text.views import *
-from oauth_provider.models import Resource, Consumer, Token, Nonce
+from ldt.text.models import Annotation
import datetime
-import logging
import lxml.etree
-import time
-import unittest
-import urllib
-import uuid
CONSUMER_KEY = 'dpf43f3p2l4k3l03'
CONSUMER_SECRET = 'kd94hf93k423kf44'
@@ -25,7 +14,7 @@
class OnServerGlobalTest(OAuthWebTestCase):
- fixtures = ['oauth_data','base_data']
+ fixtures = ['oauth_data', 'base_data']
def setUp(self):
@@ -37,8 +26,8 @@
self.contributor = "oaubert"
self.creator = "wakimd"
self.uri = "http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168"
- self.content1 = '<iri><text-annotation><id>'+self.id+'</id><uri>'+self.uri+'</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title>'+self.title+'</title><text>'+self.text+'</text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>'+self.creator+'</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
- self.contentupdate = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag1</tag><tag>tag2new</tag><tag>tag3</tag></tags><content><color>#DDDDDD</color><description>'+self.descupdate+'</description><title></title><text>'+self.textupdate+'</text></content><meta><contributor>'+self.contributor+'</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
+ self.content1 = '<iri><text-annotation><id>' + self.id + '</id><uri>' + self.uri + '</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title>' + self.title + '</title><text>' + self.text + '</text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>' + self.creator + '</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
+ self.contentupdate = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag1</tag><tag>tag2new</tag><tag>tag3</tag></tags><content><color>#DDDDDD</color><description>' + self.descupdate + '</description><title></title><text>' + self.textupdate + '</text></content><meta><contributor>' + self.contributor + '</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
self.set_login_url("/auth_accounts/login/")
self.set_consumer(CONSUMER_KEY, CONSUMER_SECRET)
@@ -49,68 +38,68 @@
self.assertTrue(self.client.login(username='jane', password='toto'))
#test POST
- creation = self.client.post("/api/"+VERSION_STR+"/text/create/", data={'content': self.content1})
- self.assertEqual(creation.status_code,200)
+ creation = self.client.post("/api/" + VERSION_STR + "/text/create/", data={'content': self.content1})
+ self.assertEqual(creation.status_code, 200)
annot = Annotation.objects.get(external_id=self.id)
self.assertEqual(str(annot.creation_date)[:11], str(datetime.datetime.now())[:11])
- self.assertEqual(annot.text,self.text)
- self.assertEqual(len(annot.tags.split(",")),2)
+ self.assertEqual(annot.text, self.text)
+ self.assertEqual(len(annot.tags.split(",")), 2)
#test GET
- get = self.client.get("/api/"+VERSION_STR+"/text/get/"+self.id+"")
- self.assertEqual(get.status_code,200)
+ get = self.client.get("/api/" + VERSION_STR + "/text/get/" + self.id + "")
+ self.assertEqual(get.status_code, 200)
annot = lxml.etree.fromstring(get.content)
- self.assertTrue('tag1','tag2' in annot.xpath("/iri/text-annotation/tags/tag/text()"))
- self.assertEqual(annot.xpath("/iri/text-annotation/content/title/text()")[0],self.title)
+ self.assertTrue('tag1', 'tag2' in annot.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertEqual(annot.xpath("/iri/text-annotation/content/title/text()")[0], self.title)
#test OPTIONS
- options = self.client.options("/api/"+VERSION_STR+"/text/get/"+self.id+"")
- self.assertEqual(options.status_code,200)
+ options = self.client.options("/api/" + VERSION_STR + "/text/get/" + self.id + "")
+ self.assertEqual(options.status_code, 200)
self.assertEqual(options.content, get.content)
#test HEAD
- head = self.client.head("/api/"+VERSION_STR+"/text/get/"+self.id+"")
- self.assertEqual(head.status_code,200)
- self.assertEqual(head['content-type'],'text/xml;charset=utf-8')
- self.assertEqual(head['content-language'],'fr-fr')
- self.assertEqual(head.content,'')
+ head = self.client.head("/api/" + VERSION_STR + "/text/get/" + self.id + "")
+ self.assertEqual(head.status_code, 200)
+ self.assertEqual(head['content-type'], 'text/xml;charset=utf-8')
+ self.assertEqual(head['content-language'], 'fr-fr')
+ self.assertEqual(head.content, '')
#test LOGOUT
self.client.logout()
- creation = self.client.post("/api/"+VERSION_STR+"/text/create/", data={'content': self.content1})
- self.assertEqual(creation.status_code,401)
+ creation = self.client.post("/api/" + VERSION_STR + "/text/create/", data={'content': self.content1})
+ self.assertEqual(creation.status_code, 401)
self.assertTrue(self.client.login(username='jane', password='toto'))
# filter
- filt1 = self.client.get("/api/"+VERSION_STR+"/text/filter/", data={"uri":self.uri})
- self.assertEqual(filt1.status_code,200)
+ filt1 = self.client.get("/api/" + VERSION_STR + "/text/filter/", data={"uri":self.uri})
+ self.assertEqual(filt1.status_code, 200)
doc = lxml.etree.fromstring(filt1.content)
- self.assertEqual(len(doc.xpath("/iri/text-annotation")),2)
+ self.assertEqual(len(doc.xpath("/iri/text-annotation")), 2)
for elem in doc.xpath("/iri/text-annotation/uri/text()"):
- self.assertEqual(elem,self.uri)
+ self.assertEqual(elem, self.uri)
- filt2 = self.client.get("/api/"+VERSION_STR+"/text/filter/", data={"creator":self.contributor})
- self.assertEqual(filt2.status_code,200)
+ filt2 = self.client.get("/api/" + VERSION_STR + "/text/filter/", data={"creator":self.contributor})
+ self.assertEqual(filt2.status_code, 200)
self.assertEqual(filt2.content, '<iri/>\n')
#test PUT
- update = self.client.put("/api/"+VERSION_STR+"/text/update/"+self.id+"", data={'content':self.contentupdate})
- self.assertEqual(update.status_code,200)
+ update = self.client.put("/api/" + VERSION_STR + "/text/update/" + self.id + "", data={'content':self.contentupdate})
+ self.assertEqual(update.status_code, 200)
annot = Annotation.objects.get(external_id=self.id)
- self.assertEqual(str(annot.creation_date)[:11],str(datetime.datetime.now())[:11])
- self.assertEqual(annot.external_id,self.id)
- self.assertTrue('tag1','tag2' not in annot.tags)
- self.assertTrue('mytag','tag2new' in annot.tags)
- self.assertEqual(annot.description,self.descupdate)
- self.assertEqual(annot.text,self.textupdate)
- self.assertEqual(annot.contributor,self.contributor)
+ self.assertEqual(str(annot.creation_date)[:11], str(datetime.datetime.now())[:11])
+ self.assertEqual(annot.external_id, self.id)
+ self.assertTrue('tag1', 'tag2' not in annot.tags)
+ self.assertTrue('mytag', 'tag2new' in annot.tags)
+ self.assertEqual(annot.description, self.descupdate)
+ self.assertEqual(annot.text, self.textupdate)
+ self.assertEqual(annot.contributor, self.contributor)
#test DELETE
- delete = self.client.delete("/api/"+VERSION_STR+"/text/delete/"+self.id+"")
+ delete = self.client.delete("/api/" + VERSION_STR + "/text/delete/" + self.id + "")
self.assertEqual(delete.content, "")
- self.assertEqual(delete.status_code,200)
+ self.assertEqual(delete.status_code, 200)
self.assertRaises(Annotation.DoesNotExist, Annotation.objects.get, external_id=self.id)
self.client.logout()
@@ -120,23 +109,23 @@
self.assertTrue(self.client.login(username='jane', password='toto'))
- creation = self.client.post("/api/"+VERSION_STR+"/text/create/", data={'content': self.content1})
- self.assertEqual(creation.status_code,200)
+ creation = self.client.post("/api/" + VERSION_STR + "/text/create/", data={'content': self.content1})
+ self.assertEqual(creation.status_code, 200)
- creation = self.client.post("/api/"+VERSION_STR+"/text/create/", data={'content': self.content1})
- self.assertEqual(creation.status_code,409)
+ creation = self.client.post("/api/" + VERSION_STR + "/text/create/", data={'content': self.content1})
+ self.assertEqual(creation.status_code, 409)
- get = self.client.get("/api/"+VERSION_STR+"/text/get/1")
- self.assertEqual(get.status_code,404)
+ get = self.client.get("/api/" + VERSION_STR + "/text/get/1")
+ self.assertEqual(get.status_code, 404)
- update = self.client.put('/api/'+ VERSION_STR +'/text/update/1', {'content':self.contentupdate})
- self.assertEqual(update.status_code,404)
+ update = self.client.put('/api/' + VERSION_STR + '/text/update/1', {'content':self.contentupdate})
+ self.assertEqual(update.status_code, 404)
- delete = self.client.delete("/api/"+VERSION_STR+"/text/delete/1")
- self.assertEqual(delete.status_code,404)
+ delete = self.client.delete("/api/" + VERSION_STR + "/text/delete/1")
+ self.assertEqual(delete.status_code, 404)
- delete = self.client.delete("/api/"+VERSION_STR+"/text/delete/"+self.id+"")
- self.assertEqual(delete.status_code,200)
+ delete = self.client.delete("/api/" + VERSION_STR + "/text/delete/" + self.id + "")
+ self.assertEqual(delete.status_code, 200)
self.assertEqual(delete.content, "")
self.client.logout()
@@ -152,9 +141,9 @@
def test_get(self):
self.assertTrue(self.client.login(username='jane', password='toto'))
- get = self.client.get("/api/"+VERSION_STR+"/text/get/z2c1d1fa-629d-4520-a3d2-955b4f2582c0")
- self.assertEqual(get.status_code,200)
+ get = self.client.get("/api/" + VERSION_STR + "/text/get/z2c1d1fa-629d-4520-a3d2-955b4f2582c0")
+ self.assertEqual(get.status_code, 200)
annot = lxml.etree.fromstring(get.content)
- self.assertTrue('tag1','tag2' in annot.xpath("/iri/text-annotation/tags/tag/text()"))
+ self.assertTrue('tag1', 'tag2' in annot.xpath("/iri/text-annotation/tags/tag/text()"))
-
\ No newline at end of file
+
--- a/src/ldt/ldt/text/urls.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/urls.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,5 +1,4 @@
-from django.conf.urls.defaults import *
-from ldt.management import test_ldt
+from django.conf.urls.defaults import patterns, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
@@ -11,4 +10,4 @@
url(r'^get/(?P<id>.*)$', 'views.get_annotation'),
url(r'^delete/(?P<id>.*)$', 'views.delete_annotation'),
url(r'^update/(?P<id>.*)$', 'views.update_annotation'),
-)
\ No newline at end of file
+)
--- a/src/ldt/ldt/text/utils.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/utils.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,10 +1,6 @@
from django.conf import settings
-from ldt.ldt_utils import ANALYZER, STORE
-import base64
-import django.core.urlresolvers
+from ldt.ldt_utils import STORE
import lucene
-import lxml.etree
-import urllib
import uuid
__BOOLEAN_DICT = {
@@ -51,7 +47,7 @@
res = []
for hit in hits.scoreDocs:
doc = indexSearcher.doc(hit.doc)
- res.append({"external_id":doc.get("external_id"),"title":doc.get("title")})
+ res.append({"external_id":doc.get("external_id"), "title":doc.get("title")})
indexSearcher.close()
return res
--- a/src/ldt/ldt/text/views.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/text/views.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,44 +1,17 @@
-from django.conf import settings
-from django.contrib.auth.decorators import login_required
-from django.core.urlresolvers import reverse
from django.db import IntegrityError
from django.db.models import Q
-from django.forms.util import ErrorList
-from django.http import HttpResponse, Http404, HttpResponseRedirect, \
- HttpResponseForbidden, HttpResponseServerError, HttpResponseBadRequest
-from django.shortcuts import render_to_response, get_object_or_404, \
- get_list_or_404
-from django.template import RequestContext
-from django.template.loader import render_to_string
-from django.utils.html import escape
-from django.utils.translation import ugettext as _, ungettext
+from django.http import HttpResponse, Http404
from django.views.decorators.csrf import csrf_exempt
-from httplib import CONFLICT
-from ldt.core.models import Owner
-from ldt.text.models import *
-from ldt.text.utils import boolean_convert
-from lxml import etree
-from lxml.html import fromstring, fragment_fromstring
-from string import Template
+from ldt.text.models import Annotation
+from ldt.text.utils import TextSearch, generate_uuid
+from oauth_provider.decorators import oauth_required
from urllib2 import urlparse
-from utils import *
-import StringIO
-import cgi
-import django.core.urlresolvers
-import ldt.auth as ldt_auth
-import ldt.utils.path as ldt_utils_path
-import logging
-import lucene
-import tempfile
-import uuid
-from tagging.models import Tag
-from oauth_provider.decorators import *
+import lxml
## Filters the annotation depending on the request parameters
## Returns an xml containing the resulting annotations
def filter_annotation(request, uri=None, filter=None, limit=None, creator=None):
- annotlist = None
query = Q()
if request.GET.get('uri'):
@@ -50,7 +23,7 @@
if request.GET.get('filter') and len(request.GET.get('filter')) > 0:
search = TextSearch()
- res = search.query("text",request.GET.get('filter'))
+ res = search.query("text", request.GET.get('filter'))
for r in res:
annotlist.append(r)
@@ -166,16 +139,16 @@
@csrf_exempt
def update_annotation(request, id):
- put_data={}
+ put_data = {}
if request.GET != {}:
put_data = request.GET.copy()
elif request.raw_post_data is not None:
- for k,v in urlparse.parse_qs(request.raw_post_data).iteritems():
- if len(v)>1:
+ for k, v in urlparse.parse_qs(request.raw_post_data).iteritems():
+ if len(v) > 1:
for item in v:
- put_data[k]= item
+ put_data[k] = item
else:
- put_data[k]= v[0]
+ put_data[k] = v[0]
try:
annot = Annotation.objects.get(external_id=id)
--- a/src/ldt/ldt/user/forms.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/user/forms.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,10 +1,10 @@
from django import forms
-from django.contrib.auth.models import User, Permission, Group
-from django.forms.util import ErrorList
from django.contrib.auth.forms import UserCreationForm
+from django.contrib.auth.models import Permission
+from django.forms.util import ErrorList
from django.utils.translation import gettext as _
+from ldt.management import get_content_type_list
from models import ldt, IriGroup
-from ldt.management import get_content_type_list
class ldtForm(UserCreationForm):
--- a/src/ldt/ldt/user/models.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/user/models.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,7 +1,6 @@
-from django.db import models
+from django.contrib import admin
from django.contrib.auth.models import User, Group, UserManager
-from django.utils.translation import gettext as _
-from django.contrib import admin
+from django.db import models
import datetime
--- a/src/ldt/ldt/user/templatetags/logintag.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/user/templatetags/logintag.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,5 +1,4 @@
from django import template
-from django.template.loader import get_template
register = template.Library()
--- a/src/ldt/ldt/user/views.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/user/views.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,15 +1,14 @@
-from django.conf import settings
-from django.http import HttpResponse, HttpResponseRedirect
-from django.shortcuts import render_to_response
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
-# from django.contrib.sites.models import Site, RequestSite
-from django.template import RequestContext, Context, loader
+from django.core.urlresolvers import reverse
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response
+from django.template import RequestContext, loader
+from django.utils import simplejson
from django.utils.translation import ugettext as _
-from django.core.urlresolvers import reverse
from forms import EmailChangeForm
-from django.utils import simplejson
from ldt.management import test_cms, test_ldt
+# from django.contrib.sites.models import Site, RequestSite
def home(request):
--- a/src/ldt/ldt/utils/__init__.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/utils/__init__.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,4 +1,4 @@
def Property(func):
return property(**func())
-
\ No newline at end of file
+
--- a/src/ldt/ldt/utils/context_processors.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/utils/context_processors.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,6 +1,6 @@
from django.conf import settings
+import ldt
-import ldt
def ldtcontext(request):
return {'BASE_URL': settings.BASE_URL, 'MEDIA_URL': settings.MEDIA_URL, 'TC1': 'TC1', \
--- a/src/ldt/ldt/utils/path.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/utils/path.py Wed Apr 20 00:55:58 2011 +0200
@@ -2,8 +2,8 @@
Some small file related utilities
"""
+import string
import unicodedata
-import string
validFilenameChars = "-_.() %s%s" % (string.ascii_letters, string.digits)
--- a/src/ldt/ldt/utils/threading.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/utils/threading.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,6 +1,6 @@
-import threading
+import ctypes
import inspect
-import ctypes
+import threading
def _async_raise(tid, exctype):
"""raises the exception, performs cleanup if needed"""
--- a/src/ldt/ldt/utils/zipfileext.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/ldt/utils/zipfileext.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,4 +1,5 @@
-import zipfile, os, os.path
+import zipfile
+import os.path
class ZipFileExt(zipfile.ZipFile):
def unzip_into_dir(self, dir):
--- a/src/ldt/setup.py Mon Apr 18 18:34:49 2011 +0200
+++ b/src/ldt/setup.py Wed Apr 20 00:55:58 2011 +0200
@@ -28,7 +28,7 @@
#TODO : uses find_packages form setuptools and teh mercurial extension
-for dirpath, dirnames, filenames in os.walk(SOURCE_DIR,True):
+for dirpath, dirnames, filenames in os.walk(SOURCE_DIR, True):
# Ignore dirnames that start with '.'
if dirpath in path_processed:
continue
@@ -45,16 +45,16 @@
for ldirpath, ldirnames, lfilenames in os.walk(dirpath):
path_processed.append(ldirpath)
new_data_files.extend([os.path.join(ldirpath[len(base_path):], f) for f in lfilenames])
- data_files.setdefault(key,[]).extend(new_data_files)
+ data_files.setdefault(key, []).extend(new_data_files)
#write MANIFEST.in
m = open("MANIFEST.in", "w")
m.write("exclude MANIFEST.in\n")
-for key,file_list in data_files.iteritems():
+for key, file_list in data_files.iteritems():
for filename in file_list:
- m.write("include %s/%s\n" % (key.replace(".","/"), filename))
+ m.write("include %s/%s\n" % (key.replace(".", "/"), filename))
m.close()
setup(
@@ -62,8 +62,8 @@
version=version,
author='Yves-Marie Haussonne (IRI)',
author_email='contact@iri.centrepompidou.fr',
- packages = packages,
- package_data = data_files,
+ packages=packages,
+ package_data=data_files,
scripts=[],
url='https://www.iri.centrepompidou.fr/dev/hg/platform',
license='LICENSE.txt',
--- a/web/ldtplatform/settings.py Mon Apr 18 18:34:49 2011 +0200
+++ b/web/ldtplatform/settings.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,6 +1,5 @@
#@PydevCodeAnalysisIgnore
import os.path
-from social_auth_settings import *
# Django settings for project.
DEBUG = True
@@ -168,8 +167,13 @@
OAUTH_CALLBACK_VIEW = 'oauth_provider.views.fake_callback_view'
TEST_WEBSERVER_ADDRPORT = "127.0.0.1:8888"
+FACEBOOK_APP_ID = '163134140411313'
+FACEBOOK_API_SECRET = 'f25e0754a44f0d90d3f4d9ea961ff012'
+
+SOCIAL_AUTH_COMPLETE_URL_NAME = 'complete'
+SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete'
+
from config import *
-#from socialauthsettings import *
LOGIN_URL = BASE_URL + 'accounts/login/'
LOGOUT_URL = BASE_URL + 'accounts/disconnect/'
@@ -180,12 +184,7 @@
LOGIN_ERROR_URL = BASE_URL + 'accounts/login'
-FACEBOOK_APP_ID = '163134140411313'
-FACEBOOK_API_SECRET = 'f25e0754a44f0d90d3f4d9ea961ff012'
-
-SOCIAL_AUTH_COMPLETE_URL_NAME = 'complete'
-SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'associate_complete'
-
GLOBAL_LOG_LEVEL = LOG_LEVEL
GLOBAL_LOG_HANDLERS = [{'handler':logging.FileHandler(LOG_FILE), 'format':"%(asctime)s - %(levelname)s : %(message)s"}]
+
--- a/web/ldtplatform/urls.py Mon Apr 18 18:34:49 2011 +0200
+++ b/web/ldtplatform/urls.py Wed Apr 20 00:55:58 2011 +0200
@@ -1,8 +1,9 @@
-from django.conf.urls.defaults import patterns, include, handler500, handler404, url
+from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
+from ldt.auth.views import login as pf_login
from ldt.text import VERSION_STR
-from django.conf import settings
-from ldt.auth.views import login as pf_login
+
+#from django.conf import settings
# Uncomment the next two lines to enable the admin:
admin.autodiscover()
--- a/web/ldtplatform/utils/context_processors.py Mon Apr 18 18:34:49 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-from django.conf import settings
-import ldtplatform #@UnresolvedImport
-import ldt
-
-#def version(request):
-# return {'VERSION': "platform: %s - web: %s" % (ldt.get_version(),ldtplatform.get_version()) }
-
-#def base(request):
-# return {'BASE_URL': settings.BASE_URL, 'MEDIA_URL': settings.MEDIA_URL, 'TC2': 'TC2' }
-
-#def web(request):
-# return {'WEB_URL': settings.WEB_URL }