# HG changeset patch # User ymh # Date 1303253758 -7200 # Node ID 93325a5d61f042333b87e56f7783cdec339e1836 # Parent 27253368f045a17ab1e676bfcaeb0fce97020092 organize format and import diff -r 27253368f045 -r 93325a5d61f0 .pydevproject --- a/.pydevproject Mon Apr 18 18:34:49 2011 +0200 +++ b/.pydevproject Wed Apr 20 00:55:58 2011 +0200 @@ -2,7 +2,7 @@ -python_live +python_platform python 2.6 /platform/src/ldt diff -r 27253368f045 -r 93325a5d61f0 src/ldt/distribute_setup.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/api/ldt/handlers.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/auth/views.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/core/handlers/modwsgi.py --- 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'] diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/core/models.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/core/views.py --- 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. diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/admin.py --- 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 diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/contentindexer.py --- 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")) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/forms.py --- 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() diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/models.py --- 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() diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/projectindexer.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/projectserializer.py --- 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: diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/tests.py --- 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()) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/utils.py --- 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: diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/ldt_utils/views.py --- 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("

User not found

") 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 diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/management/__init__.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/management/commands/__init__.py --- 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 @@ + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/management/commands/testrunserver.py --- 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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/test/__init__.py --- 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 @@ + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/test/client.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/test/testcases.py --- 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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/__init__.py --- 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))) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/admin.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/annotindexer.py --- 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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/models.py --- 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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/tests/__init__.py --- 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 * diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/tests/base_tests.py --- 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(''+self.id+'http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168tag1tag2#AAAAAA<![CDATA[titre de l\'annotation]]>'+self.text+'oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459') + self.content = str('' + self.id + 'http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168tag1tag2#AAAAAA<![CDATA[titre de l\'annotation]]>' + self.text + 'oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459') self.error_content = 'z2c1d1fa-629d-4520-a3d2-955b4f2582c0http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168tag1tag2#AAAAAA<![CDATA[titre de l\'annotation]]>oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459' 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, '\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 = 'tag2newmytag'+self.color+''+self.description+''+self.text+''+self.contributor+'80cd0532-1dda-4130-b351-6a181130a7c92010-11-06 12:33:53.420459' + self.content = 'tag2newmytag' + self.color + '' + self.description + '' + self.text + '' + self.contributor + '80cd0532-1dda-4130-b351-6a181130a7c92010-11-06 12:33:53.420459' 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/tests/oauth_tests.py --- 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'] = 'f2c1d1fa-629d-4520-a3d2-955b4f2582c0http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168tag1tag2#AAAAAA<![CDATA[titre de l\'annotation]]>oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459' - 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'] = 'tag2newmytag#DDDDDDoaubert80cd0532-1dda-4130-b351-6a181130a7c92010-11-06 12:33:53.420459' - 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() diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/tests/server_tests.py --- 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 = ''+self.id+''+self.uri+'tag1tag2#AAAAAA'+self.title+''+self.text+'oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550'+self.creator+'79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459' - self.contentupdate = 'tag1tag2newtag3#DDDDDD'+self.descupdate+''+self.textupdate+''+self.contributor+'80cd0532-1dda-4130-b351-6a181130a7c92010-11-06 12:33:53.420459' + self.content1 = '' + self.id + '' + self.uri + 'tag1tag2#AAAAAA' + self.title + '' + self.text + 'oaubert79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.417550' + self.creator + '79cd0532-1dda-4130-b351-6a181130a7c92010-09-06 12:33:53.420459' + self.contentupdate = 'tag1tag2newtag3#DDDDDD' + self.descupdate + '' + self.textupdate + '' + self.contributor + '80cd0532-1dda-4130-b351-6a181130a7c92010-11-06 12:33:53.420459' 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, '\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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/urls.py --- 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.*)$', 'views.get_annotation'), url(r'^delete/(?P.*)$', 'views.delete_annotation'), url(r'^update/(?P.*)$', 'views.update_annotation'), -) \ No newline at end of file +) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/utils.py --- 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 diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/text/views.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/user/forms.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/user/models.py --- 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 diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/user/templatetags/logintag.py --- 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() diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/user/views.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/utils/__init__.py --- 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 + diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/utils/context_processors.py --- 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', \ diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/utils/path.py --- 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) diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/utils/threading.py --- 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""" diff -r 27253368f045 -r 93325a5d61f0 src/ldt/ldt/utils/zipfileext.py --- 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): diff -r 27253368f045 -r 93325a5d61f0 src/ldt/setup.py --- 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', diff -r 27253368f045 -r 93325a5d61f0 web/ldtplatform/settings.py --- 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"}] + diff -r 27253368f045 -r 93325a5d61f0 web/ldtplatform/urls.py --- 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() diff -r 27253368f045 -r 93325a5d61f0 web/ldtplatform/utils/context_processors.py --- 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 }