Merge with 81e5be7f10f94ac2cdeb1aed99f5a5e8fcbe529f
authorymh <ymh.work@gmail.com>
Fri, 24 May 2013 21:55:08 +0200
changeset 1196 0d86ca7ccc7b
parent 1186 3fb6b550840c (current diff)
parent 1195 81e5be7f10f9 (diff)
child 1197 a731809df0fd
Merge with 81e5be7f10f94ac2cdeb1aed99f5a5e8fcbe529f
src/ldt/ldt/__init__.py
src/ldt/ldt/core/handlers/modpython.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/workspace_base.html
src/ldt/ldt/ldt_utils/views/lignesdetemps.py
--- a/.settings/org.eclipse.core.resources.prefs	Wed May 15 12:18:43 2013 +0200
+++ b/.settings/org.eclipse.core.resources.prefs	Fri May 24 21:55:08 2013 +0200
@@ -35,13 +35,21 @@
 encoding//src/ldt/ldt/ldt_utils/migrations/0024_auto__chg_field_tag_name.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/migrations/0026_set_relative_ldtproject.py=utf-8
+encoding//src/ldt/ldt/ldt_utils/migrations/0027_auto__chg_field_project_owner__chg_field_media_creator.py=utf-8
 encoding//src/ldt/ldt/ldt_utils/views/json.py=utf-8
 encoding//src/ldt/ldt/management/commands/synciri.py=utf-8
 encoding//src/ldt/ldt/management/commands/updateiriurlinprojects.py=utf-8
 encoding//src/ldt/ldt/management/utils.py=utf-8
 encoding//src/ldt/ldt/test/test_runner.py=utf-8
 encoding//src/ldt/ldt/text/migrations/0001_initial.py=utf-8
+encoding//src/ldt/ldt/text/migrations/0002_auto__chg_field_annotation_external_id.py=utf-8
 encoding//src/ldt/ldt/user/migrations/0001_initial.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0005_add_permission_owner_group.py=utf-8
 encoding//src/ldt/ldt/user/migrations/0008_auto__chg_field_groupprofile_image__chg_field_groupprofile_group__chg_.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0009_rename_auth_user_to_user_ldt_user.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0010_auto__add_field_ldtuser_language__add_field_ldtuser_image.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0011_copy_image_language_ldt_user.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0012_auto__del_userprofile.py=utf-8
+encoding//src/ldt/ldt/user/migrations/0013_auto__del_ldt.py=utf-8
 encoding//virtualenv/web/env/guardianenv/Lib/site-packages/guardian/migrations/0001_initial.py=utf-8
 encoding/<project>=UTF-8
--- a/src/ldt/ldt/__init__.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/__init__.py	Fri May 24 21:55:08 2013 +0200
@@ -1,3 +1,5 @@
+__all__ = ["VERSION", "get_version", "__version__"]
+
 VERSION = (1, 49, 2, "final", 0)
 
 
@@ -15,3 +17,12 @@
 
 __version__ = get_version()
 
+# solve initialization pb
+# The pb comes from the initialization of the middlewares
+# The is a potential circular reference pb between the following modules : security, indexation model.
+# the cause comes from the fact that at one moment, the User model is referenced, using the new django 1.5 django.contrib.auth.get_user_model method
+# This method cause the load of all installed apps, causing the circular dependency problem.
+# the following code force a "pre-load" of all installed app, solving the dependecy pb.
+# TODO: remove this by reworking ldt dependencies
+from django.db.models.loading import get_models
+_ = get_models()
--- a/src/ldt/ldt/api/ldt/authentication.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/authentication.py	Fri May 24 21:55:08 2013 +0200
@@ -197,5 +197,5 @@
 
         This implementation returns the user's username.
         """
-        username, api_key = self.extract_credentials(request)
+        username, _ = self.extract_credentials(request)
         return username or 'nouser'        
\ No newline at end of file
--- a/src/ldt/ldt/api/ldt/resources/annotation.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/annotation.py	Fri May 24 21:55:08 2013 +0200
@@ -1,17 +1,15 @@
+from ldt.ldt_utils.contentindexer import add_segment
 from ldt.ldt_utils.models import Project, Content
-from ldt.ldt_utils.stat import add_annotation_to_stat
 from ldt.ldt_utils.utils import LdtAnnotation
 from ldt.security import protect_models, unprotect_models
 from tastypie import fields
 from tastypie.authorization import Authorization
 from tastypie.exceptions import NotFound, BadRequest
 from tastypie.resources import Resource
-import logging #@UnresolvedImport
-from ldt.ldt_utils.contentindexer import add_segment
 
 
 class AnnotationObject(object):
-    def __init__(self, id="", project = "", type = "", type_title = "", ensemble="", media = "", begin = 0, end = 0, content = {"title":"", "description":""}, tags = [], meta = {"creator":"","created":""}):
+    def __init__(self, id="", project = "", type = "", type_title = "", ensemble="", media = "", begin = 0, end = 0, content = {"title":"", "description":""}, tags = [], meta = {"creator":"","created":""}):  # @ReservedAssignment
         self.id = id
         self.project = project
         self.type = type
@@ -46,11 +44,10 @@
         always_return_data = True
         include_resource_uri = False
     
-    def obj_delete_list(self, request=None, **kwargs):
+    def obj_delete_list(self, bundle, **kwargs):
         return True
     
-    def obj_create(self, bundle, request=None, **kwargs):
-        #logging.debug("ICI 0-1 bundle.data = " + repr(bundle.data))
+    def obj_create(self, bundle, **kwargs):
         # Here the a has the datas for only one annotation. Tastypie's post allows only one resource addition
         a = bundle.data
         project_id = ""
@@ -128,7 +125,7 @@
         bundle.obj = AnnotationObject(id = a["id"], project = a["project"], type = a["type"], type_title = a["type_title"], ensemble=a['ensemble'], media = a["media"], begin = a["begin"], end = a["end"], content = a['content'], tags = a['tags'], meta = a['meta'])
         return bundle
     
-    def get_resource_uri(self, bundle_or_obj):
+    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):
         return ''
 
     
\ No newline at end of file
--- a/src/ldt/ldt/api/ldt/resources/content.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/content.py	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,9 @@
-from django.conf.urls.defaults import url
+from django.conf.urls import url
+from itertools import groupby
+from ldt.indexation import get_results_list
 from ldt.ldt_utils.models import Content, Media
+from tastypie import fields
 from tastypie.resources import Bundle, ModelResource, ALL_WITH_RELATIONS, ALL
-from tastypie import fields
-from ldt.indexation import get_results_list
-from itertools import groupby
 
 class MediaResource(ModelResource):
     
@@ -12,8 +12,10 @@
         resource_name = 'medias'
         queryset = Media.objects.all()
     
-    def get_resource_uri(self, bundle_or_obj):
-        if isinstance(bundle_or_obj, Bundle):   
+    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):
+        if not bundle_or_obj:
+            return super(MediaResource, self).get_resource_uri(bundle_or_obj,url_name)        
+        elif isinstance(bundle_or_obj, Bundle):   
             return bundle_or_obj.obj.videopath + bundle_or_obj.obj.stream_src
         else:
             return bundle_or_obj.videopath + bundle_or_obj.stream_src
@@ -36,13 +38,15 @@
     def get_object_list(self, request):
         return Content.safe_objects.select_related('front_project', 'media_obj').all()
 
-    def override_urls(self):
-        # WARNING : in tastypie <= 1.0, override_urls is used instead of prepend_urls. From 1.0.0, prepend_urls will be prefered and override_urls deprecated 
+    def prepend_urls(self):
         return [
             url(r"^(?P<resource_name>%s)/recommended/$" % self._meta.resource_name, self.wrap_view('get_recommended'), name="api_contents_recommended"),
             url(r"^(?P<resource_name>%s)/(?P<iri_id>[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),            
         ]
-    def get_resource_uri(self, bundle_or_obj):
+
+    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):
+        if bundle_or_obj is None:
+            return super(ContentResource, self).get_resource_uri(bundle_or_obj, url_name)
         kwargs = {
             'resource_name': self._meta.resource_name,
             'api_name': self._meta.api_name
--- a/src/ldt/ldt/api/ldt/resources/project.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/project.py	Fri May 24 21:55:08 2013 +0200
@@ -1,12 +1,13 @@
 from django.conf import settings
-from django.conf.urls.defaults import url
+from django.conf.urls import url
 from django.contrib.auth.models import Group
 from guardian.shortcuts import assign
-from ldt.ldt_utils.models import Project
-from ldt.api.ldt.authentication import SessionAuthentication, MultiAuthentication, ApiKeyAuthentication
-from ldt.api.ldt.serializers.cinelabserializer import CinelabSerializer
+from ldt.api.ldt.authentication import (SessionAuthentication, 
+    MultiAuthentication, ApiKeyAuthentication)
 from ldt.api.ldt.resources import ContentResource
 from ldt.api.ldt.resources.user import UserResource
+from ldt.api.ldt.serializers.cinelabserializer import CinelabSerializer
+from ldt.ldt_utils.models import Project
 from ldt.security import protect_models, unprotect_models
 from ldt.security.permissionchecker import check_object_perm_for_user
 from tastypie import fields, http
@@ -38,13 +39,14 @@
     def get_object_list(self, request):
         return Project.safe_objects.all()
     
-    def override_urls(self):
-        # WARNING : in tastypie <= 1.0, override_urls is used instead of prepend_urls. From 1.0.0, prepend_urls will be prefered and override_urls deprecated 
+    def prepend_urls(self):
         return [
             url(r"^(?P<resource_name>%s)/(?P<ldt_id>[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
         ]
     
-    def get_resource_uri(self, bundle_or_obj):
+    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):
+        if bundle_or_obj is None:
+            return super(ProjectResource, self).get_resource_uri(bundle_or_obj,url_name)
         kwargs = {
             'resource_name': self._meta.resource_name,
             'api_name': self._meta.api_name
@@ -56,9 +58,12 @@
         return self._build_reverse_url("api_dispatch_detail", kwargs=kwargs)
         
     # Create a new project. Used with post_detail and with no ldt_id in the url
-    def obj_create(self, bundle, request=None, **kwargs):
+    def obj_create(self, bundle, **kwargs):
+        request = bundle.request
+        if request is None:
+            raise BadRequest("Request object must be passed as an argument")
         unprotect_models()
-        bundle = super(ProjectResource, self).obj_create(bundle, request)
+        bundle = super(ProjectResource, self).obj_create(bundle, **kwargs)
         # Assign permission for the owner
         assign('view_project', request.user, bundle.obj)
         assign('change_project', request.user, bundle.obj)
@@ -70,7 +75,7 @@
     
     
     # Prevent for put_list and delete all objects.
-    def obj_delete_list(self, request=None, **kwargs):
+    def obj_delete_list(self, bundle, **kwargs):
         raise BadRequest("PUT with a list of projects is forbidden.")
     
     
--- a/src/ldt/ldt/api/ldt/resources/segment.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/segment.py	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,5 @@
 from django.conf import settings
-from django.conf.urls.defaults import url
+from django.conf.urls import url
 from django.core.paginator import Paginator, InvalidPage
 from django.db.models import F, Q
 from ldt.indexation import get_results_list
@@ -28,8 +28,7 @@
 #    def determine_format(self, request):
 #        return "application/json"
     
-    def override_urls(self):
-        # WARNING : in tastypie <= 0.9.11, override_urls is used instead of prepend_urls. From 0.9.12, prepend_urls will be prefered and override_urls deprecated
+    def prepend_urls(self):
         return [
             url(r"^(?P<resource_name>%s)/search%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_search'), name="api_get_search"),
             url(r"^(?P<resource_name>%s)/bytimecode%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_segments_by_timecode'), name='segment_api_empty'),
--- a/src/ldt/ldt/api/ldt/resources/tag.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/tag.py	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,5 @@
 from django.conf import settings
-from django.conf.urls.defaults import url
+from django.conf.urls import url
 from django.core.paginator import Paginator, InvalidPage
 from ldt.ldt_utils.models import Segment
 from tagging.models import Tag
@@ -14,8 +14,7 @@
         resource_name = 'tags'
         queryset = Tag.objects.all()
     
-    def override_urls(self):
-        # WARNING : in tastypie <= 0.9.11, override_urls is used instead of prepend_urls. From 0.9.12, prepend_urls will be prefered and override_urls deprecated
+    def prepend_urls(self):
         return [
             url(r"^(?P<resource_name>%s)/search%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_search'), name="api_get_search"),
         ]
--- a/src/ldt/ldt/api/ldt/resources/user.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/resources/user.py	Fri May 24 21:55:08 2013 +0200
@@ -1,20 +1,23 @@
-from django.contrib.auth.models import User
-from django.conf.urls.defaults import url
+from django.conf.urls import url
+from django.contrib.auth import get_user_model
 from tastypie.resources import Bundle, ModelResource
 
+User = get_user_model()
+
 class UserResource(ModelResource):
     class Meta:
         allowed_methods = ['get']
         queryset =  User.objects.all()
         resource_name = 'users'
     
-    def override_urls(self):
-        # WARNING : in tastypie <= 1.0, override_urls is used instead of prepend_urls. From 1.0.0, prepend_urls will be prefered and override_urls deprecated 
+    def prepend_urls(self):
         return [
             url(r"^(?P<resource_name>%s)/(?P<username>[\w\d_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
         ]
     
-    def get_resource_uri(self, bundle_or_obj):
+    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):
+        if bundle_or_obj is None:
+            return super(UserResource, self).get_resource_uri(bundle_or_obj, url_name)
         kwargs = {
             'resource_name': self._meta.resource_name,
             'api_name': self._meta.api_name
--- a/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py	Fri May 24 21:55:08 2013 +0200
@@ -1,17 +1,15 @@
 from django.conf import settings
 from django.core.serializers import json
-from django.core.urlresolvers import reverse
 from django.utils import simplejson
 from ldt.ldt_utils.models import Content, Project
 from ldt.ldt_utils.projectserializer import ProjectJsonSerializer
 from ldt.ldt_utils.utils import generate_uuid
-from tastypie.serializers import Serializer
+from ldt.utils.url import reverse_prefix
 from tastypie.exceptions import NotFound, BadRequest
-import math
+from tastypie.serializers import Serializer
 import lxml.etree
-import logging
-import tastypie
-
+import math
+     
 
 class CinelabSerializer(Serializer):
     # Thanks to the this serializer, the api will be able to serialize and deserialize a project in cinelab json format
@@ -69,8 +67,9 @@
             ldt_id = generate_uuid()
         # default state = (1, 'edition') OR (2, 'published')
         state = 2
-        contents = [reverse("api_dispatch_detail", kwargs={"api_name":"1.0", "resource_name":"contents", "iri_id":c["id"]}) for c in cinelab["medias"]]
-        owner_uri = reverse("api_dispatch_detail", kwargs={"api_name":"1.0", "resource_name":"users", "username":meta["dc:creator"]})
+        
+        contents = [reverse_prefix("api_dispatch_detail", kwargs={"api_name":"1.0", "resource_name":"contents", "iri_id":c["id"]}) for c in cinelab["medias"]]
+        owner_uri = reverse_prefix("api_dispatch_detail", kwargs={"api_name":"1.0", "resource_name":"users", "username":meta["dc:creator"]})
         
         ldt = lxml.etree.tostring(self.cinelab_to_ldt(cinelab), pretty_print=True)
         
--- a/src/ldt/ldt/api/ldt/urls.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/ldt/urls.py	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, include
+from django.conf.urls import patterns, include
 from ldt.api.ldt.resources import ProjectResource, ContentResource, SegmentResource, AnnotationResource, UserResource, TagResource
 from tastypie.api import Api
 
--- a/src/ldt/ldt/api/middleware/pistonput.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/middleware/pistonput.py	Fri May 24 21:55:08 2013 +0200
@@ -3,8 +3,6 @@
 piston does not like 'charset=UTF-8" in PUT request
 """
 
-from django.conf import settings
-
 class PistonPutMiddleware(object):
 
     def process_request(self, request):
--- a/src/ldt/ldt/api/urls.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/api/urls.py	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, include
+from django.conf.urls import patterns, include
 
 urlpatterns = patterns('',
    # all my other url mappings
--- a/src/ldt/ldt/auth/__init__.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/auth/__init__.py	Fri May 24 21:55:08 2013 +0200
@@ -1,3 +1,6 @@
+from django.conf import settings
+from social_auth.backends import get_backends
+
 
 def check_access(user, obj):
     check_meth = getattr(obj, 'check_access', False)
@@ -5,3 +8,13 @@
         return check_meth(user)
     else:
         return user.is_staff
+
+def social_list():
+    """Start list process"""
+    l = []
+    # We list all wanted backends among all availables 
+    for backend in get_backends():
+        for backend_str in settings.AUTHENTICATION_BACKENDS:
+            if backend in backend_str:
+                l.append(backend)
+    return l
\ No newline at end of file
--- a/src/ldt/ldt/auth/views.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/auth/views.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,7 @@
 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
-
+from ldt.auth import social_list
 
 def login(request, template_name='registration/login.html',
           redirect_field_name=REDIRECT_FIELD_NAME,
--- a/src/ldt/ldt/core/handlers/modpython.py	Wed May 15 12:18:43 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-
-def handler(req):
-    activate_this = req.get_options().get("virtualenv.activate_path")
-    execfile(activate_this, dict(__file__=activate_this))    
-
-    import django.core.handlers.modpython
-
-    return django.core.handlers.modpython.handler(req)
--- a/src/ldt/ldt/core/models.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/core/models.py	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,8 @@
-from django.contrib.auth.models import User
 from django.db import models
-    
+from django.conf import settings    
 
 class Document(models.Model):
-    owner = models.ForeignKey(User, blank=True, null=True)
+    owner = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
 
     class Meta:
         abstract = True
--- a/src/ldt/ldt/forms/fields.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/forms/fields.py	Fri May 24 21:55:08 2013 +0200
@@ -3,11 +3,9 @@
 """
 
 from django import forms
+from django.core.exceptions import ValidationError
 from django.utils.translation import ugettext_lazy as _
-from django.core.exceptions import ValidationError
-import logging
 import time
-import math
 
 __all__ = (
     'LdtDurationField'
@@ -29,9 +27,9 @@
     
     def to_python(self, value):
         dur = value
-        for format in self.formats:
+        for f in self.formats:
             try:
-                dur = time.strptime(dur, format)
+                dur = time.strptime(dur, f)
                 dur = dur.tm_hour*3600 + dur.tm_min*60 + dur.tm_sec
                 dur = dur*1000
                 break
--- a/src/ldt/ldt/forms/widgets.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/forms/widgets.py	Fri May 24 21:55:08 2013 +0200
@@ -3,12 +3,8 @@
 """
 
 from django.contrib.admin.widgets import AdminSplitDateTime
-from django.forms.widgets import TimeInput
 from django.utils.safestring import mark_safe
 from django.utils.translation import ugettext as _
-import time
-import math
-import logging
 
 
 class LdtSplitDateTime(AdminSplitDateTime):
--- a/src/ldt/ldt/indexation/__init__.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/indexation/__init__.py	Fri May 24 21:55:08 2013 +0200
@@ -5,8 +5,6 @@
 from haystack.query import SearchQuerySet
 from ldt.indexation.highlighter import LdtHighlighter as Highlighter
 from ldt.indexation.query_parser import QueryParser
-from ldt.ldt_utils.models import Segment
-from ldt.text.models import Annotation
 import re
 import sys
 
@@ -33,6 +31,9 @@
 
 def get_results_list(field, query, highlight=True):
 
+    #put import here to avoid a circular dependency
+    from ldt.ldt_utils.models import Segment
+
     if field == 'all':
         field = 'text'
     
@@ -47,6 +48,9 @@
 
 def get_result_text(field, query):
 
+    #put import here to avoid a circular dependency
+    from ldt.text.models import Annotation
+
     if field == 'all':
         field = 'text'
     elif field == 'text':
--- a/src/ldt/ldt/indexation/backends/elasticsearch_backend.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/indexation/backends/elasticsearch_backend.py	Fri May 24 21:55:08 2013 +0200
@@ -4,14 +4,11 @@
 
 @author: ymh
 '''
-from django.db.models.loading import get_model
-from haystack.backends import BaseEngine, SearchResult, elasticsearch_backend
-from haystack.constants import DJANGO_CT, DJANGO_ID
+from haystack.backends import BaseEngine, elasticsearch_backend
 from haystack.exceptions import MissingDependency
 from haystack.utils import get_identifier
-from ldt.ldt_utils.models import Segment
+#from ldt.ldt_utils.models import Segment
 import collections
-import datetime
 try:
     import requests
 except ImportError:
@@ -46,7 +43,7 @@
         if highlight:
             fields_def = { }
  
-            if models is None or len(models) == 0 or Segment in models:
+            if models is None or len(models) == 0 :#or Segment in models:
                 fields_def['tags'] = {}
                 fields_def['title'] = {}
                 fields_def['abstract'] = {}
--- a/src/ldt/ldt/indexation/signals.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/indexation/signals.py	Fri May 24 21:55:08 2013 +0200
@@ -6,8 +6,6 @@
 '''
 from django.db import models
 from haystack import signals
-from ldt.ldt_utils.models import Segment
-from ldt.text.models import Annotation
 
 class LdtSignalProcessor(signals.BaseSignalProcessor):
     
@@ -20,13 +18,20 @@
         models.signals.post_delete.disconnect(self.handle_delete, sender=klass)
 
     
-    def setup(self):        
+    def setup(self):
+        #put import here to avoid circular 
+        from ldt.ldt_utils.models import Segment
+        from ldt.text.models import Annotation
+        
         self.__connect_signals(Segment)
         self.__connect_signals(Annotation)
 
 
 
     def teardown(self):
+        from ldt.ldt_utils.models import Segment
+        from ldt.text.models import Annotation
+
         self.__disconnect_signals(Annotation)
         self.__disconnect_signals(Segment)
         
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/admin.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/admin.py	Fri May 24 21:55:08 2013 +0200
@@ -1,17 +1,16 @@
-from django.conf.urls.defaults import patterns, url
+from StringIO import StringIO
+from django.conf.urls import patterns, url
 from django.contrib import admin
+from django.core.management import call_command
+from django.http import HttpResponse
 from django.shortcuts import render_to_response
 from django.template import RequestContext
+from guardian.admin import GuardedModelAdmin
 from ldt.ldt_utils.contentindexer import ContentIndexer, ProjectIndexer
 from ldt.ldt_utils.fileimport import FileImport, FileImportError
 from ldt.ldt_utils.forms import LdtImportForm, ReindexForm, StatAnnotationForm
 from ldt.ldt_utils.models import Content, Project, Media, Author
 from ldt.ldt_utils.stat import update_stat_content
-from guardian.admin import GuardedModelAdmin
-from django.http import HttpResponse
-from StringIO import StringIO
-from django.core.management import call_command
-import logging
 
 
 class ProjectAdmin(GuardedModelAdmin):
--- a/src/ldt/ldt/ldt_utils/middleware/userprofile.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/middleware/userprofile.py	Fri May 24 21:55:08 2013 +0200
@@ -6,8 +6,7 @@
     def process_request(self, request):
         
         if request.user.is_authenticated():
-            profile = request.user.get_profile()
-            language = profile.language
+            language = request.user.language
         else:
             language = settings.LANGUAGE_CODE[:2]
             request.user.is_regular = False
--- a/src/ldt/ldt/ldt_utils/migrations/0006_auto__add_field_media_image.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0006_auto__add_field_media_image.py	Fri May 24 21:55:08 2013 +0200
@@ -1,21 +1,19 @@
 # encoding: utf-8
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Adding field 'Media.image'
-        db.add_column('ldt_utils_media', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/contents/drive.jpg', max_length=100), keep_default=False)
+        db.add_column('ldt_utils_media', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/contents/drive.jpg', max_length=100), keep_default=False)  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Deleting field 'Media.image'
-        db.delete_column('ldt_utils_media', 'image')
+        db.delete_column('ldt_utils_media', 'image')  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0007_auto__add_field_content_image__del_field_media_image.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0007_auto__add_field_content_image__del_field_media_image.py	Fri May 24 21:55:08 2013 +0200
@@ -1,28 +1,26 @@
 # encoding: utf-8
-import datetime
 from django.conf import settings
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Adding field 'Content.image'
-        db.add_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default=settings.DEFAULT_CONTENT_ICON, max_length=100), keep_default=False)
+        db.add_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default=settings.DEFAULT_CONTENT_ICON, max_length=100), keep_default=False)  # @UndefinedVariable
 
         # Deleting field 'Media.image'
-        db.delete_column('ldt_utils_media', 'image')
+        db.delete_column('ldt_utils_media', 'image')  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Deleting field 'Content.image'
-        db.delete_column('ldt_utils_content', 'image')
+        db.delete_column('ldt_utils_content', 'image')  # @UndefinedVariable
 
         # Adding field 'Media.image'
-        db.add_column('ldt_utils_media', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/media/drive.jpg', max_length=100), keep_default=False)
+        db.add_column('ldt_utils_media', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/media/drive.jpg', max_length=100), keep_default=False)  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0008_auto__add_field_project_image.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0008_auto__add_field_project_image.py	Fri May 24 21:55:08 2013 +0200
@@ -1,21 +1,19 @@
 # encoding: utf-8
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Adding field 'Project.image'
-        db.add_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/projects/project_default_icon.png', max_length=100), keep_default=False)
+        db.add_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/projects/project_default_icon.png', max_length=100), keep_default=False)  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Deleting field 'Project.image'
-        db.delete_column('ldt_utils_project', 'image')
+        db.delete_column('ldt_utils_project', 'image')  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py	Fri May 24 21:55:08 2013 +0200
@@ -1,27 +1,25 @@
 # encoding: utf-8
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Changing field 'Content.image'
-        db.alter_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=200))
+        db.alter_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=200))  # @UndefinedVariable
 
         # Changing field 'Project.image'
-        db.alter_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=200))
+        db.alter_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=200))  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Changing field 'Content.image'
-        db.alter_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=100))
+        db.alter_column('ldt_utils_content', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=100))  # @UndefinedVariable
 
         # Changing field 'Project.image'
-        db.alter_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=100))
+        db.alter_column('ldt_utils_project', 'image', self.gf('sorl.thumbnail.fields.ImageField')(max_length=100))  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0015_auto__add_contentstat__del_field_content_last_annotated__del_field_con.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0015_auto__add_contentstat__del_field_content_last_annotated__del_field_con.py	Fri May 24 21:55:08 2013 +0200
@@ -1,15 +1,14 @@
 # encoding: utf-8
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
+import datetime
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Adding model 'ContentStat'
-        db.create_table('ldt_utils_contentstat', (
+        db.create_table('ldt_utils_contentstat', (  # @UndefinedVariable
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
             ('content', self.gf('django.db.models.fields.related.ForeignKey')(related_name='stat_annotation', unique=True, to=orm['ldt_utils.Content'])),
             ('annotation_volume_str', self.gf('django.db.models.fields.CommaSeparatedIntegerField')(max_length=1024, null=True, blank=True)),
@@ -17,31 +16,31 @@
             ('nb_annotations', self.gf('django.db.models.fields.IntegerField')(default=0, db_index=True)),
             ('last_annotated', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, null=True, blank=True)),
         ))
-        db.send_create_signal('ldt_utils', ['ContentStat'])
+        db.send_create_signal('ldt_utils', ['ContentStat'])  # @UndefinedVariable
 
         # Deleting field 'Content.last_annotated'
-        db.delete_column('ldt_utils_content', 'last_annotated')
+        db.delete_column('ldt_utils_content', 'last_annotated')  # @UndefinedVariable
 
         # Deleting field 'Content.nb_annotation'
-        db.delete_column('ldt_utils_content', 'nb_annotation')
+        db.delete_column('ldt_utils_content', 'nb_annotation')  # @UndefinedVariable
 
         # Deleting field 'Content.stat_annotation'
-        db.delete_column('ldt_utils_content', 'stat_annotation')
+        db.delete_column('ldt_utils_content', 'stat_annotation')  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Deleting model 'ContentStat'
-        db.delete_table('ldt_utils_contentstat')
+        db.delete_table('ldt_utils_contentstat')  # @UndefinedVariable
 
         # Adding field 'Content.last_annotated'
-        db.add_column('ldt_utils_content', 'last_annotated', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, null=True, blank=True), keep_default=False)
+        db.add_column('ldt_utils_content', 'last_annotated', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now, null=True, blank=True), keep_default=False)  # @UndefinedVariable
 
         # Adding field 'Content.nb_annotation'
-        db.add_column('ldt_utils_content', 'nb_annotation', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True), keep_default=False)
+        db.add_column('ldt_utils_content', 'nb_annotation', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True), keep_default=False)  # @UndefinedVariable
 
         # Adding field 'Content.stat_annotation'
-        db.add_column('ldt_utils_content', 'stat_annotation', self.gf('django.db.models.fields.CommaSeparatedIntegerField')(max_length=1024, null=True, blank=True), keep_default=False)
+        db.add_column('ldt_utils_content', 'stat_annotation', self.gf('django.db.models.fields.CommaSeparatedIntegerField')(max_length=1024, null=True, blank=True), keep_default=False)  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0016_one_to_one_stat_annotation.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0016_one_to_one_stat_annotation.py	Fri May 24 21:55:08 2013 +0200
@@ -1,19 +1,19 @@
 # encoding: utf-8
-from south.db import db #@UnresolvedImport
-from south.v2 import SchemaMigration #@UnresolvedImport
+from south.db import db
+from south.v2 import SchemaMigration
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Changing field 'ContentStat.content'
-        db.alter_column('ldt_utils_contentstat', 'content_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, to=orm['ldt_utils.Content']))
+        db.alter_column('ldt_utils_contentstat', 'content_id', self.gf('django.db.models.fields.related.OneToOneField')(unique=True, to=orm['ldt_utils.Content']))  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Changing field 'ContentStat.content'
-        db.alter_column('ldt_utils_contentstat', 'content_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, to=orm['ldt_utils.Content']))
+        db.alter_column('ldt_utils_contentstat', 'content_id', self.gf('django.db.models.fields.related.ForeignKey')(unique=True, to=orm['ldt_utils.Content']))  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/ldt_utils/migrations/0018_auto__chg_field_content_iri_id__chg_field_project_ldt_id__chg_field_au.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0018_auto__chg_field_content_iri_id__chg_field_project_ldt_id__chg_field_au.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,6 @@
 # -*- coding: utf-8 -*-
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 import hashlib
 import uuid
 
@@ -15,15 +13,15 @@
 
 
         # Changing field 'Content.iri_id'
-        db.alter_column('ldt_utils_content', 'iri_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))
+        db.alter_column('ldt_utils_content', 'iri_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))  # @UndefinedVariable
 
         # Changing field 'Project.ldt_id'
-        db.alter_column('ldt_utils_project', 'ldt_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))
+        db.alter_column('ldt_utils_project', 'ldt_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))  # @UndefinedVariable
 
         # Changing field 'Author.handle'
-        db.alter_column('ldt_utils_author', 'handle', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True, null=True))
+        db.alter_column('ldt_utils_author', 'handle', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True, null=True))  # @UndefinedVariable
         # Adding field 'Media.src_hash'
-        db.add_column('ldt_utils_media', 'src_hash',
+        db.add_column('ldt_utils_media', 'src_hash',  # @UndefinedVariable
                       self.gf('django.db.models.fields.CharField')(default=lambda : hashlib.sha512(str(uuid.uuid1())).hexdigest(), unique=False, max_length=128),
                       keep_default=False)
 
@@ -31,15 +29,15 @@
     def backwards(self, orm):
 
         # Changing field 'Content.iri_id'
-        db.alter_column('ldt_utils_content', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))
+        db.alter_column('ldt_utils_content', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))  # @UndefinedVariable
 
         # Changing field 'Project.ldt_id'
-        db.alter_column('ldt_utils_project', 'ldt_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))
+        db.alter_column('ldt_utils_project', 'ldt_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))  # @UndefinedVariable
 
         # Changing field 'Author.handle'
-        db.alter_column('ldt_utils_author', 'handle', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255, null=True))
+        db.alter_column('ldt_utils_author', 'handle', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255, null=True))  # @UndefinedVariable
         # Deleting field 'Media.src_hash'
-        db.delete_column('ldt_utils_media', 'src_hash')
+        db.delete_column('ldt_utils_media', 'src_hash')  # @UndefinedVariable
 
         # Adding unique constraint on 'Media', fields ['src']
         #db.create_unique('ldt_utils_media', ['src'])
--- a/src/ldt/ldt/ldt_utils/migrations/0020_auto__add_field_segment_id_hash__chg_field_segment_iri_id__chg_field_s.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0020_auto__add_field_segment_id_hash__chg_field_segment_iri_id__chg_field_s.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,6 @@
 # -*- coding: utf-8 -*-
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 import hashlib
 import uuid
 
@@ -14,73 +12,73 @@
         #db.delete_unique('ldt_utils_segment', ['ensemble_id', 'element_id', 'project_id', 'iri_id', 'cutting_id'])
 
         # Changing field 'Segment.iri_id'
-        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255))
+        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255))  # @UndefinedVariable
 
         # Changing field 'Segment.project_id'
-        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
+        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))  # @UndefinedVariable
 
 
         # Adding field 'Segment.id_hash'
-        db.add_column('ldt_utils_segment', 'id_hash',
+        db.add_column('ldt_utils_segment', 'id_hash',  # @UndefinedVariable
                       self.gf('django.db.models.fields.CharField')(default=lambda : hashlib.sha512(str(uuid.uuid1())).hexdigest(), max_length=128),
                       keep_default=False)
 
         # Changing field 'Segment.iri_id'
-        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255))
+        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=255))  # @UndefinedVariable
         # Adding index on 'Segment', fields ['iri_id']
-        db.create_index('ldt_utils_segment', ['iri_id'])
+        db.create_index('ldt_utils_segment', ['iri_id'])  # @UndefinedVariable
 
 
         # Changing field 'Segment.project_id'
-        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))
+        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=255, null=True))  # @UndefinedVariable
         # Adding index on 'Segment', fields ['project_id']
-        db.create_index('ldt_utils_segment', ['project_id'])
+        db.create_index('ldt_utils_segment', ['project_id'])  # @UndefinedVariable
         
         # Changing field 'Segment.cutting_id'
-        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=512))
+        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=512))  # @UndefinedVariable
 
         # Changing field 'Segment.ensemble_id'
-        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=512))
+        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=512))  # @UndefinedVariable
 
         # Changing field 'Segment.element_id'
-        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=512))        
+        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=512))        # @UndefinedVariable
 
 
 
 
     def backwards(self, orm):
         # Removing index on 'Segment', fields ['project_id']
-        db.delete_index('ldt_utils_segment', ['project_id'])
+        db.delete_index('ldt_utils_segment', ['project_id'])  # @UndefinedVariable
 
         # Removing index on 'Segment', fields ['iri_id']
-        db.delete_index('ldt_utils_segment', ['iri_id'])
+        db.delete_index('ldt_utils_segment', ['iri_id'])  # @UndefinedVariable
 
         # Deleting field 'Segment.id_hash'
-        db.delete_column('ldt_utils_segment', 'id_hash')
+        db.delete_column('ldt_utils_segment', 'id_hash')  # @UndefinedVariable
 
 
         # Changing field 'Segment.iri_id'
-        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.project_id'
-        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=1024, null=True))
+        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=1024, null=True))  # @UndefinedVariable
         # Adding unique constraint on 'Segment', fields ['ensemble_id', 'element_id', 'project_id', 'iri_id', 'cutting_id']
         #db.create_unique('ldt_utils_segment', ['ensemble_id', 'element_id', 'project_id', 'iri_id', 'cutting_id'])
         
         # Changing field 'Segment.iri_id'
-        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'iri_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.project_id'
-        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=1024, null=True))
+        db.alter_column('ldt_utils_segment', 'project_id', self.gf('django.db.models.fields.CharField')(max_length=1024, null=True))  # @UndefinedVariable
         
         # Changing field 'Segment.cutting_id'
-        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.ensemble_id'
-        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.element_id'
-        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
 
 
--- a/src/ldt/ldt/ldt_utils/migrations/0022_auto__add_unique_media_src_hash__chg_field_segment_cutting_id__chg_fie.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0022_auto__add_unique_media_src_hash__chg_field_segment_cutting_id__chg_fie.py	Fri May 24 21:55:08 2013 +0200
@@ -1,45 +1,43 @@
 # -*- coding: utf-8 -*-
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         # Adding unique constraint on 'Media', fields ['src_hash']
-        db.create_unique('ldt_utils_media', ['src_hash'])
+        db.create_unique('ldt_utils_media', ['src_hash'])  # @UndefinedVariable
 
 
         # Changing field 'Segment.cutting_id'
-        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=512))
+        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=512))  # @UndefinedVariable
 
         # Changing field 'Segment.ensemble_id'
-        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=512))
+        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=512))  # @UndefinedVariable
         # Adding unique constraint on 'Segment', fields ['id_hash']
-        db.create_unique('ldt_utils_segment', ['id_hash'])
+        db.create_unique('ldt_utils_segment', ['id_hash'])  # @UndefinedVariable
 
 
         # Changing field 'Segment.element_id'
-        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=512))
+        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=512))  # @UndefinedVariable
 
     def backwards(self, orm):
         # Removing unique constraint on 'Segment', fields ['id_hash']
-        db.delete_unique('ldt_utils_segment', ['id_hash'])
+        db.delete_unique('ldt_utils_segment', ['id_hash'])  # @UndefinedVariable
 
         # Removing unique constraint on 'Media', fields ['src_hash']
-        db.delete_unique('ldt_utils_media', ['src_hash'])
+        db.delete_unique('ldt_utils_media', ['src_hash'])  # @UndefinedVariable
 
 
         # Changing field 'Segment.cutting_id'
-        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'cutting_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.ensemble_id'
-        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'ensemble_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
         # Changing field 'Segment.element_id'
-        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=1024))
+        db.alter_column('ldt_utils_segment', 'element_id', self.gf('django.db.models.fields.CharField')(max_length=1024))  # @UndefinedVariable
 
     models = {
         'auth.group': {
--- a/src/ldt/ldt/ldt_utils/migrations/0023_auto__add_field_segment_audio_src__add_field_segment_audio_href.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0023_auto__add_field_segment_audio_src__add_field_segment_audio_href.py	Fri May 24 21:55:08 2013 +0200
@@ -1,21 +1,19 @@
 # -*- coding: utf-8 -*-
-import datetime
+from django.core.management import call_command
 from south.db import db
 from south.v2 import SchemaMigration
-from django.core.management import call_command
-from django.db import models
 
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         # Adding field 'Segment.audio_src'
-        db.add_column('ldt_utils_segment', 'audio_src',
+        db.add_column('ldt_utils_segment', 'audio_src',  # @UndefinedVariable
                       self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True),
                       keep_default=False)
 
         # Adding field 'Segment.audio_href'
-        db.add_column('ldt_utils_segment', 'audio_href',
+        db.add_column('ldt_utils_segment', 'audio_href',  # @UndefinedVariable
                       self.gf('django.db.models.fields.CharField')(max_length=512, null=True, blank=True),
                       keep_default=False)
         
@@ -25,10 +23,10 @@
 
     def backwards(self, orm):
         # Deleting field 'Segment.audio_src'
-        db.delete_column('ldt_utils_segment', 'audio_src')
+        db.delete_column('ldt_utils_segment', 'audio_src')  # @UndefinedVariable
 
         # Deleting field 'Segment.audio_href'
-        db.delete_column('ldt_utils_segment', 'audio_href')
+        db.delete_column('ldt_utils_segment', 'audio_href')  # @UndefinedVariable
         
 
 
--- a/src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,6 @@
 # -*- coding: utf-8 -*-
-import datetime
-from south.db import db
+from django.conf import settings
 from south.v2 import DataMigration
-from django.conf import settings
-from django.db import models
 
 class Migration(DataMigration):
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/ldt_utils/migrations/0027_auto__chg_field_project_owner__chg_field_media_creator.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    depends_on = (
+        ("user", "0009_rename_auth_user_to_user_ldt_user"),
+    )
+ 
+    def forwards(self, orm):
+
+        # Changing field 'Project.owner'
+        db.alter_column(u'ldt_utils_project', 'owner_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['user.LdtUser'], null=True))  # @UndefinedVariable
+
+        # Changing field 'Media.creator'
+        db.alter_column(u'ldt_utils_media', 'creator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['user.LdtUser'], null=True))  # @UndefinedVariable
+
+    def backwards(self, orm):
+
+        # Changing field 'Project.owner'
+        db.alter_column(u'ldt_utils_project', 'owner_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True))  # @UndefinedVariable
+
+        # Changing field 'Media.creator'
+        db.alter_column(u'ldt_utils_media', 'creator_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True))  # @UndefinedVariable
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'ldt_utils.author': {
+            'Meta': {'object_name': 'Author'},
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}),
+            'firstname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'handle': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'lastname': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'})
+        },
+        u'ldt_utils.content': {
+            'Meta': {'ordering': "['title']", 'object_name': 'Content'},
+            'authors': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['ldt_utils.Author']", 'symmetrical': 'False', 'blank': 'True'}),
+            'content_creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'duration': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'front_project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['ldt_utils.Project']", 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/contents/content_default_icon.png'", 'max_length': '200'}),
+            'iri_id': ('django.db.models.fields.CharField', [], {'default': "u'ed941038-be29-11e2-8b76-58b035f6b93d'", 'unique': 'True', 'max_length': '255'}),
+            'iriurl': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+            'media_obj': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['ldt_utils.Media']", 'null': 'True', 'blank': 'True'}),
+            'tags': ('tagging.fields.TagField', [], {'max_length': '2048', 'null': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'update_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
+        },
+        u'ldt_utils.contentstat': {
+            'Meta': {'object_name': 'ContentStat'},
+            'annotation_volume_str': ('django.db.models.fields.CommaSeparatedIntegerField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'content': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'stat_annotation'", 'unique': 'True', 'to': u"orm['ldt_utils.Content']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'last_annotated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'null': 'True', 'blank': 'True'}),
+            'nb_annotations': ('django.db.models.fields.IntegerField', [], {'default': '0', 'db_index': 'True'}),
+            'polemics_volume_str': ('django.db.models.fields.CommaSeparatedIntegerField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'})
+        },
+        u'ldt_utils.media': {
+            'Meta': {'object_name': 'Media'},
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['user.LdtUser']", 'null': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'duration': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'external_permalink': ('django.db.models.fields.URLField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'external_publication_url': ('django.db.models.fields.URLField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'external_src_url': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'media_creation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+            'mimetype_field': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'src': ('django.db.models.fields.CharField', [], {'max_length': '1024'}),
+            'src_hash': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'blank': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'update_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'videopath': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'})
+        },
+        u'ldt_utils.project': {
+            'Meta': {'ordering': "['title']", 'object_name': 'Project'},
+            'changed_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'contents': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['ldt_utils.Content']", 'symmetrical': 'False'}),
+            'created_by': ('django.db.models.fields.CharField', [], {'max_length': '70'}),
+            'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/projects/project_default_icon.png'", 'max_length': '200'}),
+            'ldt': ('django.db.models.fields.TextField', [], {'null': 'True'}),
+            'ldt_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+            'modification_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
+            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['user.LdtUser']", 'null': 'True', 'blank': 'True'}),
+            'state': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '1024'})
+        },
+        u'ldt_utils.segment': {
+            'Meta': {'object_name': 'Segment'},
+            'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'audio_href': ('django.db.models.fields.CharField', [], {'max_length': '512', 'null': 'True', 'blank': 'True'}),
+            'audio_src': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'author': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'null': 'True', 'blank': 'True'}),
+            'content': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['ldt_utils.Content']"}),
+            'cutting_id': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
+            'date': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
+            'duration': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+            'element_id': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
+            'ensemble_id': ('django.db.models.fields.CharField', [], {'max_length': '512', 'db_index': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'id_hash': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128', 'blank': 'True'}),
+            'iri_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+            'polemics': ('django.db.models.fields.IntegerField', [], {'default': '0', 'null': 'True', 'blank': 'True'}),
+            'project_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'project_obj': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['ldt_utils.Project']", 'null': 'True'}),
+            'start_ts': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
+            'tags': ('tagging.fields.TagField', [], {'max_length': '2048', 'null': 'True'}),
+            'title': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'null': 'True', 'blank': 'True'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        }
+    }
+
+    complete_apps = ['ldt_utils']
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/models.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/models.py	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,8 @@
+from .events import post_project_save
 from django.conf import settings
-from django.contrib.auth.models import User, Group
+from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
+from django.core.files.storage import default_storage
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 from guardian.shortcuts import assign, remove_perm, get_perms
@@ -8,13 +11,13 @@
     get_current_user)
 from ldt.security.manager import SafeManager
 from ldt.security.models import SafeModel
-from ldt.utils import url as url_utils
+from ldt.utils import generate_hash, url as url_utils
+from ldt.utils.web_url_management import get_web_url
+from shutil import move
 from sorl.thumbnail import ImageField
 from tagging.models import Tag
 from utils import (create_ldt, copy_ldt, create_empty_iri, update_iri, 
     generate_uuid)
-from ldt.utils import generate_hash 
-from ldt.utils.web_url_management import get_web_url
 import datetime
 import lxml.etree #@UnresolvedImport
 import mimetypes
@@ -22,10 +25,8 @@
 import re
 import tagging.fields
 import uuid
-from shutil import move
-from django.core.files.storage import default_storage
-from .events import post_project_save
 
+User = get_user_model()
 
 class Author(SafeModel):
 
@@ -63,7 +64,7 @@
     update_date = models.DateTimeField(auto_now=True, verbose_name=_('media.update_date'))
     videopath = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('media.videopath'))
     duration = models.IntegerField(null=True, blank=True, verbose_name=_('media.duration'))
-    creator = models.ForeignKey(User, blank=True, null=True, verbose_name=_('media.creator'))
+    creator = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, verbose_name=_('media.creator'))
     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, verbose_name=_('media.src'))
--- a/src/ldt/ldt/ldt_utils/projectserializer.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/projectserializer.py	Fri May 24 21:55:08 2013 +0200
@@ -1,14 +1,17 @@
 from datetime import datetime
 from django.conf import settings
+from django.contrib.auth import get_user_model
 from django.contrib.contenttypes.models import ContentType
 from django.utils.datastructures import SortedDict
-from ldt.ldt_utils.models import Content, User, Project
+from ldt.ldt_utils.models import Content, Project
 from ldt.ldt_utils.stat import get_string_from_buckets
 from ldt.ldt_utils.utils import reduce_text_node
 import logging
 import lxml.etree
 import uuid
 
+User = get_user_model()
+
 DATE_FORMATS = ["%d/%m/%Y", "%Y-%m-%d"]
 
 logger = logging.getLogger(__name__)
--- a/src/ldt/ldt/ldt_utils/segmentserializer.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/segmentserializer.py	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,4 @@
 from django.conf import settings
-from ldt.ldt_utils.models import Project
 from ldt.ldt_utils.stat import get_string_from_buckets
 from ldt.security.utils import use_forbidden_url
 from tagging.utils import parse_tag_input
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_action.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_action.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% extends "admin/base_site.html" %}
 {% load i18n %}
 {% block breadcrumbs %}
-<div class="breadcrumbs"><a href="{% url admin:index %}"> {% trans "Home" %}</a> &rsaquo; <a href="{% url admin:app_list 'ldt_utils' %}">ldt_utils</a> &rsaquo; {{ current_action }}</div>
+<div class="breadcrumbs"><a href="{% url 'admin:index' %}"> {% trans "Home" %}</a> &rsaquo; <a href="{% url 'admin:app_list' 'ldt_utils' %}">ldt_utils</a> &rsaquo; {{ current_action }}</div>
 {% endblock %}
 
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/app_index.html	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,8 @@
 {% extends "admin/app_index.html" %}
-{% load absurl %}
-{% load absstatic %}
+{% load static %}
 {% block extrastyle %}
     {{ block.super }}
-    <link rel="stylesheet" type="text/css" href='{% absstatic "ldt/css/dashboard.css" %}' />
+    <link rel="stylesheet" type="text/css" href='{% static "ldt/css/dashboard.css" %}' />
 {% endblock %}
 {% load i18n %}
 {% block content %}
@@ -13,18 +12,18 @@
 	<table summary="Import">
 		<caption>Import</caption>
 		<tr>
-			<th><a href="{% absurl admin:ldt_content_import_file %}">Import
+			<th><a href="{% url 'admin:ldt_content_import_file' %}">Import
 			an ldt</a>
 			</th>
 			<td>&nbsp;</td>
 		</tr>
 		<tr>
-			<th><a href="{% absurl admin:ldt_content_reindex %}">Reindex</a>
+			<th><a href="{% url 'admin:ldt_content_reindex' %}">Reindex</a>
 			</th>
 			<td>&nbsp;</td>
 		</tr>
 		<tr>
-			<th><a href="{% absurl admin:ldt_project_compute_stats %}">Compute stats</a>
+			<th><a href="{% url 'admin:ldt_project_compute_stats' %}">Compute stats</a>
 			</th>
 			<td>&nbsp;</td>
 		</tr>
@@ -34,7 +33,7 @@
     <table summary="Data">
         <caption>Data</caption>
         <tr>
-            <th><a href="{% absurl admin:ldt_admin_dump_data %}">Dump data</a>
+            <th><a href="{% url 'admin:ldt_admin_dump_data' %}">Dump data</a>
             </th>
             <td>&nbsp;</td>
         </tr>
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/dumpdata.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/dumpdata.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,5 @@
 {% extends "admin/ldt_utils/app_action.html" %}
 {% load i18n %}
-{% load absurl %}
 {# DUMP DATA #}
 {% block content %}
 {% if message %}
@@ -9,8 +8,8 @@
 </div>
 {% endif %}
 <div>
-<p>Click <a href="{% absurl admin:ldt_admin_dump_data %}?dump=1">HERE</a> if you want to download the dumpdata's json. It can be long to load. The dumpdata is full and raw, without natural keys.</p>
+<p>Click <a href="{% url 'admin:ldt_admin_dump_data' %}?dump=1">HERE</a> if you want to download the dumpdata's json. It can be long to load. The dumpdata is full and raw, without natural keys.</p>
 </div>
 
-<a href="{% absurl admin:app_list 'ldt_utils' %}">Back to administration page</a>
+<a href="{% url 'admin:app_list' app_label='ldt_utils' %}">Back to administration page</a>
 {% endblock %}
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/reindex_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/reindex_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,5 @@
 {% extends "admin/ldt_utils/app_action.html" %}
 {% load i18n %}
-{% load absurl %}
 {# reindex contents #}
 {% block content %}
 {% if message %}
@@ -12,13 +11,13 @@
 {% endif %}
 <div>
 <form method="post"
-	action="{% absurl admin:ldt_content_reindex %}">{% csrf_token %}
+	action="{% url 'admin:ldt_content_reindex' %}">{% csrf_token %}
 <table>
 	{{ form.as_table }}
 </table>
 <input type="submit" /></form>
 </div>
 
-<a href="{% absurl admin:app_list 'ldt_utils' %}">Back to administration page</a>
+<a href="{% url 'admin:app_list' app_label='ldt_utils' %}">Back to administration page</a>
 
 {% endblock %}
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/stats_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/stats_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,5 @@
 {% extends "admin/ldt_utils/app_action.html" %}
 {% load i18n %}
-{% load absurl %}
 {# reindex contents #}
 {% block content %}
 {% if message %}
@@ -12,13 +11,13 @@
 {% endif %}
 <div>
 <form method="post"
-	action="{% absurl admin:ldt_project_compute_stats %}">{% csrf_token %}
+	action="{% url 'admin:ldt_project_compute_stats' %}">{% csrf_token %}
 <table>
 	{{ form.as_table }}
 </table>
 <input type="submit" /></form>
 </div>
 
-<a href="{% absurl admin:app_list 'ldt_utils' %}">Back to administration page</a>
+<a href="{% url 'admin:app_list' app_label='ldt_utils' %}">Back to administration page</a>
 
 {% endblock %}
--- a/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/admin/ldt_utils/content/upload_form.html	Fri May 24 21:55:08 2013 +0200
@@ -22,6 +22,6 @@
 <input type="submit" /></form>
 {% endif %}
 
-<a href="{% url admin:app_list 'ldt_utils' %}">Back to administration page</a>
+<a href="{% url 'admin:app_list' 'ldt_utils' %}">Back to administration page</a>
 
 {% endblock %}
--- a/src/ldt/ldt/ldt_utils/templates/front/front_all_contents.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_all_contents.html	Fri May 24 21:55:08 2013 +0200
@@ -2,7 +2,7 @@
 {% load i18n %}
 {% load thumbnail %}
 {% load front_tags %}
-{% load absstatic %}
+{% load static %}
 
 {% block title %}
 {% if tag_label %}
@@ -14,13 +14,13 @@
 
 {% block js_import %}
 {{block.super}}
-<script src='{% absstatic "ldt/js/raphael.js" %}' type="text/javascript"></script>
-<script src='{% absstatic "ldt/js/Ldt_front_sparkline.js" %}' type="text/javascript"></script>
+<script src='{% static "ldt/js/raphael.js" %}' type="text/javascript"></script>
+<script src='{% static "ldt/js/Ldt_front_sparkline.js" %}' type="text/javascript"></script>
 {% endblock %}
 
 {% block css_import %}
 {{block.super}}
-<link rel="stylesheet" href='{% absstatic "ldt/css/front_home.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/front_home.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block js_declaration %}
@@ -42,17 +42,17 @@
 {% block body %}
 {{block.super}}
 <!-- Last annotated contents -->
-{% if front_tags|length > 0 %}<p class="tag_link">{% trans 'Filter the medias by category' %} : {% for t in front_tags %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}?tag={{t}}">{{t}}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>{% endif %}
+{% if front_tags|length > 0 %}<p class="tag_link">{% trans 'Filter the medias by category' %} : {% for t in front_tags %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?tag={{t}}">{{t}}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>{% endif %}
 <ul class="floatlist full_width" id="derniers_medias">
     <li class="li_h2">
       <ul class="title_ul">
         <li><h2>
-        {% if tag_label %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}">{% trans 'All medias' %}</a>{% if tag_label %}<span class="pink"> &gt; {{tag_label}}</span>{% endif %}
-        {% elif media_title %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}">{% trans 'All medias' %}</a>{% if media_title %}<span class="pink"> &gt; "{{media_title}}"</span>{% endif %}
+        {% if tag_label %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}">{% trans 'All medias' %}</a>{% if tag_label %}<span class="pink"> &gt; {{tag_label}}</span>{% endif %}
+        {% elif media_title %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}">{% trans 'All medias' %}</a>{% if media_title %}<span class="pink"> &gt; "{{media_title}}"</span>{% endif %}
         {% else %}{% trans 'All medias' %}{% endif %}</h2>
         </li>
         <li class="li_right">
-          <span class="tag_link"><a href="#" id="tag_cloud_link" title="{% trans 'Filter the medias' %}"><img id="hide_tag_cloud" src='{% absstatic "ldt/img/little_minus_pink.png" %}' alt="{% trans 'Filter the medias' %}" /><img id="show_tag_cloud" src='{% absstatic "ldt/img/little_plus_pink.png" %}' alt="{% trans 'Filter the medias' %}" />&nbsp;{% trans 'Filter the medias' %}</a></span>
+          <span class="tag_link"><a href="#" id="tag_cloud_link" title="{% trans 'Filter the medias' %}"><img id="hide_tag_cloud" src='{% static "ldt/img/little_minus_pink.png" %}' alt="{% trans 'Filter the medias' %}" /><img id="show_tag_cloud" src='{% static "ldt/img/little_plus_pink.png" %}' alt="{% trans 'Filter the medias' %}" />&nbsp;{% trans 'Filter the medias' %}</a></span>
         </li>
       </ul>
     </li>
@@ -61,7 +61,7 @@
         {% trans 'Search in the medias title' %} : 
         <input id="input_media_title" type="text" name="title"> <input id="search_media_title" type="submit" value=""/>
       </form>
-    {% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}?tag={{t.name}}">
+    {% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?tag={{t.name}}">
       <span style="font-size:{{t.font_size|add:"12"}}px;">{{t.name}}</span></a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>
     {% endif %}
     </li>
@@ -69,7 +69,7 @@
         <li id="result_pagination" class="li_h2">
             <p>
             {% if results.has_previous %}
-                <a class="blue under" href="{% url ldt.ldt_utils.views.front.all_contents %}?page={{ results.previous_page_number }}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
+                <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?page={{ results.previous_page_number }}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
             {% endif %}
             {% if results.paginator.num_pages > 1 %}
             <span class="current">
@@ -78,7 +78,7 @@
                     {% if i|add:'1' == results.number %}
                     <span class="pink">{{i|add:'1'}}</span>
                     {% else %}
-                    <a class="blue under" href="{% url ldt.ldt_utils.views.front.all_contents %}?page={{i|add:'1'}}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}">{{i|add:'1'}}</a>
+                    <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?page={{i|add:'1'}}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}">{{i|add:'1'}}</a>
                     {% endif %}
                     {% if i|add:'1' < results.paginator.num_pages and 1 < results.paginator.num_pages %}
                     {% endif %}
@@ -87,10 +87,10 @@
             </span>
             {% endif %}
             {% if results.has_next %}
-                <a class="blue under" href="{% url ldt.ldt_utils.views.front.all_contents %}?page={{ results.next_page_number }}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}" title="{% trans 'next' %}">{% trans "next" %}</a>
+                <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?page={{ results.next_page_number }}{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}" title="{% trans 'next' %}">{% trans "next" %}</a>
             {% endif %}
             {% if results.paginator.num_pages > 1 %}
-                . <a class="blue under" href="{% url ldt.ldt_utils.views.front.all_contents %}?page=x{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}"">({% trans 'All' %})</a>
+                . <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?page=x{% if tag_label %}&tag={{tag_label}}{% endif %}{% if media_title %}&title={{media_title}}{% endif %}"">({% trans 'All' %})</a>
             {% endif %}
             </p>
         </li>
@@ -98,7 +98,7 @@
     {% for content in results.object_list %}
     <li class="li_media">
         <div class="img_and_overlay">
-            <a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}">
+            <a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}">
                 {% thumbnail content.image "294x165" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'open this media' %}" title="{% trans 'open this media' %}">{% endthumbnail %}
             </a>
             <div class="overlay">
@@ -112,12 +112,12 @@
             </div>
         </div>
         <div class="bulle_annot" title="{% blocktrans count nb=content.nb_annotations %}{{nb}} annotation on this media{% plural %}{{nb}} annotations on this media{% endblocktrans %}">{{ content.nb_annotations }}</div>
-        <p><a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}" title="{% trans 'open this media' %}" ><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
+        <p><a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}" title="{% trans 'open this media' %}" ><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
         <p>{% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}</p>
     </li>
     {% endfor %}
 </ul>
-{% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}?tag={{t.name}}">
+{% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?tag={{t.name}}">
   <span style="font-size:{{t.font_size|add:"12"}}px;">{{t.name}}</span>
   </a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>
 {% endif %}
--- a/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% load i18n %}
 {% load logintag %}
 {% load navigation %}
-{% load absstatic %}
+{% load static %}
 {% load analytics %}
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@@ -10,15 +10,15 @@
 {% block head %}
     <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
     <meta http-equiv="content-language" content="{{LANGUAGE_CODE}}" />
-    <link rel="SHORTCUT ICON" href='{% absstatic "ldt/img/favicon.ico" %}' />
+    <link rel="SHORTCUT ICON" href='{% static "ldt/img/favicon.ico" %}' />
     <title>{% block title %}Lignes de temps{% endblock %}</title>
     {% block js_import %}
-    	<script src='{% absstatic "ldt/js/jquery.min.js" %}' type="text/javascript"></script>
-    	<script src='{% absstatic "ldt/js/jquery.textchange.min.js" %}' type="text/javascript"></script>
+    	<script src='{% static "ldt/js/jquery.min.js" %}' type="text/javascript"></script>
+    	<script src='{% static "ldt/js/jquery.textchange.min.js" %}' type="text/javascript"></script>
     {% endblock %}
     {% block css_declaration %}{% endblock %}
     {% block css_import %}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/front_common.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/front_common.css" %}' type="text/css"/>
     {% endblock %}
     {% block js_declaration %}
     <script type="text/javascript">
@@ -42,10 +42,10 @@
 <div id="general_container">
     <ul class="floatlist" id="title_bar">
         <li id="li_h1">
-            <h1><a href="{% url ldt.ldt_utils.views.front.front_home %}" title="{% trans 'homepage' %}">{% trans '<b>Lignes</b> de temps' %}</a></h1>
+            <h1><a href="{% url 'ldt.ldt_utils.views.front.front_home' %}" title="{% trans 'homepage' %}">{% trans '<b>Lignes</b> de temps' %}</a></h1>
         </li>
         <li id="li_search">
-            <form id="form_search" action="{% url ldt.ldt_utils.views.front.search_index %}" method="GET">
+            <form id="form_search" action="{% url 'ldt.ldt_utils.views.front.search_index' %}" method="GET">
                 <!--input id="search_text" name="q" value="" /-->
                 <input id="id_search" type="text" name="search">
                 <input type="hidden" value="all" name="field">
@@ -56,20 +56,20 @@
         {% if user.is_authenticated %}
         <li id="li_annotation">
             <div class="fl">
-                <!-- a href="#"><img src='{% absstatic "ldt/img/annot_icon.png" %}' id="annot_icon" /></a -->
-                <a href="{% url root-view %}"  title="{% trans "My projects" %}">{% trans "My projects" %}</a>
+                <!-- a href="#"><img src='{% static "ldt/img/annot_icon.png" %}' id="annot_icon" /></a -->
+                <a href="{% url 'root-view' %}"  title="{% trans "My projects" %}">{% trans "My projects" %}</a>
             </div>
             <div class="fl">
-                <!-- a href="{% url root-view %}">{% trans 'Annotate' %}</a -->
+                <!-- a href="{% url 'root-view' %}">{% trans 'Annotate' %}</a -->
             </div>
         </li>
         {% endif %}
         
         <li id="li_connexion">
              {% if user.is_authenticated %}
-             	<a href="{% url ldt.user.views.logout_view %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
+             	<a href="{% url 'ldt.user.views.logout_view' %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
              {% else %}
-             	<a href="{% url auth_login %}" title="{% trans "Log in" %}">{% trans "Log in" %}</a>
+             	<a href="{% url 'auth_login' %}" title="{% trans "Log in" %}">{% trans "Log in" %}</a>
              {% endif %}       
         </li>
     </ul>
--- a/src/ldt/ldt/ldt_utils/templates/front/front_group.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_group.html	Fri May 24 21:55:08 2013 +0200
@@ -2,13 +2,13 @@
 {% load i18n %}
 {% load thumbnail %}
 {% load front_tags %}
-{% load absstatic %}
+{% load static %}
 
 {% block title %}Lignes de temps : groupe "{{group.name}}"{% endblock %}
 
 {% block css_import %}
 {{block.super}}
-<link rel="stylesheet" href='{% absstatic "ldt/css/front_group.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/front_group.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block js_declaration %}
@@ -91,9 +91,9 @@
     </li>
     {% for content in content_list %}
     <li class="li_media">
-        <a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}">{% thumbnail content.image "134x75" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'open this media' %}" title="{% trans 'open this media' %}">{% endthumbnail %}</a>
+        <a href="{% url 'ldt.ldt_utils.views.front.annot_content' content.iri_id %}">{% thumbnail content.image "134x75" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'open this media' %}" title="{% trans 'open this media' %}">{% endthumbnail %}</a>
         <div class="bulle_annot" title="{% blocktrans count nb=content.nb_annotations %}{{nb}} annotation on this media{% plural %}{{nb}} annotations on this media{% endblocktrans %}">{{content.nb_annotations}}</div>
-        <p><a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}" title="{% trans 'open this media' %}"><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
+        <p><a href="{% url 'ldt.ldt_utils.views.front.annot_content' content.iri_id %}" title="{% trans 'open this media' %}"><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
         <p class="font_11">{% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}</p>
     </li>
     {% endfor %}
@@ -118,7 +118,7 @@
 	<ul class="floatlist" id="membres_groupes">
 	    {% for user in users %}
 	    <li class="li_membre_groupe">
-	      {% thumbnail user.get_profile.image "36x36" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" title="{{user.username}}" alt="{{user.username}}">{% endthumbnail %}
+	      {% thumbnail user.image "36x36" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" title="{{user.username}}" alt="{{user.username}}">{% endthumbnail %}
 	      <p><b>{{user.username}}</b></p>
 	      <p class="font_11">{% trans 'active since' %} {{user.date_joined|date:"Y/m/d"}}</p>
 	    </li>
--- a/src/ldt/ldt/ldt_utils/templates/front/front_home.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_home.html	Fri May 24 21:55:08 2013 +0200
@@ -2,19 +2,19 @@
 {% load i18n %}
 {% load thumbnail %}
 {% load front_tags %}
-{% load absstatic %}
+{% load static %}
 
 {% block title %}{% trans "front.home" %}{% endblock %}
 
 {% block js_import %}
 {{block.super}}
-<script src='{% absstatic "ldt/js/raphael.js" %}' type="text/javascript"/></script>
-<script src='{% absstatic "ldt/js/Ldt_front_sparkline.js" %}' type="text/javascript"/></script>
+<script src='{% static "ldt/js/raphael.js" %}' type="text/javascript"/></script>
+<script src='{% static "ldt/js/Ldt_front_sparkline.js" %}' type="text/javascript"/></script>
 {% endblock %}
 
 {% block css_import %}
 {{block.super}}
-<link rel="stylesheet" href='{% absstatic "ldt/css/front_home.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/front_home.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block js_declaration %}
@@ -36,29 +36,29 @@
 {% block body %}
 {{block.super}}
 <!-- Last annotated contents -->
-{% if front_tags|length > 0 %}<p class="tag_link">{% trans 'Filter the medias by category' %} : {% for t in front_tags %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}?tag={{t}}">{{t}}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>{% endif %}
+{% if front_tags|length > 0 %}<p class="tag_link">{% trans 'Filter the medias by category' %} : {% for t in front_tags %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?tag={{t}}">{{t}}</a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>{% endif %}
 <ul class="floatlist full_width" id="derniers_medias">
     <li class="li_h2">
       <ul class="title_ul">
         <li><h2>{% trans 'Last annotated medias' %}</h2></li>
 	    <li class="li_right">
-	        <a class="blue" href="{% url ldt.ldt_utils.views.front.all_contents %}" title="{% trans 'view all medias' %}">{% trans 'All medias' %}</a>&nbsp;&nbsp;<span class="tag_link"><a href="#" id="tag_cloud_link" title="{% trans 'Filter the medias' %}"><img id="hide_tag_cloud" src='{% absstatic "ldt/img/little_minus_pink.png" %}' alt="{% trans 'Filter the medias' %}" /><img id="show_tag_cloud" src='{% absstatic "ldt/img/little_plus_pink.png" %}' alt="{% trans 'Filter the medias' %}" />&nbsp;{% trans 'Filter the medias' %}</a></span>
+	        <a class="blue" href="{% url 'ldt.ldt_utils.views.front.all_contents' %}" title="{% trans 'view all medias' %}">{% trans 'All medias' %}</a>&nbsp;&nbsp;<span class="tag_link"><a href="#" id="tag_cloud_link" title="{% trans 'Filter the medias' %}"><img id="hide_tag_cloud" src='{% static "ldt/img/little_minus_pink.png" %}' alt="{% trans 'Filter the medias' %}" /><img id="show_tag_cloud" src='{% static "ldt/img/little_plus_pink.png" %}' alt="{% trans 'Filter the medias' %}" />&nbsp;{% trans 'Filter the medias' %}</a></span>
 	    </li>
       </ul>
     </li>
     <li class="li_h2" id="home_tag_cloud">
-      <form id="media_search" method="GET" action="{% url ldt.ldt_utils.views.front.all_contents %}">
+      <form id="media_search" method="GET" action="{% url 'ldt.ldt_utils.views.front.all_contents' %}">
         {% trans 'Search in the medias title' %} : 
         <input id="input_media_title" type="text" name="title"/><input id="search_media_title" type="submit" value=""/>
       </form>
-    {% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url ldt.ldt_utils.views.front.all_contents %}?tag={{t.name}}">
+    {% if tag_cloud|length > 0 %}<p class="left tag_link">{% trans 'All categories of medias' %} : {% for t in tag_cloud %}<a href="{% url 'ldt.ldt_utils.views.front.all_contents' %}?tag={{t.name}}">
 	  <span style="font-size:{{t.font_size|add:"12"}}px;">{{t.name}}</span></a>{% if not forloop.last %}, {% endif %}{% endfor %}</p>
 	{% endif %}
     </li>
     {% for content in last_contents %}
     <li class="li_media">
         <div class="img_and_overlay">
-            <a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}">
+            <a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}">
                 {% thumbnail content.image "294x165" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'open this media' %}" title="{% trans 'open this media' %}">{% endthumbnail %}
             </a>
             <div class="overlay">
@@ -70,7 +70,7 @@
             </div>
         </div>
         <div class="bulle_annot" title="{% blocktrans count nb=content.nb_annotations %}{{nb}} annotation on this media{% plural %}{{nb}} annotations on this media{% endblocktrans %}">{{ content.nb_annotations }}</div>
-        <p><a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}" title="{% trans 'open this media' %}"><b>{{content.title}}</b></a></p>
+        <p><a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}" title="{% trans 'open this media' %}"><b>{{content.title}}</b></a></p>
         <p>{% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}</p>
         
     </li>
@@ -86,7 +86,7 @@
     {% for content in most_contents %}
     <li class="li_media">
         <div class="img_and_overlay">
-            <a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}">
+            <a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}">
             {% thumbnail content.image "134x75" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'open this media' %}" title="{% trans 'open this media' %}">{% endthumbnail %}</a>
             <div class="overlay">
                 <ul class="polemics">
@@ -96,7 +96,7 @@
             </div>
         </div>
         <div class="bulle_annot" title="{% blocktrans count nb=content.nb_annotations %}{{nb}} annotation on this media{% plural %}{{nb}} annotations on this media{% endblocktrans %}">{{ content.nb_annotations }}</div>
-        <p><a href="{% url ldt.ldt_utils.views.front.annot_content content.iri_id %}" title="{% trans 'open this media' %}"><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
+        <p><a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=content.iri_id %}" title="{% trans 'open this media' %}"><b>{% if content.title|length > 69 %}{{content.title|slice:":69"}}...{% else %}{{content.title}}{% endif %}</b></a></p>
         <p class="font_11">{% trans 'by' %} IRI | {{content.duration|str_duration:"h"}}</p>
     </li>
     {% endfor %}
@@ -104,16 +104,16 @@
 <!-- Active groups -->
 <ul class="floatlist" id="groupes_actifs">
     <li class="li_h2">
-        <h2><a href="{% url ldt.ldt_utils.views.front.group_list %}">{% trans 'Active groups' %}</a></h2>
+        <h2><a href="{% url 'ldt.ldt_utils.views.front.group_list' %}">{% trans 'Active groups' %}</a></h2>
     </li>
     {% for group in active_groups %}
     <li class="li_media">
         <div class="img_groupes_actifs">
-            <a href="{% url ldt.ldt_utils.views.front.group_info group.id %}">{% thumbnail group.get_profile.image "54x40" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'group picture' %}" title="{% trans 'view more infos on this group'%}">{% endthumbnail %}</a>
+            <a href="{% url 'ldt.ldt_utils.views.front.group_info' group_id=group.id %}">{% thumbnail group.get_profile.image "54x40" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" alt="{% trans 'group picture' %}" title="{% trans 'view more infos on this group'%}">{% endthumbnail %}</a>
         </div>
         <div class="txt_groupes_actifs">
             <div class="bulle_people" title="{% blocktrans count nb=group.nb_users %}{{nb}} user in this group{% plural %}{{nb}} users in this group{% endblocktrans %}">{{ group.nb_users }}</div>
-            <p><a href="{% url ldt.ldt_utils.views.front.group_info group.id %}" class="under" title="{% trans 'view more infos on this group'%}"><b>{{group.name}}</b></a></p>
+            <p><a href="{% url 'ldt.ldt_utils.views.front.group_info' group_id=group.id %}" class="under" title="{% trans 'view more infos on this group'%}"><b>{{group.name}}</b></a></p>
             <p>{% if group.get_profile.description|striptags|length > 69 %}{{group.get_profile.description|striptags|slice:":69"}}...{% else %}{{group.get_profile.description|striptags}}{% endif %}</p>
         </div>
     </li>
--- a/src/ldt/ldt/ldt_utils/templates/front/front_player.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_player.html	Fri May 24 21:55:08 2013 +0200
@@ -1,15 +1,15 @@
 {% extends "front/front_base.html" %}
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 
 {% block title %}Lignes de temps : {% trans 'Annotate' %} "{{content.title}}"{% endblock %}
 
 {% block css_import %}
 {{block.super}}
-<link rel="stylesheet" href='{% absstatic "ldt/css/front_player.css" %}' type="text/css"/>
-<link rel="stylesheet" href='{% absstatic "ldt/css/embed_popup.css" %}' type="text/css"/>
-<link rel="stylesheet" href='{% absstatic "ldt/css/jq-css/jquery.qtip.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/front_player.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/embed_popup.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/jq-css/jquery.qtip.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block js_declaration %}
--- a/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html	Fri May 24 21:55:08 2013 +0200
@@ -1,19 +1,19 @@
 {% extends "front/front_base.html" %}
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 {% load front_tags %}
 
 {% block title %}Lignes de temps : {% trans 'search' %} "{{search}}" {% endblock %}
 
 {% block js_import %}
 {{block.super}}
-<script src='{% absstatic "ldt/js/raphael.js" %}' type="text/javascript"/></script>
+<script src='{% static "ldt/js/raphael.js" %}' type="text/javascript"/></script>
 {% endblock %}
 
 {% block css_import %}
 {{block.super}}
-<link rel="stylesheet" href='{% absstatic "ldt/css/front_search.css" %}' type="text/css"/>
+<link rel="stylesheet" href='{% static "ldt/css/front_search.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block js_declaration %}
@@ -41,7 +41,7 @@
     var global_csrf_token = "{{ csrf_token }}";
     
 </script>
-<script src='{% absstatic "ldt/js/Ldt_front_search_results.js" %}' type="text/javascript"></script>
+<script src='{% static "ldt/js/Ldt_front_search_results.js" %}' type="text/javascript"></script>
 {% endblock %}
 
 {% block body %}
@@ -53,7 +53,7 @@
   {% ifequal nb_results 0 %}
     {% if tag_label %}
       {% blocktrans %} No results for <b>{{ search }}</b> with the medias tagged <span class="pink">{{tag_label}}</span>{% endblocktrans %}
-      <br/><a href="{% url ldt.ldt_utils.views.front.search_index %}?search={{search}}&field={{field}}">{% trans "See for all medias" %}</a>
+      <br/><a href="{% url 'ldt.ldt_utils.views.front.search_index' %}?search={{search}}&field={{field}}">{% trans "See for all medias" %}</a>
     {% else %}
       {% blocktrans %} No results for <b>{{ search }}</b>.{% endblocktrans %}
     {% endif %}
@@ -70,7 +70,7 @@
                     <li id="title_resultats">
                       <h2>
                         {% if tag_label %}
-                          <a href="{% url ldt.ldt_utils.views.front.search_index %}?search={{search}}&field={{field}}">{% trans "Search results for " %} <b> {{ search }}</b></a><span class="pink"> &gt; {{tag_label}}</span>
+                          <a href="{% url 'ldt.ldt_utils.views.front.search_index' %}?search={{search}}&field={{field}}">{% trans "Search results for " %} <b> {{ search }}</b></a><span class="pink"> &gt; {{tag_label}}</span>
                         {% else %}
                           {% trans "Search results for " %} <b> {{ search }}</b>
                         {% endif %}
@@ -108,15 +108,15 @@
                     <li class="li_segment" id="li_{{segment.project_id}}_{{segment.iri_id}}_{{segment.ensemble_id}}_{{segment.cutting_id}}_{{segment.element_id}}">
                         <div class="left_segment">
                             <div class="color_zone"></div>
-                            <a href="{% url ldt.ldt_utils.views.front.annot_content segment.iri_id segment.project_id segment.cutting_id %}#id={{segment.element_id}}"><img src='{% absstatic "ldt/img/annot_icon_80x45.png" %}' width="80" height="45" alt="" /></a>
+                            <a href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=segment.iri_id project_id=segment.project_id cutting_id=segment.cutting_id %}#id={{segment.element_id}}"><img src='{% static "ldt/img/annot_icon_80x45.png" %}' width="80" height="45" alt="" /></a>
                             <!--p class="duree_segment">{{ segment.duration|str_duration:"::" }}</p-->
                         </div>
-                        <h4 class="title_segment"><a class="blue under" href="{% url ldt.ldt_utils.views.front.annot_content segment.iri_id segment.project_id segment.cutting_id %}#id={{segment.element_id}}" title="{% trans 'view this annotation in the player' %}">
+                        <h4 class="title_segment"><a class="blue under" href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=segment.iri_id project_id=segment.project_id cutting_id=segment.cutting_id %}#id={{segment.element_id}}" title="{% trans 'view this annotation in the player' %}">
                           {% if segment.title %}{{ segment.title }}{% else %}{% trans "No title" %}{% endif %}</a></h4>
                         <p class="text_segment">{% if segment.context %}{{ segment.context }}{% endif %}<br/>{% trans "Begin" %} : {{ segment.start_ts|str_duration:"::" }} - {% trans "duration" %} : {{ segment.duration|str_duration:"::" }}</p>
                         <div class="hidden_preview">
                             {% thumbnail res.content.image "300x200" format="PNG" crop="center" as im %}<img src="{{ im.url }}" class="img_media" width="{{ im.width }}" height="{{ im.height }}" %}">{% endthumbnail %}
-                            <h4><a class="pink under b" href="{% url ldt.ldt_utils.views.front.annot_content segment.iri_id segment.project_id segment.cutting_id %}#id={{segment.element_id}}" title="{% trans 'view this annotation in the player' %}">
+                            <h4><a class="pink under b" href="{% url 'ldt.ldt_utils.views.front.annot_content' content_iri_id=segment.iri_id project_id=segment.project_id cutting_id=segment.cutting_id %}#id={{segment.element_id}}" title="{% trans 'view this annotation in the player' %}">
                             {% if segment.title %}{{ segment.title }}{% else %}{% trans "No title" %}{% endif %}</a></h4>
                             <p class="bigmargin">{% if segment.context %}{{ segment.context }}{% else %}{{ segment.abstract }}{% endif %}</p>
                             {% if segment.context_tags or segment.tags %}
@@ -135,7 +135,7 @@
         <li id="result_pagination">
             <p>
             {% if results.has_previous %}
-	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
+	            <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.search_index' %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
 	            .
 	        {% endif %}
 	        {% if results.paginator.num_pages > 1 %}
@@ -145,7 +145,7 @@
 	                {% if i|add:'1' == results.number %}
 	                <span class="pink">{{i|add:'1'}}</span>
 	                {% else %}
-	                <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{i|add:'1'}}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}">{{i|add:'1'}}</a>
+	                <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.search_index' %}?page={{i|add:'1'}}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}">{{i|add:'1'}}</a>
 	                {% endif %}
 	                {% if i|add:'1' < results.paginator.num_pages and 1 < results.paginator.num_pages %}
                     {% endif %}
@@ -155,7 +155,7 @@
 	        {% endif %}
 	        {% if results.has_next %}
 	           
-	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'next' %}">{% trans "next" %}</a>
+	            <a class="blue under" href="{% url 'ldt.ldt_utils.views.front.search_index' %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'next' %}">{% trans "next" %}</a>
 	        {% endif %}
             </p>
         </li>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/content_list.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% extends "ldt/user/user_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 
 {% block js_declaration %}
 {{block.super}}
@@ -48,12 +48,12 @@
 
 {% block css_import %}
 {{block.super}}
-    <link rel="stylesheet" type="text/css" href='{% absstatic "ldt/css/ldt.css" %}' />
+    <link rel="stylesheet" type="text/css" href='{% static "ldt/css/ldt.css" %}' />
 {% endblock %}
 
 {% block breadcrumb %}
 <li></li>
-<li><a href="{% url ldt.userpanel.views.space %}">{% trans "Space" %}</a></li>
+<li><a href="{% url 'ldt.userpanel.views.space' %}">{% trans "Space" %}</a></li>
 <li>{% trans "Ldt Project" %}</li>
 {% endblock %}
 
@@ -74,8 +74,8 @@
 	<tbody>
 {% for content in contents %}
     <tr>
-        <td><a href="{% url ldt.ldt_utils.views.lignesdetemps.index content.iri_id %}" class="ldt_link">{{ content.title }}</a></td>
-        <td><a href="{% url ldt.ldt_utils.views.project.create_project content.iri_id %}" class="ldt_link_create">{% trans "create project" %}</a></td>
+        <td><a href="{% url 'ldt.ldt_utils.views.lignesdetemps.index' content.iri_id %}" class="ldt_link">{{ content.title }}</a></td>
+        <td><a href="{% url 'ldt.ldt_utils.views.project.create_project' content.iri_id %}" class="ldt_link_create">{% trans "create project" %}</a></td>
     </tr>
 {% endfor %}
     </tbody>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,11 @@
 {% extends "ldt/ldt_raw_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of copy of project ldt #}
 {% block css_import %}
     {{ block.super }}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />  
-    <link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' />
+    <link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />  
+    <link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' />
 {% endblock %}
 {% block body %}
 	<div id="add_contribution" class="span-12 last">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html	Fri May 24 21:55:08 2013 +0200
@@ -1,41 +1,39 @@
 {% extends "ldt/ldt_utils/workspace_base.html" %}
 {% load i18n %}
-{% load absstatic %}
-{% load absurl %}
+{% load static %}
 
- {# form of creation of content #}
-{% load adminmedia %}
+{# form of creation of content #}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/core.js" ></script>
-    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/jquery.init.js"></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.min.js" %}'></script>	
-    <script type="text/javascript" src="{% absurl ldt.jsi18n packages='ldt' %}" ></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.textchange.min.js" %}'></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery-ui.min.js" %}'></script>
+    <script type="text/javascript" src="{% static 'admin/js/core.js' %}"></script>
+    <script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}"></script>
+    <script type="text/javascript" src="{% static 'ldt/js/jquery.min.js' %}"></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>	
+    <script type="text/javascript" src="{% static 'ldt/js/projectscontents.js' %}"></script>
+    <script type="text/javascript" src="{% static 'ldt/js/jquery.textchange.min.js' %}"></script>
+    <script type="text/javascript" src="{% static 'ldt/js/jquery-ui.min.js' %}"></script>
 	{{ content_form.media.js }}
 {% endblock %}
 
 {% block js_declaration %}
 	<script type="text/javascript">
-	window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}";
+	window.__admin_media_prefix__ = "{% filter escapejs %}{% get_static_prefix %}/admin/{% endfilter %}";
 	
 	$(document).ready(function() {
 		// url_upload, media_prefix, post_added_params, btn_label, success_label, wait_label, cancel_label, remove_url, get_dur_url
 		post_added_params = {"csrfmiddlewaretoken" : "{{csrf_token}}",
                     		"{{cookie_name}}" : "{{session_key}}"};
 		
-	     onCreateContentReady("{% url ldt.ldt_utils.views.content.upload %}",
-	    	     "{% absstatic 'ldt' %}",
+	     onCreateContentReady("{% url 'ldt.ldt_utils.views.content.upload' %}",
+	    	     "{% static 'ldt' %}",
 	    	     post_added_params,
 	    	     "{% trans 'Browse' %}",
 	    	     "{% trans 'File uploaded' %}",
 	    	     "{% trans 'Please wait, the upload is not finished yet' %}",
 	    	     "{% trans 'Cancel upload' %",
-	    	     "{% url ldt.ldt_utils.views.content.remove_temp_file %}",
-	    	     "{% url ldt.ldt_utils.views.content.get_duration %}");
+	    	     "{% url 'ldt.ldt_utils.views.content.remove_temp_file' %}",
+	    	     "{% url 'ldt.ldt_utils.views.content.get_duration' %}");
 	});
 	// the function stopRKey prevents from the validation of the form if the user tape enter button while entering a field 
 	function stopRKey(evt) {
@@ -47,8 +45,8 @@
 	document.onkeypress = stopRKey;
 
 	chunked_uploads_endpoints = {
-		upload_url: '{{WEB_URL}}{% url upload %}',
-		done_url: '{{WEB_URL}}{% url upload_done uuid='00000000-0000-0000-0000-000000000000' %}',
+		upload_url: '{{WEB_URL}}{% url 'upload' %}',
+		done_url: '{{WEB_URL}}{% url 'upload_done' uuid='00000000-0000-0000-0000-000000000000' %}',
     };
 	
 	$(function() {		
@@ -85,7 +83,7 @@
 {% block css_import %}
     {{ content_form.media.css }}
 	{{ block.super }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}'/>
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}'/>
 {% endblock %}
 
 {% block content %}
@@ -161,7 +159,7 @@
 		
 	<div id="submitcontent" class="span-18 last">
 		<div id="submitcontent-loader" class="span-10">
-			<div id="submitcontent-loader-img" class="submitcontent-loader-content span-10 last"><img alt="loader" src='{% absstatic "ldt/img/ajax-loader-220x19.gif" %}'/></div>
+			<div id="submitcontent-loader-img" class="submitcontent-loader-content span-10 last"><img alt="loader" src='{% static "ldt/img/ajax-loader-220x19.gif" %}'/></div>
 			<div id="submitcontent-loader-msg" class="submitcontent-loader-content span-10 last">{% trans "media file is being processed please wait." %}</div>
 			<span>&nbsp;</span>
 		</div>
@@ -174,8 +172,8 @@
 	
 	</form>
 	</div>
-	<script type="text/javascript" src='{% absstatic "chunked_uploads/js/jquery.ui.widget.js" %}'></script>
-	<script type="text/javascript" src='{% absstatic "chunked_uploads/js/jquery.iframe-transport.js" %}'></script>
-	<script type="text/javascript" src='{% absstatic "chunked_uploads/js/jquery.fileupload.js" %}'></script>
-	<script type="text/javascript" src='{% absstatic "chunked_uploads/js/jquery.chunked_uploads.js" %}'></script>
+	<script type="text/javascript" src='{% static "chunked_uploads/js/jquery.ui.widget.js" %}'></script>
+	<script type="text/javascript" src='{% static "chunked_uploads/js/jquery.iframe-transport.js" %}'></script>
+	<script type="text/javascript" src='{% static "chunked_uploads/js/jquery.fileupload.js" %}'></script>
+	<script type="text/javascript" src='{% static "chunked_uploads/js/jquery.chunked_uploads.js" %}'></script>
 {% endblock %}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_group.html	Fri May 24 21:55:08 2013 +0200
@@ -1,25 +1,23 @@
 {% extends "ldt/ldt_utils/workspace_base.html" %}
 {% load i18n %}
-{% load absstatic %}
-{% load absurl %}
+{% load static %}
 
-{% load adminmedia %}
 {% load thumbnail %}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{% absurl ldt.jsi18n packages='ldt' %}" ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}' ></script> 
-	<script type="text/javascript" src='{% absstatic "ldt/js/tiny_mce/tiny_mce.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+	<script type="text/javascript" src="{% static 'ldt/js/projectscontents.js' %}" ></script> 
+	<script type="text/javascript" src="{% static 'ldt/js/tiny_mce/tiny_mce.js' %}"></script>
 	{{ content_form.media.js }}
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' />
 
 {% endblock %}
 
@@ -44,7 +42,7 @@
            $( this ).find("button[type=submit]").removeClass("e-clicked");
         });
 
-		var search_url = "{% absurl ldt.ldt_utils.views.workspace.share_filter filter='__FILTER__' use_groups='false' %}";
+		var search_url = "{% url 'ldt.ldt_utils.views.workspace.share_filter' filter='__FILTER__' use_groups='false' %}";
 	});
 	</script>
 
@@ -55,7 +53,7 @@
 	<div id="add_group" class="span-18 last">
 	<div class="projectscontentstitle span-18 last">{% if group_id %}{% trans "Update a group" %}{% else %}{% trans "Create a group" %}{% endif %}</div>
 	
-	<form action="{% if group_id %}{% absurl ldt.ldt_utils.views.group.update_group group_id %} {% else %}{% absurl ldt.ldt_utils.views.group.create_group %}{% endif %}" method="POST" enctype="multipart/form-data" {% if target_parent %}target="_parent"{% endif %}>
+	<form action="{% if group_id %}{% url 'ldt.ldt_utils.views.group.update_group' group_id=group_id %} {% else %}{% url 'ldt.ldt_utils.views.group.create_group' %}{% endif %}" method="POST" enctype="multipart/form-data" {% if target_parent %}target="_parent"{% endif %}>
 	{% csrf_token %} 
 	<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
 	<input type="hidden" name="id_group" value="" id="id_group"/>
@@ -67,9 +65,7 @@
 		{% endfor %}
 		
 		<label for="description">{% trans "Description" %}</label>
-		<textarea id="description" name="description">
-		{{ img_container.description }}
-		</textarea>
+		<textarea id="description" name="description">{{ img_container.description }}</textarea>
 	</div>
 
 	{% include "ldt/ldt_utils/partial/permissions.html" %}		
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html	Fri May 24 21:55:08 2013 +0200
@@ -1,23 +1,22 @@
 {% extends "ldt/ldt_raw_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of creation of content #}
-{% load adminmedia %}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.nyroModal.min.js" %}'></script>
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script> 
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>  
-	<script type="text/javascript" src='{% absstatic "ldt/js/tiny_mce/tiny_mce.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.nyroModal.min.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script> 
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>  
+	<script type="text/javascript" src='{% static "ldt/js/tiny_mce/tiny_mce.js" %}'></script>
 	{{ content_form.media.js }}
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' />	
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' />	
 {% endblock %}
 
 {% block js_declaration %}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/embed_iframe.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/embed_iframe.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 {% load absurl %}
 {% load analytics %}
 <?xml version="1.0" encoding="UTF-8"?>
@@ -26,7 +26,7 @@
 		
 		<div>
 			<div id="{{ player_id }}_embed" class="iri_player_embed"></div>
-			<script type="text/javascript" src='{% absstatic "ldt/metadataplayer/LdtPlayer-core.js" %}'></script>
+			<script type="text/javascript" src='{% static "ldt/metadataplayer/LdtPlayer-core.js" %}'></script>
 			<script type="text/javascript">
 			
 			if (typeof jQuery == "undefined") {
@@ -35,14 +35,14 @@
 				var metadatas = {metadata: {url: '{{json_url}}'}};
 				var metadata_key = "metadata";
 			
-			IriSP.libFiles.defaultDir = '{% absstatic "ldt/js/" %}';
-			IriSP.libFiles.locations.jwPlayerSWF = '{% absstatic "ldt/swf/player.swf" %}';
-			IriSP.libFiles.locations.recordMicSwf = '{% absstatic "ldt/swf/record_mic.swf" %}';
-			IriSP.libFiles.locations.zeroClipboardSwf = '{% absstatic "ldt/swf/ZeroClipboard10.swf" %}';
-			IriSP.libFiles.locations.cssjQueryUI = '{% absstatic "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
+			IriSP.libFiles.defaultDir = '{% static "ldt/js/" %}';
+			IriSP.libFiles.locations.jwPlayerSWF = '{% static "ldt/swf/player.swf" %}';
+			IriSP.libFiles.locations.recordMicSwf = '{% static "ldt/swf/record_mic.swf" %}';
+			IriSP.libFiles.locations.zeroClipboardSwf = '{% static "ldt/swf/ZeroClipboard10.swf" %}';
+			IriSP.libFiles.locations.cssjQueryUI = '{% static "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
 			IriSP.language = '{{LANGUAGE_CODE}}';
 			
-			IriSP.widgetsDir = '{% absstatic "ldt/metadataplayer" %}';
+			IriSP.widgetsDir = '{% static "ldt/metadataplayer" %}';
 			var _metadata = {
 			    url: metadatas[metadata_key].url + '?callback=?',
 			    format: 'ldt'
@@ -50,7 +50,7 @@
 			var _config = {
 			    width: '{{ player_width }}',
 			    container: '{{ player_id }}_embed',
-			    css: '{% absstatic "ldt/metadataplayer/LdtPlayer-core.css" %}',
+			    css: '{% static "ldt/metadataplayer/LdtPlayer-core.css" %}',
 			    default_options: {
 			        metadata: _metadata
 			    },
@@ -121,9 +121,9 @@
 			        {% if annotations_list %},{
 			            type: "AnnotationsList",
 			            container: "AnnotationsList_ext",
-			            ajax_url: "{% absurl segment_api_empty resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}",
+			            ajax_url: "{% absurl 'segment_api_empty' resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}",
 			            ajax_granularity : 300000,
-			            default_thumbnail : '{% absstatic "ldt/css/imgs/video_sequence.png" %}',
+			            default_thumbnail : '{% static "ldt/css/imgs/video_sequence.png" %}',
 			            show_audio: true,
 			            rtmp_streamer: "rtmp://media.iri.centrepompidou.fr/ddc_micro_record/"
 			        }{% endif %},{
@@ -149,7 +149,7 @@
 			        
 			        {% if createannotation %},{
 			            type: "CreateAnnotation",
-			            api_endpoint_template: "{% absurl api_dispatch_list resource_name='annotations' api_name='1.0' %}",
+			            api_endpoint_template: "{% absurl 'api_dispatch_list' resource_name='annotations' api_name='1.0' %}",
 			            api_method: "PUT",
 			            after_send_timeout: 8000,
 			            {% if tag_titles %}
@@ -161,7 +161,7 @@
 			            close_after_send: false,
 			            slice_annotation_type: ["chap","découpage"],
 			            creator_name: '{{request.user.username}}',
-			            creator_avatar: '{% thumbnail request.user.get_profile.image "48x48" format="PNG" crop="center" as im %}{{WEB_URL}}{{ im.url }}{% endthumbnail %}' || "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
+			            creator_avatar: '{% thumbnail request.user.image "48x48" format="PNG" crop="center" as im %}{{WEB_URL}}{{ im.url }}{% endthumbnail %}' || "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
 			        }{% endif %}
 			        {% if slideshare %},{
 			            type: "Slideshare",
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/embed_popup.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/embed_popup.html	Fri May 24 21:55:08 2013 +0200
@@ -3,14 +3,14 @@
 {% load front_tags %}
 {% load absurl %}
 {% load static %}
-{% load absstatic %}
+{% load static %}
 {% load analytics %}
 	{% block js_import %}
 		{{ block.super }}
-		<script type="text/javascript" src='{% absstatic "ldt/js/jquery.min.js" %}'></script>
-		<script type="text/javascript" src='{% absstatic "ldtjs/jquery.qtip.min.js" %}'></script>
-		<script type="text/javascript" src='{% absstatic "ldt/js/embed_popup.js" %}'></script>
-		<script type="text/javascript" src='{% absstatic "ldt/js/jscolor/jscolor.js" %}'></script>
+		<script type="text/javascript" src='{% static "ldt/js/jquery.min.js" %}'></script>
+		<script type="text/javascript" src='{% static "ldtjs/jquery.qtip.min.js" %}'></script>
+		<script type="text/javascript" src='{% static "ldt/js/embed_popup.js" %}'></script>
+		<script type="text/javascript" src='{% static "ldt/js/jscolor/jscolor.js" %}'></script>
 		{{ content_form.media.js }}
 	{% endblock %}
 		
@@ -28,16 +28,16 @@
         	var LANGUAGE_CODE='{{LANGUAGE_CODE}}';
         	var json_url='{{json_url}}';
         	var player_id='{{player_id}}';
-        	var defaultDir='{% absstatic "ldt/js/" %}';
-        	var jwPlayerSWF='{% absstatic "ldt/swf/player.swf" %}';
-        	var recordMicSwf='{% absstatic "ldt/swf/record_mic.swf" %}';
-        	var zeroClipboardSwf='{% absstatic "ldt/swf/ZeroClipboard10.swf" %}';
-        	var cssjQueryUI='{% absstatic "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
-        	var widgetsDir='{% absstatic "ldt/metadataplayer" %}';
-        	var configCss='{% absstatic "ldt/metadataplayer/LdtPlayer-core.css" %}';
-        	var default_thumbnail='{% absstatic "ldt/css/imgs/video_sequence.png" %}';
-        	var segment_api="{% absurl segment_api_empty resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}";
-        	var LdtPlayer_core='{% absstatic "ldt/metadataplayer/LdtPlayer-core.js" %}';
+        	var defaultDir='{% static "ldt/js/" %}';
+        	var jwPlayerSWF='{% static "ldt/swf/player.swf" %}';
+        	var recordMicSwf='{% static "ldt/swf/record_mic.swf" %}';
+        	var zeroClipboardSwf='{% static "ldt/swf/ZeroClipboard10.swf" %}';
+        	var cssjQueryUI='{% static "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
+        	var widgetsDir='{% static "ldt/metadataplayer" %}';
+        	var configCss='{% static "ldt/metadataplayer/LdtPlayer-core.css" %}';
+        	var default_thumbnail='{% static "ldt/css/imgs/video_sequence.png" %}';
+        	var segment_api="{% absurl 'segment_api_empty' resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}";
+        	var LdtPlayer_core='{% static "ldt/metadataplayer/LdtPlayer-core.js" %}';
         	var creator_name='{{request.user.username}}';
         	
         	$j(document).ready(function(){
@@ -49,10 +49,10 @@
 	{% block css_import %}
 		{{ block.super }}
 		{{ content_form.media.css }}
-		<link rel="stylesheet" href='{% absstatic "ldt/css/style.css" %}' />
-		<link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}'/>
-		<link rel="stylesheet" href='{% absstatic "ldt/css/embed_popup.css" %}'/>
-		<link rel="stylesheet" href='{% absstatic "ldt/css/jq-css/jquery.qtip.css" %}' type="text/css"/>
+		<link rel="stylesheet" href='{% static "ldt/css/style.css" %}' />
+		<link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}'/>
+		<link rel="stylesheet" href='{% static "ldt/css/embed_popup.css" %}'/>
+		<link rel="stylesheet" href='{% static "ldt/css/jq-css/jquery.qtip.css" %}' type="text/css"/>
 		
 	{% endblock %}
 		
@@ -234,7 +234,7 @@
 		</div>
         <div id="player_div" style="display:none">
 	  		<button type="button" class="refresh_button" id="refresh_player_button" title="Rafraichir le player" >
-			<img src='{% absstatic "ldt/img/arrow_refresh.png" %}' id="refresh_player" ></img>
+			<img src='{% static "ldt/img/arrow_refresh.png" %}' id="refresh_player" ></img>
 			</button>
 			<div class="ldt_player" id="wrapper_{{player_id}}"></div>
 		</div>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm.html	Fri May 24 21:55:08 2013 +0200
@@ -1,17 +1,17 @@
 {% extends "ldt/ldt_utils/workspace_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of creation of content #}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>	
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>	
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
 {% endblock %}
 
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm_popup.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/error_confirm_popup.html	Fri May 24 21:55:08 2013 +0200
@@ -1,18 +1,18 @@
 {% extends "ldt/ldt_raw_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of creation of content #}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>	
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}' ></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>	
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}' ></script>
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
 {% endblock %}
 
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html	Fri May 24 21:55:08 2013 +0200
@@ -1,26 +1,26 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
 {{block.super}}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}' ></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.history.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+	<script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}' ></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.history.js" %}'></script>
 {% endblock %}
 
 {% block js_declaration %}
 {{block.super}}
 <script type="text/javascript">
 
-var groups_filter_url = "{% url ldt.ldt_utils.views.group.groups_filter filter='__FILTER__' %}";
-var content_filter_url = "{% url ldt.ldt_utils.views.content.contents_filter filter_c='__FILTER__' %}";
-var project_filter_url = "{% url ldt.ldt_utils.views.project.projects_filter filter='__FILTER__' is_owner='false' status='0' id_group='__ID_GROUP__' %}";
-var publish_project_url = "{% url ldt.ldt_utils.views.project.publish '__PROJECT_ID__' %}";
-var unpublish_project_url = "{% url ldt.ldt_utils.views.project.unpublish '__PROJECT_ID__' %}";
-var get_group_projects_url = "{% url ldt.ldt_utils.views.group.get_group_projects_view %}";
+var groups_filter_url = "{% url 'ldt.ldt_utils.views.group.groups_filter' filter='__FILTER__' %}";
+var content_filter_url = "{% url 'ldt.ldt_utils.views.content.contents_filter' filter_c='__FILTER__' %}";
+var project_filter_url = "{% url 'ldt.ldt_utils.views.project.projects_filter' filter='__FILTER__' is_owner='false' status='0' id_group='__ID_GROUP__' %}";
+var publish_project_url = "{% url 'ldt.ldt_utils.views.project.publish' id='__PROJECT_ID__' %}";
+var unpublish_project_url = "{% url 'ldt.ldt_utils.views.project.unpublish' id='__PROJECT_ID__' %}";
+var get_group_projects_url = "{% url 'ldt.ldt_utils.views.group.get_group_projects_view' %}";
 
 function init_events(base_node) {
-	init_events_projects(base_node, "{% url ldt.ldt_utils.views.workspace.popup_embed %}", project_filter_url, publish_project_url, unpublish_project_url);
+	init_events_projects(base_node, "{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}", project_filter_url, publish_project_url, unpublish_project_url);
 }
 	
 var global_csrf_token = "{{ csrf_token }}";
@@ -111,7 +111,7 @@
 
 {% block css_import %}
 {{block.super}}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block content %}
@@ -120,13 +120,13 @@
 	    <div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle">{% trans "My groups" %}
 			{% if can_add_group %}
-				<a class="create_group" href="{% url ldt.ldt_utils.views.group.create_group %}"><img class='icon_title' src='{% absstatic "ldt/img/group_add.png" %}' alt="{% trans 'Create group' %}" title="{% trans 'Create group' %}" /></a>
+				<a class="create_group" href="{% url 'ldt.ldt_utils.views.group.create_group' %}"><img class='icon_title' src='{% static "ldt/img/group_add.png" %}' alt="{% trans 'Create group' %}" title="{% trans 'Create group' %}" /></a>
 			{% endif %}
 			</div>
 			<div class="span-4 last searchfielddiv" >
 				
 				<div class="span-4 last searchfielddiv" >
-			    	<div class="searchfield rounded"><input id="searchgroupsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% absstatic "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}'/></div>
+			    	<div class="searchfield rounded"><input id="searchgroupsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% static "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}'/></div>
 				</div>
 			</div>
 		</div>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/init_ldt.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/init_ldt.html	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-{% load absstatic %}
+{% load static %}
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
@@ -7,10 +7,10 @@
 <meta http-equiv="Cache" content="no store" />
 <meta http-equiv="Expires" content="-1" />
 <title>Ligne de Temps - IRI</title>
-<script type="text/javascript" src='{% absstatic "ldt/js/jquery.min.js" %}'></script>
-<script type="text/javascript" src='{% absstatic "ldt/js/jquery.nyroModal.min.js" %}'></script>
-<script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
+<script type="text/javascript" src='{% static "ldt/js/jquery.min.js" %}'></script>
+<script type="text/javascript" src='{% static "ldt/js/jquery.nyroModal.min.js" %}'></script>
+<script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+<script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
 <script type="text/javascript">
 
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/ldt_list.html	Fri May 24 21:55:08 2013 +0200
@@ -1,10 +1,10 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
 {{block.super}}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}' ></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+	<script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}' ></script>
 {% endblock %}
 
 
@@ -12,13 +12,13 @@
 {{block.super}}
 <script type="text/javascript">
 
-searchprojectfilterurl = "{% url ldt.ldt_utils.views.project.projects_filter filter='__FILTER__' is_owner='true' status='0' %}";
-publishprojecturl = "{% url ldt.ldt_utils.views.project.publish '__PROJECT_ID__' 'false' %}";
-unpublishprojecturl = "{% url ldt.ldt_utils.views.project.unpublish '__PROJECT_ID__' 'false' %}";
+searchprojectfilterurl = "{% url 'ldt.ldt_utils.views.project.projects_filter' filter='__FILTER__' is_owner='true' status='0' %}";
+publishprojecturl = "{% url 'ldt.ldt_utils.views.project.publish' '__PROJECT_ID__' 'false' %}";
+unpublishprojecturl = "{% url 'ldt.ldt_utils.views.project.unpublish' '__PROJECT_ID__' 'false' %}";
 
 function init_events(base_node) {
 
-	init_events_base(base_node, "{% url ldt.ldt_utils.views.workspace.popup_embed %}");
+	init_events_base(base_node, "{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}");
 
 	$('.publishedproject', base_node).click(function(e) {
 		e.preventDefault();
@@ -68,7 +68,7 @@
 
 {% block css_import %}
 {{block.super}}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block content %}
@@ -77,7 +77,7 @@
 		<div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle" >{% trans "project list" %}</div>
 			<div class="span-4 last searchfielddiv" >
-			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% absstatic "ldt/img/ajax-loader-16x16.gif" %}'/><img id="projectsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}'/></div>
+			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" value="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% static "ldt/img/ajax-loader-16x16.gif" %}'/><img id="projectsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}'/></div>
 			</div>
 		</div>
 		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/loading.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/loading.html	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-{% load absstatic %}
+{% load static %}
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <?xml version="1.0" encoding="UTF-8"?>
@@ -21,7 +21,7 @@
 <body>
 <div class="center">
 <div><img alt="loading"
-	src='{% absstatic "ldt/img/loadingAnimation.gif" %}' /></div>
+	src='{% static "ldt/img/loadingAnimation.gif" %}' /></div>
 </div>
 </body>
 </html>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/contentslist.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% load i18n %}
 {% load thumbnail %}
 {% load front_tags %}
-{% load absstatic %}
+{% load static %}
 
 <ul class="prev_next_cont_proj" >
     <li id="content_tags_li"><span id="content_tags" class="clickable">{% if tag_cloud|length > 0 %}{% trans 'All categories' %}{% endif %}</span>{% if current_content_tag %}{% if current_content_tag != "" %} &gt; {{current_content_tag}} <span id="no_content_tag" class="clickable">[x]</span>{% endif %}{% endif %}</li>
@@ -26,10 +26,10 @@
 	    <tbody class="projectscontentsbody">
 	{% for content in contents %}
 		<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
-		  <td class="cellimg"><div class="cellimgdiv"><img src='{% absstatic "ldt/img/page_add.png" %}' title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url ldt.ldt_utils.views.project.create_project content.iri_id %}" class="ldt_link_create_project"/></div></td>
-		  <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src='{% absstatic "ldt/img/control_play.png" %}' href="{% url ldt.ldt_utils.views.lignesdetemps.index content.iri_id %}" class="ldt_link_open_ldt"/></div></td>
+		  <td class="cellimg"><div class="cellimgdiv"><img src='{% static "ldt/img/page_add.png" %}' title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url 'ldt.ldt_utils.views.project.create_project' iri_id=content.iri_id %}" class="ldt_link_create_project"/></div></td>
+		  <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src='{% static "ldt/img/control_play.png" %}' href="{% url 'ldt.ldt_utils.views.lignesdetemps.index'  url=content.iri_id %}" class="ldt_link_open_ldt"/></div></td>
 		  <td>{% thumbnail content.image "50x50" format="PNG" crop="top" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">{% endthumbnail %}</td>
-		  <td class="contenttitle"><a {% if content.change %} class="contenttitlelink infostooltip" href="{% url ldt.ldt_utils.views.content.write_content iri_id=content.iri_id %}" data-title="{{ content.title}}"  data-desc="{{ content.description }}" {% else %} class="contenttitlelink qtiplink" title="{% trans "You can't edit this content" %}" {% endif %}>{{ content.title|default:"_" }}</a></td>
+		  <td class="contenttitle"><a {% if content.change %} class="contenttitlelink infostooltip" href="{% url 'ldt.ldt_utils.views.content.write_content' iri_id=content.iri_id %}" data-title="{{ content.title}}"  data-desc="{{ content.description }}" {% else %} class="contenttitlelink qtiplink" title="{% trans "You can't edit this content" %}" {% endif %}>{{ content.title|default:"_" }}</a></td>
 		</tr>
 	{% endfor %}
 		</tbody>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html	Fri May 24 21:55:08 2013 +0200
@@ -1,12 +1,12 @@
 {% spaceless %}
 {% load i18n %}
 {% load absurl %}
-{% load absstatic %}
+{% load static %}
 {% load thumbnail %}
 <div>
 <div id="{{ player_id }}_embed" class="iri_player_embed">
 </div>
-<script type="text/javascript" src='{% absstatic "ldt/metadataplayer/LdtPlayer-core.js" %}'></script>
+<script type="text/javascript" src='{% static "ldt/metadataplayer/LdtPlayer-core.js" %}'></script>
 <script type="text/javascript">
 
 if (typeof jQuery == "undefined") {
@@ -15,14 +15,14 @@
 	var metadatas = {metadata: {url: '{{json_url}}'}};
 	var metadata_key = "metadata";
 
-IriSP.libFiles.defaultDir = '{% absstatic "ldt/js/" %}';
-IriSP.libFiles.locations.jwPlayerSWF = '{% absstatic "ldt/swf/player.swf" %}';
-IriSP.libFiles.locations.recordMicSwf = '{% absstatic "ldt/swf/record_mic.swf" %}';
-IriSP.libFiles.locations.zeroClipboardSwf = '{% absstatic "ldt/swf/ZeroClipboard10.swf" %}';
-IriSP.libFiles.locations.cssjQueryUI = '{% absstatic "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
+IriSP.libFiles.defaultDir = '{% static "ldt/js/" %}';
+IriSP.libFiles.locations.jwPlayerSWF = '{% static "ldt/swf/player.swf" %}';
+IriSP.libFiles.locations.recordMicSwf = '{% static "ldt/swf/record_mic.swf" %}';
+IriSP.libFiles.locations.zeroClipboardSwf = '{% static "ldt/swf/ZeroClipboard10.swf" %}';
+IriSP.libFiles.locations.cssjQueryUI = '{% static "ldt/css/jq-css/themes/base/jquery-ui.css" %}';
 IriSP.language = '{{LANGUAGE_CODE}}';
 
-IriSP.widgetsDir = '{% absstatic "ldt/metadataplayer" %}';
+IriSP.widgetsDir = '{% static "ldt/metadataplayer" %}';
 var _metadata = {
     url: metadatas[metadata_key].url,
     format: 'ldt'
@@ -30,7 +30,7 @@
 var _config = {
     width: '{{ player_width }}',
     container: '{{ player_id }}_embed',
-    css: '{% absstatic "ldt/metadataplayer/LdtPlayer-core.css" %}',
+    css: '{% static "ldt/metadataplayer/LdtPlayer-core.css" %}',
     default_options: {
         metadata: _metadata
     },
@@ -59,9 +59,9 @@
         },{
             type: "AnnotationsList",
             container: "AnnotationsList_ext",
-            ajax_url: "{% absurl segment_api_empty resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}",
+            ajax_url: "{% absurl 'segment_api_empty' resource_name='segments' api_name='1.0' %}{% templatetag openvariable %}media{% templatetag closevariable %}/{% templatetag openvariable %}begin{% templatetag closevariable %}/{% templatetag openvariable %}end{% templatetag closevariable %}",
             ajax_granularity : 300000,
-            default_thumbnail : '{% absstatic "ldt/css/imgs/video_sequence.png" %}',
+            default_thumbnail : '{% static "ldt/css/imgs/video_sequence.png" %}',
             show_audio: true,
             rtmp_streamer: "rtmp://media.iri.centrepompidou.fr/ddc_micro_record/"
         },{
@@ -73,13 +73,13 @@
             hide_timeout: 5000
         },{
             type: "CreateAnnotation",
-            api_endpoint_template: "{% absurl api_dispatch_list resource_name='annotations' api_name='1.0' %}",
+            api_endpoint_template: "{% absurl 'api_dispatch_list' resource_name='annotations' api_name='1.0' %}",
             after_send_timeout: 8000,
             show_mic_record: {% if show_mic_record %}true{% else %}false{% endif %},
             close_after_send: false,
             slice_annotation_type: ["chap","découpage"],
             creator_name: '{{request.user.username}}',
-            creator_avatar: '{% thumbnail request.user.get_profile.image "48x48" format="PNG" crop="center" as im %}{{WEB_URL}}{{ im.url }}{% endthumbnail %}' || "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
+            creator_avatar: '{% thumbnail request.user.image "48x48" format="PNG" crop="center" as im %}{{WEB_URL}}{{ im.url }}{% endthumbnail %}' || "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
         },{
             type: "Slideshare",
             container: "Slideshare_ext",
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_meta.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_seo_meta.html	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
 {% load absurl %}
 {% spaceless %}
-<link rel="meta" href="{% absurl ldt.ldt_utils.views.rdf.project_annotations_rdf ldt_id=ldt_id %}"/>
+<link rel="meta" href="{% absurl 'ldt.ldt_utils.views.rdf.project_annotations_rdf' ldt_id=ldt_id %}"/>
 {% endspaceless %}
\ No newline at end of file
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/groupslist.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/groupslist.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 {% load static %}
 
 <script type="text/javascript">
@@ -8,7 +8,7 @@
 	$(document).ready(function () {
 		var icon_size = 16;
 		$(".editable").each(function () {
-			var src='{% absstatic "ldt/img/pencil.png" %}';
+			var src='{% static "ldt/img/pencil.png" %}';
 			var img = $('<img src='+src+' id="pencil_img" >');
 			var top = $(this).offset().top + $(this).height() - icon_size;
 			var left = $(this).offset().left + $(this).width() - icon_size;
@@ -45,7 +45,7 @@
 		
 		{% if group.change %}
 			<td class="groupimg" >
-				<a class="grouplink create_group" title="{% trans 'Change this group'%}" href="{% url ldt.ldt_utils.views.group.update_group group.id %}">
+				<a class="grouplink create_group" title="{% trans 'Change this group'%}" href="{% url 'ldt.ldt_utils.views.group.update_group' group_id=group.id %}">
 			    {% thumbnail group.profile.image "50x50" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="editable"/>{% empty %}&nbsp;{% endthumbnail %}
 	    		</a>
 	    	</td>
@@ -57,7 +57,7 @@
 			<td>{{ group.name }}</td>
 		{% endif %}
 		
-		<td class="align_right"><img src='{% absstatic "ldt/img/control_play.png" %}' class="next_icon"/></td>
+		<td class="align_right"><img src='{% static "ldt/img/control_play.png" %}' class="next_icon"/></td>
 		
 	</tr>
 	{% endfor %}
@@ -65,11 +65,11 @@
 	{% if not user.is_superuser and not search_active %}
 	<tr class="clickable imageline {% cycle color_cycle %} update_group_projects" id="-1">  
 			<td class="groupimg">
-	        {% thumbnail user.get_profile.image "50x50" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
+	        {% thumbnail user.image "50x50" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
 	    	</td>
 			<td>{% trans "Projects shared with me only" %}</td>
 			
-			<td class="align_right"><img src='{% absstatic "ldt/img/control_play.png" %}' class="next_icon"/></td>	
+			<td class="align_right"><img src='{% static "ldt/img/control_play.png" %}' class="next_icon"/></td>	
 	</tr>
 	{% endif %}
 	
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/ldt_div.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/ldt_div.html	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,9 @@
 {% load absurl %}
-{% load absstatic %}
+{% load static %}
 {% comment %}
 Yes we include swfobject.js in the middle of the page...
 {% endcomment %}
-<script type="text/javascript" src='{% absstatic "ldt/js/swfobject.js" %}'></script>
+<script type="text/javascript" src='{% static "ldt/js/swfobject.js" %}'></script>
 <div id="ldtInit" name="ldtInit" style="background-color: #00FF00; width: 1201px; height: 831px; left: 100px; top: 100px; z-index: 99999999; margin: 0; padding: 0;">&nbsp;</div>
 <script language="JavaScript" type="text/javascript">
 
@@ -32,14 +32,14 @@
 		{% else %}
 		readOnly:'true',
 		{% endifequal %}
-		segmentPassMask:"{% absurl ldt.ldt_utils.views.lignesdetemps.index_segment '{4}' '{0}' '{1}' '{2}' '{3}' %}",
-		simplePlayerPassMask:"{% absurl ldt.ldt_utils.views.front.annot_content '{0}' '{4}' '{2}' %}#id={3}"
+		segmentPassMask:"{% absurl 'ldt.ldt_utils.views.lignesdetemps.index_segment' project_id='{4}' content_id='{0}' cutting_id='{1}' ensemble_id='{2}' segment_id='{3}' %}",
+		simplePlayerPassMask:"{% absurl 'ldt.ldt_utils.views.front.annot_content' content_iri_id='{0}' project_id='{4}' cutting_id='{2}' %}#id={3}"
 		
 	};
 
 	var attributes = {  id: "ldtInitSwf",  name: "ldtInitSwf"};
 
-	swfobject.embedSWF('{% absstatic "ldt/swf/ldt/LignesDeTempsFlex.swf" %}', "ldtInit", "1000", "630", "10.2.0", '{% absstatic "ldt/swf/expressInstall.swf" %}', flashvars, params, attributes);
+	swfobject.embedSWF('{% static "ldt/swf/ldt/LignesDeTempsFlex.swf" %}', "ldtInit", "1000", "630", "10.2.0", '{% static "ldt/swf/expressInstall.swf" %}', flashvars, params, attributes);
 
 </script>
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/permissions.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 
-<script type="text/javascript" src='{% absstatic "ldt/js/jquery-ui.min.js" %}'></script>
+<script type="text/javascript" src='{% static "ldt/js/jquery-ui.min.js" %}'></script>
 <script type="text/javascript">
 		
 	function init_events() {
@@ -18,13 +18,13 @@
 	}	
 	
 	$(document).ready(function() {
-		var can_edit = '{% absstatic "ldt/img/pencil.png" %}';
-		var can_view = '{% absstatic "ldt/img/eye.png" %}';
+		var can_edit = '{% static "ldt/img/pencil.png" %}';
+		var can_view = '{% static "ldt/img/eye.png" %}';
 
 		{% if group_edition %}
-			var search_url = "{% url ldt.ldt_utils.views.workspace.share_filter filter='__FILTER__' use_groups='false' %}";
+			var search_url = "{% url 'ldt.ldt_utils.views.workspace.share_filter' filter='__FILTER__' use_groups='false' %}";
 		{% else %}
-			var search_url = "{% url ldt.ldt_utils.views.workspace.share_filter filter='__FILTER__' use_groups='true' %}";
+			var search_url = "{% url 'ldt.ldt_utils.views.workspace.share_filter' filter='__FILTER__' use_groups='true' %}";
 		{% endif %}
 		
 		input_list_init = [
@@ -76,7 +76,7 @@
 			
 			selection.each(function () {
 				var id_item = $("input",$(this)).val();
-				var eye_img = '{% absstatic "ldt/img/eye.png" %}';
+				var eye_img = '{% static "ldt/img/eye.png" %}';
 				$("#read").append('<input type="hidden" name="read_list" value="' + id_item + '"/>');
 				$("td:last",$(this)).append('<img class="can_view" src="'+eye_img+'" title="{% trans "share.eye" %}" alt="{% trans "share.eye" %}"/>');
 			});
@@ -109,7 +109,7 @@
 
 {% if not group_edition %}
 <div id="shareproject" class="clear dropdownlist">
-<img class="shareicon" src='{% absstatic "ldt/img/user_add.png" %}' />{% trans "share" %}
+<img class="shareicon" src='{% static "ldt/img/user_add.png" %}' />{% trans "share" %}
 </div>
 {% endif %}
 
@@ -131,8 +131,8 @@
 				{% trans "User and group list" %}<br />
 				<div class="searchfield span-4">
 					<input type="text" name="search" id="searchuserinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}"/>
-					<img id="projectsajaxloader" class="searchajaxloader" src='{% absstatic "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/>
-					<img id="projecsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}'/>
+					<img id="projectsajaxloader" class="searchajaxloader" src='{% static "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/>
+					<img id="projecsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}'/>
 				</div>
 			</div><br /><br />
 			
@@ -143,13 +143,13 @@
 			</div>
 			
 			<div id="elemslistfooter">
-				<a href="#" id="selectallitems" title="{% trans "select all displayed elements" %}"><img class="shareicon" src='{% absstatic "ldt/img/user_go.png" %}' title="{% trans "select all displayed elements" %}"/>{% trans "select all displayed elements" %}</a>
+				<a href="#" id="selectallitems" title="{% trans "select all displayed elements" %}"><img class="shareicon" src='{% static "ldt/img/user_go.png" %}' title="{% trans "select all displayed elements" %}"/>{% trans "select all displayed elements" %}</a>
 			</div>
 		</div>
 		
 		 <div id="selectors">
-			<a href="#" id="selectelems"><img src='{% absstatic "ldt/img/to-right.gif" %}' title="{% trans "select users" %}"></a><br />
-			<a href="#" id="removeelems"><img src='{% absstatic "ldt/img/to-left.gif" %}' title="{% trans "remove users" %}"></a>
+			<a href="#" id="selectelems"><img src='{% static "ldt/img/to-right.gif" %}' title="{% trans "select users" %}"></a><br />
+			<a href="#" id="removeelems"><img src='{% static "ldt/img/to-left.gif" %}' title="{% trans "remove users" %}"></a>
 		</div>
 		{% if media_form %}
 		<br />	<br />
@@ -166,18 +166,18 @@
 			<tr class="shareline">
 				<td style="width: 5%;">
 				{% if elem.type == "user" %}
-					<img src='{% absstatic "ldt/img/user.png" %}' alt="{% trans "user" %}"/>
+					<img src='{% static "ldt/img/user.png" %}' alt="{% trans "user" %}"/>
 				{% else %}
-					<img src='{% absstatic "ldt/img/group.png" %}' alt="{% trans "group" %}"/>		
+					<img src='{% static "ldt/img/group.png" %}' alt="{% trans "group" %}"/>		
 				{% endif %}
 				</td>
 				
 				<td style="width: 95%;">{{ elem.name }}</td>
 				<td>
 				{% if elem.change %}
-				<img class="can_edit" src='{% absstatic "ldt/img/pencil.png" %}' alt="{% trans "share.pencil" %}" />
+				<img class="can_edit" src='{% static "ldt/img/pencil.png" %}' alt="{% trans "share.pencil" %}" />
 				{% else %}
-				<img class="can_view" src='{% absstatic "ldt/img/eye.png" %}' alt="{% trans "share.eye" %}" />
+				<img class="can_view" src='{% static "ldt/img/eye.png" %}' alt="{% trans "share.eye" %}" />
 				{% endif %}
 				</td>
 				
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 <script type="text/javascript">
 
 	$(document).ready(function () {
@@ -13,7 +13,7 @@
 </script>
 
 <div class="clear dropdownlist">
-<img class="shareicon" title="{% trans "choose a profile image" %}" src='{% absstatic "ldt/img/zoom_in.png" %}'/>
+<img class="shareicon" title="{% trans "choose a profile image" %}" src='{% static "ldt/img/zoom_in.png" %}'/>
 {% trans "choose a profile image" %}
 </div>
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% load i18n %}
 {% load thumbnail %}
-{% load absstatic %}
+{% load static %}
 {% load front_tags %}
 
 {% if nb_pj_pages %}
@@ -18,48 +18,48 @@
 {% for project in projects %}
 
     <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
-        {% url ldt.ldt_utils.views.json.project_json_id project.ldt_id as json_url_id %}
+        {% url 'ldt.ldt_utils.views.json.project_json_id' id=project.ldt_id as json_url_id %}
         {% if is_gecko %}
-            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url index_project_full project.ldt_id %}">
+            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url 'index_project_full' id=project.ldt_id %}">
             {% if project.change or project.owner == user %}
               {% if project.state != 2 %}
-                <img src='{% absstatic "ldt/img/page_edit.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_edit.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
               {% else %}
-                <img src='{% absstatic "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
               {% endif %}
             {% else %}
-                <img src='{% absstatic "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
             {% endif %}
             </a></div></td>
         {% else %}
-            <td class="cellimg"><div class="cellimgdiv"><a href="{% url index_project project.ldt_id %}" class="ldt_link_open_ldt">
+            <td class="cellimg"><div class="cellimgdiv"><a href="{% url 'index_project' id=project.ldt_id %}" class="ldt_link_open_ldt">
             {% if project.change or project.owner == user %}
               {% if project.state != 2 %}
-                <img src='{% absstatic "ldt/img/page_edit.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_edit.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
               {% else %}
-                <img src='{% absstatic "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
               {% endif %}
             {% else %}
-                <img src='{% absstatic "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
+                <img src='{% static "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/>
             {% endif %}
             </a></div></td>
         {% endif %}
         
-        <td class="cellimg"><div class="cellimgdiv"><img src='{% absstatic "ldt/img/page_copy.png" %}' href="{% url ldt.ldt_utils.views.project.copy_project project.ldt_id group_id %}" class="ldt_link_copy_project" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src='{% static "ldt/img/page_copy.png" %}' href="{% url 'ldt.ldt_utils.views.project.copy_project' ldt_id=project.ldt_id group_id=group_id %}" class="ldt_link_copy_project" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
         <td class="cellimg">
          <div class="cellimgdiv">
           {% if project.state == 2 %}
-           <a href='{% url ldt.ldt_utils.views.workspace.popup_embed %}?json_url={{WEB_URL}}{{json_url_id}}&player_id=player_project_{{project.ldt_id}}&ldt_id={{project.ldt_id}}'>
-            <img src='{% absstatic "ldt/img/plugin.png" %}' id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/>
+           <a href='{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}?json_url={{WEB_URL}}{{json_url_id}}&player_id=player_project_{{project.ldt_id}}&ldt_id={{project.ldt_id}}'>
+            <img src='{% static "ldt/img/plugin.png" %}' id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/>
            </a>
           {% endif %}
          </div>
         </td>
         <td class="cellimg">
         {% ifequal project.state 2 %}
-        <img src='{% absstatic "ldt/img/icon-yes.gif" %}' {% if project.change or project.owner == user %} alt="{% trans 'Project published, click to unpublish' %}" title="{% trans 'Project published, click to unpublish' %}" class="publishedproject qtiplink" {% else %} class="qtiplink" title="{% trans "You are not allowed to change this project" %}"{% endif %} id="project_{{project.ldt_id}}" /></div>
+        <img src='{% static "ldt/img/icon-yes.gif" %}' {% if project.change or project.owner == user %} alt="{% trans 'Project published, click to unpublish' %}" title="{% trans 'Project published, click to unpublish' %}" class="publishedproject qtiplink" {% else %} class="qtiplink" title="{% trans "You are not allowed to change this project" %}"{% endif %} id="project_{{project.ldt_id}}" /></div>
         {% else %}
-        <img src='{% absstatic "ldt/img/icon-no.gif" %}' {% if project.change or project.owner == user %} alt="{% trans 'Project not published, click to publish' %}" title="{% trans 'Project not published, click to publish' %}" class="unpublishedproject qtiplink" {% else %} class="qtiplink" title="{% trans "You are not allowed to change this project" %}"{% endif %}id="project_{{project.ldt_id}}" />
+        <img src='{% static "ldt/img/icon-no.gif" %}' {% if project.change or project.owner == user %} alt="{% trans 'Project not published, click to publish' %}" title="{% trans 'Project not published, click to publish' %}" class="unpublishedproject qtiplink" {% else %} class="qtiplink" title="{% trans "You are not allowed to change this project" %}"{% endif %}id="project_{{project.ldt_id}}" />
         {% endifequal %}
         </td>
         <td>{% thumbnail project.image "50x50" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}</td>
@@ -68,7 +68,7 @@
         <span class="projecttitlelink infostooltip" data-title="{{ project.title }}" data-desc="{{ project.description|linebreaksbr }}" >{% if show_username %}{{ project.owner.username }} : {% endif %}{{ project.title }}</span>
         {% else %}
         	{% if project.change or project.owner == user %}
-        	<a class="projecttitlelink" href="{% url ldt.ldt_utils.views.project.update_project ldt_id=project.ldt_id %}"><span class="infostooltip" data-title="{{ project.title }}" data-desc="{{ project.description|linebreaksbr }}" >{% if show_username %}{{ project.owner.username }} : {% endif %}{{ project.title }}</span></a>
+        	<a class="projecttitlelink" href="{% url 'ldt.ldt_utils.views.project.update_project' ldt_id=project.ldt_id %}"><span class="infostooltip" data-title="{{ project.title }}" data-desc="{{ project.description|linebreaksbr }}" >{% if show_username %}{{ project.owner.username }} : {% endif %}{{ project.title }}</span></a>
         	{% else %}
         	<a class="projecttitlelink"><span class="qtiplink" title="{% trans "You are not allowed to change this project" %}">{% if show_username %}{{ project.owner.username }} : {% endif %}{{ project.title }}</span></a>
         	{% endif %}
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/publishedprojectslist.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/publishedprojectslist.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% load i18n %}
 {% load thumbnail %}
 {% load front_tags %}
-{% load absstatic %}
+{% load static %}
 
 {% if nb_pj_pages %}
 <ul class="prev_next_cont_proj" >
@@ -17,29 +17,29 @@
     <tbody class="projectscontentsbody">
 {% for project in projects %}
     <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
-        {% url ldt.ldt_utils.views.json.project_json_id project.ldt_id as json_url_id %}
+        {% url 'ldt.ldt_utils.views.json.project_json_id' id=project.ldt_id as json_url_id %}
         {% if is_gecko %}
-            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url index_project_full project.ldt_id %}"><img src='{% absstatic "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
+            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url 'index_project_full' id=project.ldt_id %}"><img src='{% static "ldt/img/page_eye.png" %}' alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
         {% else %}
-            <td class="cellimg"><div class="cellimgdiv"><a href="{% url index_project project.ldt_id %}" class="ldt_link_open_ldt"><img src='{% absstatic "ldt/img/page_eye.png" %}'  alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
+            <td class="cellimg"><div class="cellimgdiv"><a href="{% url 'index_project' id=project.ldt_id %}" class="ldt_link_open_ldt"><img src='{% static "ldt/img/page_eye.png" %}'  alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
         {% endif %}
-        <td class="cellimg"><div class="cellimgdiv"><img src='{% absstatic "ldt/img/page_copy.png" %}' href="{% url ldt.ldt_utils.views.project.copy_project project.ldt_id %}" class="ldt_link_copy_project" alt="{% trans 'copy the project' %}" title="{% trans 'copy the project' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src='{% static "ldt/img/page_copy.png" %}' href="{% url 'ldt.ldt_utils.views.project.copy_project' ldt_id=project.ldt_id %}" class="ldt_link_copy_project" alt="{% trans 'copy the project' %}" title="{% trans 'copy the project' %}"/></div></td>
         <td class="cellimg">
          <div class="cellimgdiv">
-          <a href='{% url ldt.ldt_utils.views.workspace.popup_embed %}?json_url={{WEB_URL}}{{json_url_id}}&player_id=player_project_{{project.ldt_id}}&ldt_id={{project.ldt_id}}'>
-           <img src='{% absstatic "ldt/img/plugin.png" %}' id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/>
+          <a href='{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}?json_url={{WEB_URL}}{{json_url_id}}&player_id=player_project_{{project.ldt_id}}&ldt_id={{project.ldt_id}}'>
+           <img src='{% static "ldt/img/plugin.png" %}' id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/>
           </a>
          </div>
         </td>
         <td class="cellimg">
-        <img src='{% absstatic "ldt/img/icon-yes.gif" %}' alt="{% trans 'Project published' %}" id="project_{{project.ldt_id}}" />
+        <img src='{% static "ldt/img/icon-yes.gif" %}' alt="{% trans 'Project published' %}" id="project_{{project.ldt_id}}" />
         </td>
         <td>{% thumbnail project.image "50x50" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}</td>
         <td class="projecttitle">
         {% ifequal project.state 2 %}
         <span class="projectinfos" data-title="{{ project.title }}" data-desc="{{ project.description|linebreaksbr }}">{{ project.title }}</span>
         {% else %}
-        <a class="projecttitlelink" href="{% url ldt.ldt_utils.views.project.update_project ldt_id=project.ldt_id %} data-desc="{{ project.description|linebreaksbr }}">{{ project.title }}</a>
+        <a class="projecttitlelink" href="{% url 'ldt.ldt_utils.views.project.update_project' ldt_id=project.ldt_id %} data-desc="{{ project.description|linebreaksbr }}">{{ project.title }}</a>
         {% endifequal %}
         </td>
     </tr>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/sharewith.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/sharewith.html	Fri May 24 21:55:08 2013 +0200
@@ -1,12 +1,12 @@
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% for res in elem_list %}
 	<tr class="shareline">
 		<td class="firstcolsharetable">
 		{% if res.type == "user" %}
-			<img src='{% absstatic "ldt/img/user.png" %}' alt="{% trans "user" %}"/>
+			<img src='{% static "ldt/img/user.png" %}' alt="{% trans "user" %}"/>
 		{% else %}
-			<img src='{% absstatic "ldt/img/group.png" %}' alt={% trans "group" %}"/>		
+			<img src='{% static "ldt/img/group.png" %}' alt={% trans "group" %}"/>		
 		{% endif %}
 		</td>
 		
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html	Fri May 24 21:55:08 2013 +0200
@@ -1,25 +1,25 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
 {{block.super}}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}' ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/jquery.history.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+	<script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}' ></script>
+	<script type="text/javascript" src='{% static "ldt/js/jquery.history.js" %}'></script>
 {% endblock %}
 
 {% block js_declaration %}
 {{block.super}}
 <script type="text/javascript">
 
-var content_filter_url = "{% url ldt.ldt_utils.views.content.contents_filter filter_c='__FILTER__' %}";
-var project_filter_url = "{% url ldt.ldt_utils.views.project.projects_filter filter='__FILTER__' is_owner='false' status='2' %}";
-var publish_project_url = "{% url ldt.ldt_utils.views.project.publish '__PROJECT_ID__' %}";
-var unpublish_project_url = "{% url ldt.ldt_utils.views.project.unpublish '__PROJECT_ID__' %}";
+var content_filter_url = "{% url 'ldt.ldt_utils.views.content.contents_filter' filter_c='__FILTER__' %}";
+var project_filter_url = "{% url 'ldt.ldt_utils.views.project.projects_filter' filter='__FILTER__' is_owner='false' status='2' %}";
+var publish_project_url = "{% url 'ldt.ldt_utils.views.project.publish' id='__PROJECT_ID__' %}";
+var unpublish_project_url = "{% url 'ldt.ldt_utils.views.project.unpublish' id='__PROJECT_ID__' %}";
 
 
 function init_events(base_node) {
-	init_events_all(base_node, "{% url ldt.ldt_utils.views.workspace.popup_embed %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
+	init_events_all(base_node, "{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
 }
 	
 var global_csrf_token = "{{ csrf_token }}";
@@ -69,7 +69,7 @@
 
 {% block css_import %}
 {{block.super}}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block content %}
@@ -80,7 +80,7 @@
 		</div>
 		<div class="span-12 last projectscontentsdiv" id="autre">
 		<form method="get" id="my_form"
-			action="{% url ldt.ldt_utils.views.workspace.search_index %}"
+			action="{% url 'ldt.ldt_utils.views.workspace.search_index' %}"
 			accept-charset="utf-8">
 		<table>
 			{{ form.as_table }}
@@ -91,9 +91,9 @@
 	<div class="span-12 last" id="projectsdiv">
 		<div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle" >{% trans "Published projects" %}
-			<a class='ldt_link_create_project' href="{% url ldt.ldt_utils.views.project.create_ldt_view %}" ><img class='icon_title' src='{% absstatic "ldt/img/page_add_large.png" %}' alt="{% trans 'Create project' %}" title="{% trans 'Create project' %}" /></a></div>
+			<a class='ldt_link_create_project' href="{% url 'ldt.ldt_utils.views.project.create_ldt_view' %}" ><img class='icon_title' src='{% static "ldt/img/page_add_large.png" %}' alt="{% trans 'Create project' %}" title="{% trans 'Create project' %}" /></a></div>
 			<div class="span-4 last searchfielddiv" >
-			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% absstatic "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}'/></div>
+			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% static "ldt/img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}'/></div>
 			</div>
 		</div>
 		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/reset_confirm.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/reset_confirm.html	Fri May 24 21:55:08 2013 +0200
@@ -1,18 +1,18 @@
 {% extends "ldt/ldt_utils/workspace_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of creation of content #}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>	
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>	
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
 {% endblock %}
 
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/reset_confirm_popup.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/reset_confirm_popup.html	Fri May 24 21:55:08 2013 +0200
@@ -1,18 +1,18 @@
 {% extends "ldt/ldt_raw_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% load i18n %} {# form of creation of content #}
 
 {% block js_import %}
 	{{ block.super }}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>	
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>	
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
 {% endblock %}
 
 {% block css_import %}
 	{{ block.super }}
 	{{ content_form.media.css }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
 {% endblock %}
 
 
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,5 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absurl %}
 
 {% block js_declaration %}
 <script type="text/javascript">
@@ -21,8 +20,8 @@
 
 {% block content %}
 <form method="post" id="my_form"
-	{% comment %}action="{% absurl ldt.ldt_utils.views.workspace.search_index %}"{% endcomment %}
-	action="{% url ldt.ldt_utils.views.workspace.search_index %}"
+	{% comment %}action="{% url 'ldt.ldt_utils.views.workspace.search_index' %}"{% endcomment %}
+	action="{% url 'ldt.ldt_utils.views.workspace.search_index' %}"
 	accept-charset="utf-8">
 {% csrf_token %}
 <table>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/search_results.html	Fri May 24 21:55:08 2013 +0200
@@ -1,15 +1,15 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
     {{ block.super }}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-	<script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+	<script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
 {% endblock %}
 
 {% block css_import %}
     {{ block.super }}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' />
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' />
     <style type="text/css">
     
     .titleresults {
@@ -41,7 +41,7 @@
 	{{ block.super }}
 	<script type="text/javascript">   
 	$(document).ready(function(){
-		init_events_all(document, "{% url ldt.ldt_utils.views.workspace.popup_embed %}", '', '', '', '');
+		init_events_all(document, "{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}", '', '', '', '');
 	});    
     </script>
 {% endblock %}
@@ -75,9 +75,9 @@
 			{% for segment in res.list %}
 				<li class="segmentinfos" >
                 {% if user.is_staff %}
-                <a style="float:right;" onclick="return confirm('{% trans "Are you sure you want to delete this annotation ? You cannot undo this action." %}');" href="{% url delete_segment segment.project_id segment.iri_id segment.ensemble_id segment.cutting_id segment.element_id %}" title='{% trans "Delete permantly the current annotation" %}'><img src='{% absstatic "ldt/img/close.png" %}'/></a>
+                <a style="float:right;" onclick="return confirm('{% trans "Are you sure you want to delete this annotation ? You cannot undo this action." %}');" href="{% url 'delete_segment' segment.project_id segment.iri_id segment.ensemble_id segment.cutting_id segment.element_id %}" title='{% trans "Delete permantly the current annotation" %}'><img src='{% static "ldt/img/close.png" %}'/></a>
                 {% endif %}
-				<span  class="" title="{% trans 'open ldt' %}"><a class="ldt_link_open_ldt" href="{% url ldt.ldt_utils.views.lignesdetemps.index_segment segment.project_id segment.iri_id segment.ensemble_id segment.cutting_id segment.element_id %}">
+				<span  class="" title="{% trans 'open ldt' %}"><a class="ldt_link_open_ldt" href="{% url 'ldt.ldt_utils.views.lignesdetemps.index_segment' segment.project_id segment.iri_id segment.ensemble_id segment.cutting_id segment.element_id %}">
 				{% if segment.title %}
 					{{ segment.title }}
 				{% else %}
@@ -102,7 +102,7 @@
 <div class="pagination">
     <span class="step-links">
         {% if results.has_previous %}
-            <a href="{% url ldt.ldt_utils.views.workspace.search_index %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}">{% trans "previous" %}</a>
+            <a href="{% url 'ldt.ldt_utils.views.workspace.search_index' %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}">{% trans "previous" %}</a>
         {% endif %}
 
 		{% if results.paginator.num_pages > 1 %}
@@ -112,7 +112,7 @@
         {% endif %}
 
         {% if results.has_next %}
-            <a href="{% url ldt.ldt_utils.views.workspace.search_index %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}">{% trans "next" %}</a>
+            <a href="{% url 'ldt.ldt_utils.views.workspace.search_index' %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}">{% trans "next" %}</a>
         {% endif %}
     </span>
 </div>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/workspace_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/workspace_base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,11 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
 {{block.super}}
-    <script type="text/javascript" src="{% url ldt.jsi18n packages='ldt' %}" ></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/projectscontents.js" %}'></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.history.js" %}'></script>
+    <script type="text/javascript" src="{% url 'ldt.jsi18n' packages='ldt' %}" ></script>
+    <script type="text/javascript" src='{% static "ldt/js/projectscontents.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.history.js" %}'></script>
 {% endblock %}
 
 
@@ -13,13 +13,13 @@
 {{block.super}}
 <script type="text/javascript">
 
-var content_filter_url = "{% url ldt.ldt_utils.views.content.contents_filter filter_c='__FILTER__' %}";
-var project_filter_url = "{% url ldt.ldt_utils.views.project.projects_filter filter='__FILTER__' is_owner='true' status='0' %}";
-var publish_project_url = "{% url ldt.ldt_utils.views.project.publish '__PROJECT_ID__' %}";
-var unpublish_project_url = "{% url ldt.ldt_utils.views.project.unpublish '__PROJECT_ID__' %}";
+var content_filter_url = "{% url 'ldt.ldt_utils.views.content.contents_filter' filter_c='__FILTER__' %}";
+var project_filter_url = "{% url 'ldt.ldt_utils.views.project.projects_filter' filter='__FILTER__' is_owner='true' status='0' %}";
+var publish_project_url = "{% url 'ldt.ldt_utils.views.project.publish' id='__PROJECT_ID__' %}";
+var unpublish_project_url = "{% url 'ldt.ldt_utils.views.project.unpublish' id='__PROJECT_ID__' %}";
 
 function init_events(base_node) {
-	init_events_all(base_node, "{% url ldt.ldt_utils.views.workspace.popup_embed %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
+	init_events_all(base_node, "{% url 'ldt.ldt_utils.views.workspace.popup_embed' %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
 }
 	
 var global_csrf_token = "{{ csrf_token }}";
@@ -89,7 +89,7 @@
 
 {% block css_import %}
 {{block.super}}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' type="text/css"/>
 {% endblock %}
 
 {% block content %}
@@ -97,12 +97,12 @@
 	<div class="span-12" id="contentsdiv">
 	    <div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle">{% trans "content list" %}
-			<a class='content_link_create' href="{% url ldt.ldt_utils.views.content.write_content %}" ><img class='icon_title' src='{% absstatic "ldt/img/film_add.png" %}' alt="{% trans 'Create content' %}" title="{% trans 'Create content' %}" /></a></div>
+			<a class='content_link_create' href="{% url 'ldt.ldt_utils.views.content.write_content' %}" ><img class='icon_title' src='{% static "ldt/img/film_add.png" %}' alt="{% trans 'Create content' %}" title="{% trans 'Create content' %}" /></a></div>
 			<div class="span-4 last searchfielddiv" >
 			    <div class="searchfield rounded">
 			    	<input id="searchcontentsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" />
-			    	<img id="contentsajaxloader" class="searchajaxloader" src='{% absstatic "ldt//img/ajax-loader-16x16.gif" %}' alt="loader"/>
-			   		<img id="contentsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}' />
+			    	<img id="contentsajaxloader" class="searchajaxloader" src='{% static "ldt//img/ajax-loader-16x16.gif" %}' alt="loader"/>
+			   		<img id="contentsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}' />
 		    	</div>
 			</div>
 		</div>
@@ -113,9 +113,9 @@
 	<div class="span-12 last" id="projectsdiv">
 		<div class="span-12 last titlediv" >
 			<div class="span-8 projectscontentstitle" >{% trans "My projects" %}
-			<a class='ldt_link_create_project' href="{% url ldt.ldt_utils.views.project.create_ldt_view %}" ><img class='icon_title' src='{% absstatic "ldt/img/page_add_large.png" %}' alt="{% trans 'Create project' %}" title="{% trans 'Create project' %}" /></a></div>
+			<a class='ldt_link_create_project' href="{% url 'ldt.ldt_utils.views.project.create_ldt_view' %}" ><img class='icon_title' src='{% static "ldt/img/page_add_large.png" %}' alt="{% trans 'Create project' %}" title="{% trans 'Create project' %}" /></a></div>
 			<div class="span-4 last searchfielddiv" >
-			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% absstatic "ldt//img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% absstatic "ldt/img/clear-left.png" %}'/></div>
+			    <div class="searchfield rounded"><input id="searchprojectsinput" class="searchfieldinput searchfieldinputbase" placeholder="{% trans 'search' %}" type="text" /><img id="projectsajaxloader" class="searchajaxloader" src='{% static "ldt//img/ajax-loader-16x16.gif" %}' alt="loader"/><img id="projecsclear" class="searchclear" src='{% static "ldt/img/clear-left.png" %}'/></div>
 			</div>
 		</div>
 		<div class="span-12 last projectscontentsdiv" id="projectslistcontainer">
--- a/src/ldt/ldt/ldt_utils/tests/content_tests.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/tests/content_tests.py	Fri May 24 21:55:08 2013 +0200
@@ -6,20 +6,23 @@
 """
 
 from django.conf import settings
+from django.contrib.auth import get_user_model, create_superuser
 from django.utils._os import WindowsError
-from ldt.ldt_utils.models import User, Content, Media
+from ldt.ldt_utils.models import Content, Media
 from ldt.test.client import Client
 from ldt.test.testcases import TestCase
 import logging
 import os
 
+User = get_user_model()
+
 class ContentTest(TestCase):
     
     fixtures = ['base_data.json', 'user_data.json']
     
     def setUp(self):
         self.client = Client()
-        User.objects.create_superuser('blop', 'blop@blop.com', 'blop')
+        create_superuser('blop', 'blop@blop.com', 'blop')
         
         _ = self.client.login(username='blop', password='blop')
         
--- a/src/ldt/ldt/ldt_utils/tests/ldt_tests.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/tests/ldt_tests.py	Fri May 24 21:55:08 2013 +0200
@@ -5,7 +5,8 @@
 Replace these with more appropriate tests for your application.
 """
 
-from ldt.ldt_utils.models import User, Project, Content
+from django.contrib.auth import get_user_model
+from ldt.ldt_utils.models import Project, Content
 from ldt.ldt_utils.utils import (LdtUtils, LdtAnnotation, create_ldt, 
     create_empty_iri, copy_ldt)
 from ldt.test.client import Client
@@ -15,6 +16,8 @@
 import tempfile
 import uuid
 
+User = get_user_model()
+
 class UtilsTest(TestCase):
     
     fixtures = ['base_data.json', 'user_data.json']
@@ -80,7 +83,7 @@
         query = base64.urlsafe_b64encode(search.encode('utf8'))
 
         self.project.contents.add(self.cont3, self.cont4)
-        ldoc = self.LU.generate_init([field, query], 'ldt.ldt_utils.views.lignesdetemps.search_ldt', 'ldt.ldt_utils.views.lignesdetemps.search_segments')
+        ldoc = self.LU.generate_init({'field':field, 'query':query}, 'ldt.ldt_utils.views.lignesdetemps.search_ldt', 'ldt.ldt_utils.views.lignesdetemps.search_segments')
         self.assertEqual(ldoc.xpath("/iri/files/init")[0].tag, "init")
         self.assertEqual(ldoc.xpath("/iri/files/library")[0].tag, "library")    
     def test_create_ldt(self):
--- a/src/ldt/ldt/ldt_utils/tests/media_tests.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/tests/media_tests.py	Fri May 24 21:55:08 2013 +0200
@@ -5,10 +5,13 @@
 Replace these with more appropriate tests for your application.
 """
 
-from ldt.ldt_utils.models import User, Media
+from django.contrib.auth import get_user_model
+from ldt.ldt_utils.models import Media
 from ldt.test.client import Client
 from ldt.test.testcases import TestCase
 
+User = get_user_model()
+
 class MediaTest(TestCase):
     
     fixtures = ['base_data.json', 'user_data.json']
--- a/src/ldt/ldt/ldt_utils/tests/project_tests.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/tests/project_tests.py	Fri May 24 21:55:08 2013 +0200
@@ -5,14 +5,16 @@
 Replace these with more appropriate tests for your application.
 """
 
+from django.contrib.auth import get_user_model
 from django.core.management import call_command
-from ldt.ldt_utils.models import User, Project, Content
+from ldt.ldt_utils.models import Project, Content
 from ldt.ldt_utils.utils import LdtUtils, LdtAnnotation, create_ldt
 from ldt.test.client import Client
 from ldt.test.testcases import TestCase
 import lxml.etree
 import uuid
 
+User = get_user_model()
 
 class ProjectTest(TestCase):
     
--- a/src/ldt/ldt/ldt_utils/urls.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/urls.py	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, url, include
+from django.conf.urls import patterns, url, include
 from ldt.management import test_ldt
 
 # Uncomment the next two lines to enable the admin:
--- a/src/ldt/ldt/ldt_utils/utils.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/utils.py	Fri May 24 21:55:08 2013 +0200
@@ -3,7 +3,6 @@
 from django.utils.translation import ugettext as _
 from StringIO import StringIO
 import datetime
-import django.core.urlresolvers
 import lxml.etree #@UnresolvedImport
 import uuid
 from ldt.utils.url import request_with_auth
@@ -147,10 +146,9 @@
         elementFiles = lxml.etree.SubElement(iri, 'files')    
         elementInit = lxml.etree.SubElement(elementFiles, 'init')
         elementfile = lxml.etree.SubElement(elementInit, 'file')   
-        elementfile.set('src', absurl_norequest(method, args=url))
-        elementfile.set('src', django.core.urlresolvers.reverse(method, args=url))
+        elementfile.set('src', absurl_norequest(method, kwargs=url))
         if(search):
-            elementfile.set("segsel", absurl_norequest(search, args=url))
+            elementfile.set("segsel", absurl_norequest(search, kwargs=url))
 
         lxml.etree.SubElement(elementFiles, 'recent')
         lxml.etree.SubElement(elementFiles, 'library')
--- a/src/ldt/ldt/ldt_utils/views/content.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/content.py	Fri May 24 21:55:08 2013 +0200
@@ -230,7 +230,7 @@
                             img_temp.write(r.content)
                             img_temp.flush()
                             picture_form.cleaned_data["image"]=File(img_temp) 
-                    except Exception as inst:
+                    except Exception:
                         logging.debug("couldn't download video thumbnail from image_link : " + str(image_link))
             
             if media_valid and content_valid and picture_valid:
@@ -443,7 +443,6 @@
 @transaction.commit_manually
 def delete_content(request, iri_id=None):
     #Delete the project, the media if exists, and the content
-    errors_transaction=[]  
     if not iri_id:
         iri_id = request.REQUEST.get("iri_id", None)  
     if iri_id:
--- a/src/ldt/ldt/ldt_utils/views/front.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/front.py	Fri May 24 21:55:08 2013 +0200
@@ -1,20 +1,22 @@
 from django.conf import settings
+from django.contrib.auth import get_user_model
 from django.contrib.auth.decorators import login_required
-from django.contrib.auth.models import Group, User
+from django.contrib.auth.models import Group
 from django.core.paginator import Paginator, InvalidPage, EmptyPage
 from django.core.urlresolvers import reverse
 from django.db.models import Count
 from django.shortcuts import render_to_response
 from django.template import RequestContext
+from ldt.ldt_utils.forms import SearchForm
 from ldt.ldt_utils.models import Content, Project
-from ldt.ldt_utils.forms import SearchForm
 from ldt.ldt_utils.views.content import get_content_tags
 from ldt.ldt_utils.views.group import get_group_projects
 from ldt.ldt_utils.views.workspace import get_search_results
+from ldt.utils.url import static
 from tagging.models import TaggedItem
-from ldt.utils.url import absstatic
+import logging
 
-import logging
+User = get_user_model()
 logger = logging.getLogger(__name__)
 
 
@@ -24,7 +26,7 @@
     # Get the most annotated contents
     most_contents = Content.safe_objects.order_by('-stat_annotation__nb_annotations').select_related('stat_annotation')[:8]
     # Get the active groups
-    active_groups = Group.objects.select_related("profile").annotate(nb_users=Count("user")).exclude(name=settings.PUBLIC_GROUP_NAME)[:5]
+    active_groups = Group.objects.select_related("profile").annotate(nb_users=Count("ldtuser")).exclude(name=settings.PUBLIC_GROUP_NAME)[:5]
     # Get the main tag list
     front_tags = settings.FRONT_TAG_LIST
     # Get the all tags list
@@ -149,9 +151,9 @@
     player_id = "player_project_" + proj.ldt_id
     
     if cutting_id is None :
-        json_url = reverse("ldt.ldt_utils.views.json.project_json_id", args=[proj.ldt_id])
+        json_url = reverse("ldt.ldt_utils.views.json.project_json_id", kwargs={'id' : proj.ldt_id})
     else:
-        json_url = reverse("ldt.ldt_utils.views.json.project_json_cutting_id", args=[proj.ldt_id, cutting_id])
+        json_url = reverse("ldt.ldt_utils.views.json.project_json_cutting_id", kwargs={'id':proj.ldt_id, 'cutting_id':cutting_id})
     player_width = 550
     player_height = 380
     stream_mode = proj.stream_mode
@@ -175,9 +177,9 @@
     search = ''
     field = 'all'
     content_tag = None
-    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
-    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
-    baseurl=absstatic(request, "ldt/swf/ldt/")
+    colorurl=static("ldt/swf/ldt/pkg/color.xml")
+    i18nurl=static("ldt/swf/ldt/pkg/i18n")
+    baseurl=static("ldt/swf/ldt/")
     sform = SearchForm(request.GET)
     if sform.is_valid():
         search = sform.cleaned_data["search"]
--- a/src/ldt/ldt/ldt_utils/views/group.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/group.py	Fri May 24 21:55:08 2013 +0200
@@ -1,13 +1,15 @@
 from django.conf import settings
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import Group
+from django.db import transaction
 from django.http import HttpResponseServerError
 from django.shortcuts import render_to_response, get_object_or_404, redirect
 from django.template import RequestContext
+from guardian.shortcuts import (remove_perm, get_objects_for_group, 
+    get_objects_for_user)
 from ldt.ldt_utils.forms import GroupAddForm
-from guardian.shortcuts import remove_perm, get_objects_for_group, get_objects_for_user
+from ldt.security.cache import get_cached_checker, cached_assign
 from ldt.security.utils import add_change_attr, get_userlist, get_userlist_group
-from ldt.security.cache import get_cached_checker, cached_assign
 from ldt.user.forms import PictureForm
 
 
@@ -45,6 +47,7 @@
 
 
 @login_required
+@transaction.commit_on_success
 def create_group(request):
     if not request.user.has_perm('auth.add_group'):
         return HttpResponseServerError('<h1>User %s can not create a group.</h1>' % request.user.username)
@@ -96,6 +99,7 @@
                                                                   'elem_list' : get_userlist(request.user), 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
 
 @login_required
+@transaction.commit_on_success
 def update_group(request, group_id):
     group = get_object_or_404(Group, id=group_id)
     checker = get_cached_checker(request.user)
@@ -164,12 +168,12 @@
     
     
 @login_required
-def groups_filter(request, filter):
-    if filter and len(filter) > 0 and filter[0] == '_':
-        filter = filter[1:]
+def groups_filter(request, g_filter):
+    if g_filter and len(g_filter) > 0 and g_filter[0] == '_':
+        g_filter = g_filter[1:]
 
     if filter:
-        group_list = request.user.groups.filter(name__icontains=filter)
+        group_list = request.user.groups.filter(name__icontains=g_filter)
         search_active = True 
     else:
         group_list = request.user.groups.all()
--- a/src/ldt/ldt/ldt_utils/views/json.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/json.py	Fri May 24 21:55:08 2013 +0200
@@ -17,21 +17,21 @@
 logger = logging.getLogger(__name__)
 
 
-def project_json_id(request, id): 
+def project_json_id(request, id):  # @ReservedAssignment
     
     project = get_object_or_404(Project.safe_objects, ldt_id=id)
 
     return project_json(request, project, False)
 
-def project_json_cutting_id(request, id, cutting_id):
+def project_json_cutting_id(request, id, cutting_id):  # @ReservedAssignment
 
     project = get_object_or_404(Project.safe_objects, ldt_id=id)
 
     return project_json(request, project, first_cutting=cutting_id)
 
-def project_json_externalid(request, id): 
+def project_json_externalid(request, id):  # @ReservedAssignment
         
-    res_proj = get_list_or_404(Project.safe_objects.order_by('-modification_date'), contents__external_id=id) #@UndefinedVariable
+    res_proj = get_list_or_404(Project.safe_objects.order_by('-modification_date'), contents__external_id=id)
     
     return project_json(request, res_proj[0], False)
 
--- a/src/ldt/ldt/ldt_utils/views/lignesdetemps.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/lignesdetemps.py	Fri May 24 21:55:08 2013 +0200
@@ -12,7 +12,7 @@
 from ldt.security.permissionchecker import check_object_perm_for_user
 from ldt.security.utils import set_forbidden_stream
 from ldt.utils.projectldt_parser import absolute_src_xml, relative_src_xml
-from ldt.utils.url import absstatic, absurl
+from ldt.utils.url import static, absurl, absstatic
 from ldt.utils.web_url_management import get_web_url
 import base64
 import logging
@@ -24,17 +24,17 @@
     
     language_code = request.LANGUAGE_CODE[:2]
     
-    url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, query])
-    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
-    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
-    baseurl=absstatic(request, "ldt/swf/ldt/")
+    url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", kwargs={'field':field, 'query':query})
+    colorurl=static("ldt/swf/ldt/pkg/color.xml")
+    i18nurl=static("ldt/swf/ldt/pkg/i18n")
+    baseurl=static("ldt/swf/ldt/")
     return render_to_response('ldt/ldt_utils/init_ldt.html', {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': url}, context_instance=RequestContext(request))
 
 def search_init(request, field, query):
     
     ldtgen = LdtUtils()
     
-    doc = ldtgen.generate_init([field, query], 'ldt.ldt_utils.views.lignesdetemps.search_ldt', 'ldt.ldt_utils.views.lignesdetemps.search_segments')
+    doc = ldtgen.generate_init({'field':field, 'query':query}, 'ldt.ldt_utils.views.lignesdetemps.search_ldt', 'ldt.ldt_utils.views.lignesdetemps.search_segments')
     
     resp = HttpResponse(mimetype="text/xml;charset=utf-8")
     resp.write(lxml.etree.tostring(doc, pretty_print=True, encoding="utf-8")) 
@@ -86,14 +86,14 @@
 
 
 def index_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
-    url_str = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init_segment", args=[project_id, content_id, ensemble_id, cutting_id, segment_id])
+    url_str = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init_segment", kwargs={'project_id':project_id, 'content_id':content_id, 'ensemble_id':ensemble_id, 'cutting_id':cutting_id, 'segment_id':segment_id})
     post_url = ""
     language_code = request.LANGUAGE_CODE[:2]
     readonly = 'true'
     template_path = 'ldt/ldt_utils/init_ldt.html'
-    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
-    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
-    baseurl=absstatic(request, "ldt/swf/ldt/")
+    colorurl=static("ldt/swf/ldt/pkg/color.xml")
+    i18nurl=static("ldt/swf/ldt/pkg/i18n")
+    baseurl=static("ldt/swf/ldt/")
     return render_to_response(template_path, {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': url_str, 'posturl': post_url, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
     
 def init_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
@@ -102,7 +102,7 @@
         get_object_or_404(Project.safe_objects, ldt_id=project_id)
     
     ldtgen = LdtUtils()
-    doc = ldtgen.generate_init([project_id, content_id, ensemble_id, cutting_id, segment_id], 'ldt.ldt_utils.views.lignesdetemps.ldt_segment', 'ldt.ldt_utils.views.lignesdetemps.highlight_segment')
+    doc = ldtgen.generate_init({'project_id':project_id, 'content_id':content_id, 'ensemble_id':ensemble_id, 'cutting_id':cutting_id, 'segment_id':segment_id}, 'ldt.ldt_utils.views.lignesdetemps.ldt_segment', 'ldt.ldt_utils.views.lignesdetemps.highlight_segment')
     return HttpResponse(lxml.etree.tostring(lxml.etree.ElementTree(doc), pretty_print=True), mimetype="text/xml;charset=utf-8")
 
 def highlight_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
@@ -186,14 +186,14 @@
         
    
 @login_required    
-def index_project(request, id, full=False): 
+def index_project(request, id, full=False):  # @ReservedAssignment
 
-    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", args=['ldt_project', id])
+    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", kwargs={'method':'ldt_project', 'url':id})
     posturl = absurl(request, "ldt.ldt_utils.views.lignesdetemps.save_ldt_project")
     language_code = request.LANGUAGE_CODE[:2]
-    colorurl = absstatic(request, "ldt/swf/ldt/pkg/color.xml")
-    i18nurl = absstatic(request, "ldt/swf/ldt/pkg/i18n")
-    baseurl = absstatic(request, "ldt/swf/ldt/")
+    colorurl = static("ldt/swf/ldt/pkg/color.xml")
+    i18nurl = static("ldt/swf/ldt/pkg/i18n")
+    baseurl = static("ldt/swf/ldt/")
     audio_record_url = None
     
     try:
@@ -222,9 +222,9 @@
                               context_instance=RequestContext(request))
     
 
-def embed_ldt(request, id): 
+def embed_ldt(request, id):  # @ReservedAssignment
     # Almost identical to index_project but without login_required and less parameters
-    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", args=['ldt_project', id])
+    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", kwargs={'method':'ldt_project', 'url':id})
     posturl = ""
     language_code = request.LANGUAGE_CODE[:2]
     colorurl = absstatic(request, "ldt/swf/ldt/pkg/color.xml")
@@ -235,7 +235,7 @@
     template_path = 'ldt/ldt_utils/embed_ldt.html'
     
     try:
-        ldt = Project.safe_objects.get(ldt_id=id)
+        _ = Project.safe_objects.get(ldt_id=id)
     except Project.DoesNotExist:
         return HttpResponseRedirect(reverse("ldt.ldt_utils.views.workspace.home"))
     
@@ -245,7 +245,7 @@
 def init(request, method, url):
     ldtgen = LdtUtils()
 
-    doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.lignesdetemps.' + method, None)    
+    doc = ldtgen.generate_init({'id':url}, 'ldt.ldt_utils.views.lignesdetemps.' + method, None)    
 
     library = doc.xpath('/iri/files/library')[0]
     for c in Content.safe_objects.all().select_related("media_obj"):
@@ -268,7 +268,7 @@
     resp.write(lxml.etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
     return resp
        
-def ldt_project(request, id): 
+def ldt_project(request, id):  # @ReservedAssignment
     resp = HttpResponse(mimetype="text/xml")
     resp['Cache-Control'] = 'no-cache, must-revalidate'
     resp['Pragma'] = 'no-cache'
@@ -359,7 +359,7 @@
 
 def index(request, url):
     
-    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", args=['ldt', url])
+    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", kwargs={'method':'ldt', 'url':url})
     language_code = request.LANGUAGE_CODE[:2]
     colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
     i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
--- a/src/ldt/ldt/ldt_utils/views/project.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/project.py	Fri May 24 21:55:08 2013 +0200
@@ -3,17 +3,18 @@
 from django.contrib.auth.models import Group
 from django.core.urlresolvers import reverse
 from django.db.models import Q
-from django.http import HttpResponse, HttpResponseRedirect, HttpResponseServerError
+from django.http import (HttpResponse, HttpResponseRedirect, 
+    HttpResponseServerError)
 from django.shortcuts import render_to_response, get_object_or_404
 from django.template import RequestContext
 from django.utils import simplejson
 from django.utils.translation import ugettext as _
+from guardian.shortcuts import get_objects_for_group, get_objects_for_user
 from ldt.ldt_utils.forms import LdtAddForm, AddProjectForm, CopyProjectForm
-from guardian.shortcuts import get_objects_for_group, get_objects_for_user
 from ldt.ldt_utils.models import Content, Project
 from ldt.ldt_utils.utils import boolean_convert
-from ldt.security.utils import (assign_perm_to_obj, add_change_attr, get_userlist,
-                                get_userlist_model)
+from ldt.security.utils import (assign_perm_to_obj, add_change_attr, get_userlist, 
+    get_userlist_model)
 from ldt.user.forms import PictureForm
 import lxml.etree
 import math
@@ -44,9 +45,9 @@
             form_status = "saved"
             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
             if is_gecko :
-                redirect_to = reverse('index_project_full', args=[project.ldt_id])
+                redirect_to = reverse('index_project_full', kwargs={'id':project.ldt_id})
             else:
-                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))   
+                return HttpResponseRedirect(reverse('index_project', kwargs={'id':project.ldt_id}))   
      
     else:
         form = LdtAddForm()
@@ -88,14 +89,14 @@
             # Modal window is not used with firefox
             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
             if is_gecko :
-                redirect_to = reverse('index_project_full', args=[project.ldt_id])
+                redirect_to = reverse('index_project_full', kwargs={'id':project.ldt_id})
             else:
-                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
+                return HttpResponseRedirect(reverse('index_project', kwargs={'id':project.ldt_id}))
     else:
         form = AddProjectForm()
            
     return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status': form_status, 'contents':contents,'groups' : groups,
-                                                                'redirect_to': redirect_to, 'elem_list': get_userlist(request.user), 'create_project_action':reverse("ldt.ldt_utils.views.project.create_project", args=[iri_id])}, context_instance=RequestContext(request))
+                                                                'redirect_to': redirect_to, 'elem_list': get_userlist(request.user), 'create_project_action':reverse("ldt.ldt_utils.views.project.create_project", kwargs={'iri_id':iri_id})}, context_instance=RequestContext(request))
 
 @login_required
 def update_project(request, ldt_id):
@@ -173,7 +174,7 @@
         
     return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status':form_status, 'groups': groups, 'elem_list': get_userlist(request.user), 
                                                                 'ldt_id': ldt_id, 'contents':contents, 'display_reset':display_reset, 'member_list': member_list, 'admin_list': admin_list,
-                                                                'create_project_action':reverse("ldt.ldt_utils.views.project.update_project", args=[ldt_id]),
+                                                                'create_project_action':reverse("ldt.ldt_utils.views.project.update_project", kwargs={'ldt_id':ldt_id}),
                                                                 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
 
 @login_required
@@ -190,9 +191,9 @@
             project = project.copy_project(title=form.cleaned_data['title'], user=user, group=group)
             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
             if is_gecko:
-                return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
+                return HttpResponseRedirect(reverse('index_project_full', kwargs={'id':project.ldt_id}))
             else:
-                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
+                return HttpResponseRedirect(reverse('index_project', kwargs={'id':project.ldt_id}))
     else:
         form = CopyProjectForm()
     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
@@ -201,7 +202,7 @@
 
 
 @login_required
-def projects_filter(request, filter, is_owner=False, status=0, id_group=0):
+def projects_filter(request, filter, is_owner=False, status=0, id_group=0):  # @ReservedAssignment
     is_owner = boolean_convert(is_owner)
     status = int(status)
     id_group = int(id_group)
@@ -220,7 +221,7 @@
 
     if filter:
         if len(filter) > 0 and filter[0] == '_':
-            filter = filter[1:]
+            filter = filter[1:]  # @ReservedAssignment
         query &= Q(title__icontains=filter)
            
     is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
@@ -262,13 +263,13 @@
                               context_instance=RequestContext(request))
        
 @login_required
-def publish(request, id):
+def publish(request, id):  # @ReservedAssignment
     ldt = get_object_or_404(Project.safe_objects, ldt_id=id)
     ldt.publish()
     return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state, 'ldt_id': ldt.ldt_id}}, ensure_ascii=False), mimetype='application/json')
 
 @login_required
-def unpublish(request, id):
+def unpublish(request, id):  # @ReservedAssignment
     ldt = get_object_or_404(Project.safe_objects, ldt_id=id)
     ldt.unpublish()
     return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state, 'ldt_id': ldt.ldt_id}}, ensure_ascii=False), mimetype='application/json')
--- a/src/ldt/ldt/ldt_utils/views/workspace.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/ldt_utils/views/workspace.py	Fri May 24 21:55:08 2013 +0200
@@ -23,7 +23,7 @@
 from ldt.ldt_utils.views.project import (get_projects_page, 
     get_published_projects_page)
 from ldt.security.utils import add_change_attr, get_userlist
-from ldt.utils.url import absstatic, absurl
+from ldt.utils.url import static, absurl
 from ldt.utils.web_url_management import get_web_url
 from operator import itemgetter
 import base64
@@ -122,7 +122,7 @@
     if not project_id :
         return HttpResponseForbidden(_("Parameters project_id or content_id must be given in the url"))
         
-    json_url = reverse("projectjson_id", args=[project_id])
+    json_url = reverse("projectjson_id", kwargs={'id':project_id})
     player_id = "player_project_" + project_id
     ldt_id = project_id
     rend_dict = get_datas_for_embed(request, json_url, player_id, ldt_id)
@@ -256,12 +256,12 @@
 
 
 
-def share_filter(request, filter, use_groups=False):
+def share_filter(request, filter, use_groups=False):  # @ReservedAssignment
     use_groups = boolean_convert(use_groups)
     if not filter or len(filter) == 0:
         raise AttributeError("filter should be a string")
     
-    filter = filter[1:]    
+    filter = filter[1:]    # @ReservedAssignment
     resp = get_userlist(request.user, filter=filter)
             
     if use_groups:
@@ -288,9 +288,9 @@
     results = []
     search = ''
     field = 'all'
-    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
-    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
-    baseurl=absstatic(request, "ldt/swf/ldt/")
+    colorurl = static("ldt/swf/ldt/pkg/color.xml")
+    i18nurl = static("ldt/swf/ldt/pkg/i18n")
+    baseurl = static("ldt/swf/ldt/")
     sform = SearchForm(request.GET)
     if sform.is_valid():
         search = sform.cleaned_data["search"]
@@ -299,7 +299,7 @@
         page = sform.cleaned_data["page"] or 1
         ldt_pres = sform.cleaned_data["ldt_pres"]
         if ldt_pres:
-            url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, queryStr])
+            url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", kwargs={'field':field, 'query':queryStr})
             return render_to_response('ldt/ldt_utils/init_ldt_full.html', {'colorurl': colorurl, 'i18nurl': i18nurl , 'language': language_code, 'baseurl': baseurl, 'url': url}, context_instance=RequestContext(request))
         else:                                        
             results, nb, nb_segment = get_search_results(request, search, field, page)            
--- a/src/ldt/ldt/management/__init__.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/management/__init__.py	Fri May 24 21:55:08 2013 +0200
@@ -1,15 +1,11 @@
 from django.conf import settings
-from django.contrib.auth.models import User, Group
+from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import ObjectDoesNotExist
 from django.db.models import signals
-from ldt.user.models import Ldt
 
-    
-def post_save_ldt(instance, raw, created, **kwargs):
-    signals.post_save.send(sender=User, instance=instance, raw=raw, created=created)     
-    
-signals.post_save.connect(post_save_ldt, Ldt) 
+User = get_user_model()
 
 def post_save_user(instance, raw, created, **kwargs):
     if created:
--- a/src/ldt/ldt/management/commands/testrunserver.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/management/commands/testrunserver.py	Fri May 24 21:55:08 2013 +0200
@@ -23,7 +23,8 @@
 class Command(RunserverCommand):
     def handle(self, addrport='', keep_running=None, ready_event=None, *args, **options):
         import django
-        from django.core.servers.basehttp import AdminMediaHandler, WSGIServerException
+        from django.core.servers.basehttp import WSGIServerException
+        from django.contrib.staticfiles.handlers import StaticFilesHandler
         from django.core.handlers.wsgi import WSGIHandler
         if args:
             raise CommandError('Usage is testrunserver %s' % self.args)
@@ -56,7 +57,7 @@
         translation.activate(settings.LANGUAGE_CODE)
 
         try:
-            handler = AdminMediaHandler(WSGIHandler(), admin_media_path)
+            handler = StaticFilesHandler(WSGIHandler(), admin_media_path)
             run(addr, int(port), handler, keep_running, ready_event)
         except WSGIServerException, e:
             # Use helpful error messages instead of ugly tracebacks.
--- a/src/ldt/ldt/management/commands/updateiriurlinprojects.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/management/commands/updateiriurlinprojects.py	Fri May 24 21:55:08 2013 +0200
@@ -6,13 +6,12 @@
 '''
 
 from ..utils import show_progress
-from django.core.management import call_command
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 from django.db.models import signals
 from ldt.ldt_utils.contentindexer import index_project
-from ldt.ldt_utils.models import Content, Project
-import lxml.etree #@UnresolvedImport
+from ldt.ldt_utils.models import Project
+import lxml.etree
 
 
 class Command(BaseCommand):
--- a/src/ldt/ldt/security/__init__.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/__init__.py	Fri May 24 21:55:08 2013 +0200
@@ -1,14 +1,16 @@
 from django.conf import settings
+from django.contrib.auth import get_user_model
 from django.contrib.contenttypes.models import ContentType
-from django.contrib.auth.models import User
 from django.core.signals import request_started
-from ldt.security.permissionchecker import check_object_perm_for_user
+from ldt.security.permissionchecker import check_object_perm_for_user 
+
+User = get_user_model()
 
 try:
     from threading import local
 except ImportError:
     from django.utils._threading_local import local
-    
+        
 _thread_locals = local()
 
 # The function that protect models is called on the first
--- a/src/ldt/ldt/security/cache.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/cache.py	Fri May 24 21:55:08 2013 +0200
@@ -1,13 +1,15 @@
 from django.core.cache import cache
 from django.conf import settings
 from guardian.core import ObjectPermissionChecker
-from django.contrib.auth.models import User
+from django.contrib.auth import get_user_model
 from django.db.models import Q
 from guardian.shortcuts import assign
 from django.utils.encoding import smart_str
 import re
 import hashlib
 
+User = get_user_model()
+
 def get_cached_checker(user):
     key_name = get_key(user.username)
     
--- a/src/ldt/ldt/security/command.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/command.py	Fri May 24 21:55:08 2013 +0200
@@ -1,9 +1,12 @@
 from django.conf import settings
-from django.contrib.auth.models import Group, User
+from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
+from guardian.shortcuts import assign, remove_perm
 from ldt.ldt_utils.models import Project, Content
-from guardian.shortcuts import assign, remove_perm
 from ldt.management.utils import show_progress
 
+User = get_user_model()
+
 def set_default_permissions(verbose=False, is_migration=False, orm=None):
     writer = None
     
@@ -21,7 +24,7 @@
                   'Group': Group
                   }
     
-    everyone, created = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)     
+    everyone, _ = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)     
      
     if verbose:   
         total = list_model['Project'].objects.count()
--- a/src/ldt/ldt/security/forms.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/forms.py	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,10 @@
 from django import forms
-from django.contrib.auth.models import User, Group
+from django.contrib.auth import get_user_model
+from django.contrib.auth.models import Group
 from django.forms.widgets import HiddenInput, MultipleHiddenInput
 
+User = get_user_model()
+
 class LazyMultipleChoiceField(forms.MultipleChoiceField):
     
     def validate(self, value):
@@ -31,14 +34,14 @@
         users = User.objects.filter(id__in=users)
         groups = Group.objects.filter(id__in=groups)
         
-        def create_real_lists(list, users, groups):
+        def create_real_lists(r_list, users, groups):
             new_list = []
-            for e in list:
-                id, cls_name = e.split('-')
+            for e in r_list:
+                obj_id, cls_name = e.split('-')
                 if cls_name == 'user':
-                    new_list.append(users.get(id=id))
+                    new_list.append(users.get(id=obj_id))
                 elif cls_name == 'group':
-                    new_list.append(groups.get(id=id))
+                    new_list.append(groups.get(id=obj_id))
             return new_list
         
         new_read_list = create_real_lists(read_list, users, groups)        
--- a/src/ldt/ldt/security/permissionchecker.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/permissionchecker.py	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,5 @@
+from django.contrib.auth.models import Permission
 from django.contrib.contenttypes.models import ContentType
-from django.contrib.auth.models import Permission
 from guardian.models import UserObjectPermission, GroupObjectPermission
 
 
--- a/src/ldt/ldt/security/utils.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/security/utils.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,9 @@
+from cache import get_cached_userlist, cached_assign
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.core.cache import cache
-from guardian.shortcuts import remove_perm, get_users_with_perms, get_groups_with_perms, get_objects_for_user
-from cache import get_cached_userlist, cached_assign
+from guardian.shortcuts import (remove_perm, get_users_with_perms, 
+    get_groups_with_perms, get_objects_for_user)
 from ldt.security import change_security
 import types
 
@@ -79,38 +80,38 @@
     
     return obj_list
 
-def assign_perm_to_obj(object, read_list, write_list, owner):
-    name = object.__class__.__name__.lower()
+def assign_perm_to_obj(obj, read_list, write_list, owner):
+    name = obj.__class__.__name__.lower()
     
-    old_users = get_users_with_perms(object).exclude(id=owner.id)
-    old_groups = get_groups_with_perms(object)
+    old_users = get_users_with_perms(obj).exclude(id=owner.id)
+    old_groups = get_groups_with_perms(obj)
     
     for elem in read_list:
-        cached_assign('view_%s' % name, elem, object)
+        cached_assign('view_%s' % name, elem, obj)
         if elem in write_list:
-            cached_assign('change_%s' % name, elem, object)
+            cached_assign('change_%s' % name, elem, obj)
         else:
-            remove_perm('change_%s' % name, elem, object) 
+            remove_perm('change_%s' % name, elem, obj) 
                 
-    def remove_perms(new_list, old_list, obj, name):
+    def remove_perms(new_list, old_list, o, name):
         for e in old_list:
             if e not in new_list:
-                remove_perm('view_%s' % name, e, obj)
-                remove_perm('change_%s' % name, e, obj)
+                remove_perm('view_%s' % name, e, o)
+                remove_perm('change_%s' % name, e, o)
                 
-    remove_perms(read_list, old_users, object, name)
-    remove_perms(read_list, old_groups, object, name)
+    remove_perms(read_list, old_users, obj, name)
+    remove_perms(read_list, old_groups, obj, name)
     cache.delete('userlist')           
  
     
-def get_userlist(user, filter=None):
+def get_userlist(user, filter=None):  # @ReservedAssignment
     user_list = get_cached_userlist().exclude(id=user.id)
     if filter:
         user_list = user_list.filter(username__icontains=filter)
     elem_list = [{'name': u.username, 'id': u.id, 'type': 'user'} for u in user_list[0:settings.MAX_USERS_SEARCH]]
     return elem_list  
 
-def get_userlist_model(object, owner):
+def get_userlist_model(object, owner):  # @ReservedAssignment
     if hasattr(object, 'is_public') and object.is_public:
         return [None, None]
     
@@ -146,7 +147,7 @@
     return [users_list + groups_list, admin_users + admin_groups]
  
 def get_userlist_group(group, user):
-    members = group.user_set.all()
+    members = group.ldtuser_set.all()
     admin = get_users_with_perms(group)
 
     member_list = []
--- a/src/ldt/ldt/settings.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/settings.py	Fri May 24 21:55:08 2013 +0200
@@ -52,7 +52,8 @@
     'ldt.ldt_utils.middleware.userprofile.LanguageMiddleware',
 ))
 
-
+AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL','user.LdtUser')
+INITIAL_CUSTOM_USER_MIGRATION = getattr(settings, 'INITIAL_CUSTOM_USER_MIGRATION','0009_rename_auth_user_to_user_ldt_user')
 
 WEB_URL = getattr(settings, 'WEB_URL', '')
 WEB_AUTH = getattr(settings, 'WEB_AUTH', [])
@@ -65,6 +66,7 @@
 MANAGERS = settings.MANAGERS
 INSTALLED_APPS = settings.INSTALLED_APPS
 LANGUAGES = settings.LANGUAGES
+AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'user.LdtUser')
 DECOUPAGE_BLACKLIST = getattr(settings, 'DECOUPAGE_BLACKLIST', 'de_PPP')
 STREAM_URL = getattr(settings, 'STREAM_URL', '')
 STREAM_PATH = getattr(settings, 'STREAM_PATH', '')
@@ -73,8 +75,6 @@
 LOG_LEVEL = getattr(settings, 'LOG_LEVEL', logging.INFO)
 EMPTY_MEDIA_EXTERNALID = getattr(settings, 'EMPTY_MEDIA_EXTERNALID', None)
 
-ADMIN_MEDIA_PREFIX = getattr(settings, 'ADMIN_MEDIA_PREFIX', None)
-
 TEST_WEBSERVER_ADDRPORT = getattr(settings, 'TEST_WEBSERVER_ADDRPORT', '127.0.0.1:8000')
 
 ACCOUNT_ACTIVATION_DAYS = getattr(settings, 'ACCOUNT_ACTIVATION_DAYS', 7)
--- a/src/ldt/ldt/templates/403.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/403.html	Fri May 24 21:55:08 2013 +0200
@@ -1,10 +1,10 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block content %}
 <div style="text-align:center;vertical-align:middle;">
 	<h1>{% trans '403 error' %}</h1>
-	<img src='{% absstatic "ldt/img/403_gandalf.gif" %}'alt="Gif 404" style="display:block;margin:auto;vertical-align:middle;"/>
+	<img src='{% static "ldt/img/403_gandalf.gif" %}'alt="Gif 404" style="display:block;margin:auto;vertical-align:middle;"/>
 	<br>
 	<h1>{% trans "You don't have the right permission to access this page" %}</h1>
 </div>
--- a/src/ldt/ldt/templates/404.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/404.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,11 @@
 {% extends "ldt/ldt_base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 
 {% block content %}
 <div style="text-align:center;vertical-align:middle;">
 	<h1>{% trans '404 error' %}</h1>
-	<img src='{% absstatic "ldt/img/404_gandalf.gif" %}' alt="Gif 404" style="display:block;margin:auto;vertical-align:middle;"/>
+	<img src='{% static "ldt/img/404_gandalf.gif" %}' alt="Gif 404" style="display:block;margin:auto;vertical-align:middle;"/>
 	<br>
 	<h1>{% trans "Sorry, we couldn't find your page" %}</h1>
 </div>
--- a/src/ldt/ldt/templates/admin/cms_change_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/cms_change_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,5 @@
 {% extends "admin/page_change_form.html" %}
-{% load i18n admin_modify adminmedia cms_tags cms_admin %}
+{% load i18n admin_modify static cms_tags cms_admin %}
 {% block js_import %}
 {% endblock %}
 {% block extrahead %}
@@ -7,7 +7,7 @@
 {% if not add %}
 	<script type="text/javascript" src="{{ CMS_MEDIA_URL }}js/change_form.js"></script>
 {% endif %}
-<script type="text/javascript" src="{% admin_media_prefix %}js/urlify.js"></script>
+<script type="text/javascript" src="{% static 'admin/js/urlify.js' %}"></script>
 
 {% if add %}
 	<script type="text/javascript">
--- a/src/ldt/ldt/templates/admin/cms_change_list.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/cms_change_list.html	Fri May 24 21:55:08 2013 +0200
@@ -1,5 +1,5 @@
 {% extends "admin/page_change_list.html" %}
-{% load adminmedia admin_list i18n cms_admin js %}
+{% load admin_list i18n cms_admin js %}
 {% block bodyclass %}change-list{% endblock %}
 
 {% if not is_popup %}{% block breadcrumbs %}
--- a/src/ldt/ldt/templates/admin/index.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/index.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% extends "admin/base_site.html" %}
 {% load i18n %}
 
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load static %}{% static 'admin/css/dashboard.css' %}" />{% endblock %}
 
 {% block coltype %}colMS{% endblock %}
 
@@ -46,14 +46,14 @@
         	<caption>Import</caption>
         	<tr>
         	<th>        	
-        	<a href="{% url ldt.ldt_utils.views.importFile %}">Import an ldt</a>
+        	<a href="{% url 'ldt.ldt_utils.views.importFile' %}">Import an ldt</a>
         	</th>
         	<td>&nbsp;
         	</td>
             </tr>
         	<tr>
             <th>            
-            <a href="{% url ldt.ldt_utils.views.reindex %}">Reindex</a>
+            <a href="{% url 'ldt.ldt_utils.views.reindex' %}">Reindex</a>
             </th>
             <td>&nbsp;
             </td>         
--- a/src/ldt/ldt/templates/admin/page_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/page_base.html	Fri May 24 21:55:08 2013 +0200
@@ -3,8 +3,8 @@
 
 {% block css_import %}
 {{ block.super }}
-    <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/page_base.css{% endblock %}" />
-    {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% admin_media_prefix %}css/rtl.css{% endblock %}" />{% endif %}
+    <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% load static %}{% static 'admin/css/page_base.css' %}{% endblock %}" />
+    {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static 'admin/css/rtl.css' %}{% endblock %}" />{% endif %}
 {% endblock %}
 
 
@@ -16,7 +16,7 @@
     <!-- END Header -->
     {% block breadcrumb %}
         <li></li>
-        <li><a href="{% url ldt.userpanel.views.space %}">{% trans "Space" %}</a></li>
+        <li><a href="{% url 'ldt.userpanel.views.space' %}">{% trans "Space" %}</a></li>
         <li>{% trans "Pages" %}</li>
     {% endblock %}
     
--- a/src/ldt/ldt/templates/admin/page_change_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/page_change_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,12 +1,12 @@
 {% extends "admin/page_base_site.html" %}
-{% load i18n admin_modify adminmedia %}
+{% load i18n admin_modify static %}
 
 {% block extrahead %}{{ block.super }}
 <script type="text/javascript" src="../../../jsi18n/"></script>
 {{ media }}
 {% endblock %}
 
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static 'admin/css/forms.css' %}" />{% endblock %}
 
 {% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %}
 
--- a/src/ldt/ldt/templates/admin/page_change_list.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/page_change_list.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,11 @@
 {% extends "admin/page_base_site.html" %}
-{% load adminmedia admin_list i18n %}
+{% load static admin_list i18n %}
 
 {% block extrastyle %}
   {{ block.super }}
-  <link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/changelists.css" />
+  <link rel="stylesheet" type="text/css" href="{% static 'admin/css/changelists.css' %}" />
   {% if cl.formset %}
-    <link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />
+    <link rel="stylesheet" type="text/css" href="{% static 'admin/css/forms.css' %}" />
     <script type="text/javascript" src="../../jsi18n/"></script>
   {% endif %}
   {{ media }}
--- a/src/ldt/ldt/templates/admin/page_index.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/page_index.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% extends "admin/page_base_site.html" %}
 {% load i18n %}
 
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css" />{% endblock %}
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load static %}{% static 'admin/css/dashboard.css' %}" />{% endblock %}
 
 {% block coltype %}colMS{% endblock %}
 
--- a/src/ldt/ldt/templates/admin/page_login.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/admin/page_login.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% extends "admin/page_base_site.html" %}
 {% load i18n %}
 
-{% block extrastyle %}{% load adminmedia %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/login.css" />{% endblock %}
+{% block extrastyle %}{% load static %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static 'admin/css/login.css' %}" />{% endblock %}
 
 {% block bodyclass %}{% endblock %}
 
@@ -26,8 +26,8 @@
             <td><input type="hidden" name="this_is_the_login_form" value="1" /></td>
         </tr>
         <tr>
-            <td><a href="{% url registration.views.register  %}" >{% trans "Create an account" %}</a>
-                <a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "Forget password?" %}</a>
+            <td><a href="{% url 'registration.views.register'  %}" >{% trans "Create an account" %}</a>
+                <a href="{% url 'django.contrib.auth.views.password_reset'  %}" >{% trans "Forget password?" %}</a>
             </td>
             <td><label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" /></td>
         </tr>
--- a/src/ldt/ldt/templates/base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-{% load absstatic %}
+{% load static %}
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 {% block html_declare %}
 <html lang="en">
@@ -6,7 +6,7 @@
 
 <head>
     <title>{% if user.is_authenticated %}Hello {{ user }}{% else %}Please login{% endif %}</title>
-    <link rel="stylesheet" type="text/css" media="screen"  href='{% absstatic "ldt/css/socialauth.css" %}' />
+    <link rel="stylesheet" type="text/css" media="screen"  href='{% static "ldt/css/socialauth.css" %}' />
     {% block extra_head %}
     {% endblock %}
 </head>
@@ -20,9 +20,9 @@
             FB.init({appId: '{{ FACEBOOK_APP_ID }}', status: true, cookie: true, xfbml: true});
             FB.Event.subscribe('auth.sessionChange', function(response) {
               if (response.session) {
-                  window.location = '{% url socialauth_facebook_login_done %}';
+                  window.location = '{% url 'socialauth_facebook_login_done' %}';
               } else {
-                  //window.location = '{% url socialauth_social_logout %}';
+                  //window.location = '{% url 'socialauth_social_logout' %}';
               }
             });
           };
--- a/src/ldt/ldt/templates/cms/admin/cms/page/change_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/cms/admin/cms/page/change_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,11 @@
 {% extends "admin/base_site.html" %}
-{% load i18n admin_modify adminmedia cms_admin %}
+{% load i18n admin_modify static cms_admin %}
 {% block extrahead %}{{ block.super }}
 <script type="text/javascript" src="../../../../jsi18n/"></script>
 {% for js in javascript_imports %}{% include_admin_script js %}{% endfor %}
 {% endblock %}
-{% block stylesheet %}{% admin_media_prefix %}css/forms.css" />
-<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}cms/admin.css{% endblock %}
+{% block stylesheet %}{% static 'admin/css/forms.css' %}" />
+<link rel="stylesheet" type="text/css" href="{% static 'admin/cms/admin.css' %}{% endblock %}
 {% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %}
 {% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
 {% block userlinks %}<a href="../../../doc/">{% trans 'Documentation' %}</a> / <a href="../../../password_change/">{% trans 'Change password' %}</a> / <a href="../../../logout/">{% trans 'Log out' %}</a>{% endblock %}
--- a/src/ldt/ldt/templates/ldt/ldt_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/ldt/ldt_base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,22 +1,22 @@
 {% extends "ldt/ldt_raw_base.html" %}
 {% load i18n %}
 {% load logintag %}
+{% load static %}
 {% load navigation %}
-{% load absstatic %}
 {% load thumbnail %}
 
 {% block js_import %}
 	<script type="text/javascript">
-		var project_load_src = '{% absstatic "ldt/img/ajax-loader-transp.gif" %}'; // Required for search bar icon in projectscontents.js
+		var project_load_src = '{% static "ldt/img/ajax-loader-transp.gif" %}'; // Required for search bar icon in projectscontents.js
 	</script>
 	
     {{ block.super }}
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.nyroModal.min.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.nyroModal.min.js" %}'></script>
     <!--[if IE 6]>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.nyroModal-ie6.min.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.nyroModal-ie6.min.js" %}'></script>
     <![endif]-->
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.qtip.min.js" %}'></script>
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.validate.js" %}' ></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.qtip.min.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.validate.js" %}' ></script>
 {% endblock %}
 
 {% block js_declaration %}
@@ -72,10 +72,10 @@
         
 {% block css_import %}
     {{ block.super }}
-    <link rel="stylesheet" href='{% absstatic "ldt/css/tabs.css" %}' type="text/css" media="screen, projection" />
-    <link rel="stylesheet" href='{% absstatic "ldt/css/nyroModal.css" %}' type="text/css"/>
-    <link rel="stylesheet" href='{% absstatic "ldt/js/login_ajax/login_ajax.css" %}' type="text/css"/>
-    <link rel="stylesheet" href='{% absstatic "ldt/css/jquery.qtip.min.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/tabs.css" %}' type="text/css" media="screen, projection" />
+    <link rel="stylesheet" href='{% static "ldt/css/nyroModal.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/js/login_ajax/login_ajax.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/jquery.qtip.min.css" %}' type="text/css"/>
 {% endblock %}
     
 {% block body %}
@@ -84,18 +84,18 @@
     <div id="header">      
         {% block header %}
         <div id="header_left">
-            <p><a href="{% url ldt.ldt_utils.views.workspace.home %}">{% block base_title %}{% trans "header_title" %}{% endblock %}</a></p>
+            <p><a href="{% url 'ldt.ldt_utils.views.workspace.home' %}">{% block base_title %}{% trans "header_title" %}{% endblock %}</a></p>
         </div>
         <div id="loginstate" >
 	        {% if user.is_staff %}
-	        	<a href="{% url admin:index %}" title="{% trans "Link to admin" %}">{% trans "Staff" %}</a>|
+	        	<a href="{% url 'admin:index' %}" title="{% trans "Link to admin" %}">{% trans "Staff" %}</a>|
 	        {% endif %}
             {% if user.is_authenticated %}
-            <a href="{% url front_home %}" title="{% trans "front link" %}">{% trans "front link" %}</a> |            
-            <a href="{% url ldt.user.views.profile %}"  title="{% trans "Profile change" %}">
-              {% thumbnail user.get_profile.image "20x20" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
+            <a href="{% url 'front_home' %}" title="{% trans "front link" %}">{% trans "front link" %}</a> |            
+            <a href="{% url 'ldt.user.views.profile' %}"  title="{% trans "Profile change" %}">
+              {% thumbnail user.image "20x20" crop="center" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
               {{user.username}}</a>
-            |&nbsp;<a href="{% url ldt.user.views.logout_view %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
+            |&nbsp;<a href="{% url 'ldt.user.views.logout_view' %}" title="{% trans "Log out" %}">{% trans "Log out" %}</a>
             {% endif %}
         </div>
         {% endblock %}
@@ -106,11 +106,11 @@
             <div class="block span-24 last">
                 <div id="tabsdiv" class="block span-20">
                 {% if user.is_authenticated %}
-                {% url ldt.ldt_utils.views.workspace.home as workspace_url %}
-                {% url ldt.ldt_utils.views.workspace.groups as groups_url %}
-                {% url ldt.ldt_utils.views.workspace.published_project as published_project_url %}
-                {% url ldt.user.views.profile  as profile_url %}
-                {% url ldt.ldt_utils.views.workspace.search_form  as search_url %}
+                {% url 'ldt.ldt_utils.views.workspace.home' as workspace_url %}
+                {% url 'ldt.ldt_utils.views.workspace.groups' as groups_url %}
+                {% url 'ldt.ldt_utils.views.workspace.published_project' as published_project_url %}
+                {% url 'ldt.user.views.profile'  as profile_url %}
+                {% url 'ldt.ldt_utils.views.workspace.search_form'  as search_url %}
                     <ul class="tabs">
                         <li class='{% active request "active" workspace_url %}'><a href="{{ workspace_url }}" title="{% trans "home" %}">{% trans "home" %}</a></li>
                         <li class='{% active request "active" groups_url %}'><a href="{{ groups_url }}" title="{% trans "home" %}">{% trans "My groups" %}</a></li>
@@ -124,7 +124,7 @@
                 </div>
                 {% if user.is_authenticated %}
 		        <div class="block span-4 last">
-		            <form method="get" id="quick_search_form" action="{% url ldt.ldt_utils.views.workspace.search_index %}" title="{% trans "search"%}" accept-charset="utf-8">
+		            <form method="get" id="quick_search_form" action="{% url 'ldt.ldt_utils.views.workspace.search_index' %}" title="{% trans "search"%}" accept-charset="utf-8">
 					<input type="text" name="search" id="id_search" size="16"/>
 					<input type='hidden' name='field' value='all' />
 					<input type="submit" class="quick_search_submit" value="" />					
@@ -141,7 +141,7 @@
     <div id="footer" class="span-24 last">
         {% block footer %}
         <div class="footer_img">
-        <a href="http://www.iri.centrepompidou.fr"><img src='{% absstatic "ldt/img/logo_IRI_footer.png" %}' alt="Logo IRI" /></a>
+        <a href="http://www.iri.centrepompidou.fr"><img src='{% static "ldt/img/logo_IRI_footer.png" %}' alt="Logo IRI" /></a>
         </div>
         <div style="float: right; text-align: right;" class="small" id="copyright_version">
         	<div>©2011 <a style="text-decoration: none; color: #4F5155;" href="http://www.iri.centrepompidou.fr">IRI</a></div>
--- a/src/ldt/ldt/templates/ldt/ldt_raw_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/ldt/ldt_raw_base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,7 +1,7 @@
 {% load i18n %}
 {% load logintag %}
 {% load navigation %}
-{% load absstatic %}
+{% load static %}
 {% load analytics %}
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
@@ -11,28 +11,28 @@
 {% block head %}
 	<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
     <meta http-equiv="content-language" content="{{LANGUAGE_CODE}}" />
-    <link rel="SHORTCUT ICON" href='{% absstatic "ldt/img/favicon.ico" %}' />
+    <link rel="SHORTCUT ICON" href='{% static "ldt/img/favicon.ico" %}' />
     <title>{% block title %}{% trans "page_title" %}{% endblock %}</title>
     {% block js_import %}
-    <script type="text/javascript" src='{% absstatic "ldt/js/jquery.min.js" %}'></script>
+    <script type="text/javascript" src='{% static "ldt/js/jquery.min.js" %}'></script>
     {% endblock %}
     
     {% block css_declaration %}
     <style type="text/css">
 		.rounded {
-			behavior:url('{% absstatic "ldt/css/border-radius.htc" %}');
+			behavior:url('{% static "ldt/css/border-radius.htc" %}');
 		}
 	</style>
 	{% endblock %}
     
     {% block css_import %}
     
-    <link rel="stylesheet" href='{% absstatic "ldt/css/blueprint/screen.css" %}' type="text/css" media="screen, projection" />
-    <link rel="stylesheet" href='{% absstatic "ldt/css/blueprint/print.css" %}' type="text/css" media="print" />
+    <link rel="stylesheet" href='{% static "ldt/css/blueprint/screen.css" %}' type="text/css" media="screen, projection" />
+    <link rel="stylesheet" href='{% static "ldt/css/blueprint/print.css" %}' type="text/css" media="print" />
     <!--[if lt IE 8]>
     <link rel="stylesheet" href="{{BASE_URL}}static/css/blueprint/ie.css" type="text/css" media="screen, projection" />
     <![endif]-->
-    <link rel="stylesheet" href='{% absstatic "ldt/css/style.css" %}' type="text/css"/>
+    <link rel="stylesheet" href='{% static "ldt/css/style.css" %}' type="text/css"/>
     {% endblock %}
     
     {% block js_declaration %}
--- a/src/ldt/ldt/templates/openid/index.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/openid/index.html	Fri May 24 21:55:08 2013 +0200
@@ -30,7 +30,7 @@
 <br/>
 
 <!-- Simple OpenID Selector -->
-<form action="{% url socialauth_openid_login %}" method="get" id="openid_form">
+<form action="{% url 'socialauth_openid_login' %}" method="get" id="openid_form">
 	<input type="hidden" name="action" value="verify" />
 
 	<fieldset>
--- a/src/ldt/ldt/templates/socialauth/login_page.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/socialauth/login_page.html	Fri May 24 21:55:08 2013 +0200
@@ -15,7 +15,7 @@
 	  openid.init('openid_identifier');
 	});
 	//function facebook_onlogin(){
-    //  window.location = "{% url socialauth_facebook_login_done %}"
+    //  window.location = "{% url 'socialauth_facebook_login_done' %}"
 	//}
   </script>
   <!-- /Simple OpenID Selector -->
@@ -28,11 +28,11 @@
 
 {% block main_content %}
 {% if user.is_authenticated %}
-  <p>You are already logged in. <a href="{% url socialauth_social_logout %}">Logout</a>?</p>
+  <p>You are already logged in. <a href="{% url 'socialauth_social_logout' %}">Logout</a>?</p>
 {% else %}
 <div id="login">
 
-<form action="{% url socialauth_openid_login %}" method="get" id="openid_form">
+<form action="{% url 'socialauth_openid_login' %}" method="get" id="openid_form">
   <input type="hidden" name="action" value="verify" />
   
   <fieldset>
@@ -49,15 +49,15 @@
 		{% endif %}
 		
 		<div id="linkedin">
-		  <a href="{% url socialauth_linkedin_login %}?next={{ next }}" id="linkedin_login_link" class="openid_large_btn linkedin"></a>
+		  <a href="{% url 'socialauth_linkedin_login' %}?next={{ next }}" id="linkedin_login_link" class="openid_large_btn linkedin"></a>
 		</div>
 	  
 		<div id="twitter">
-		  <a href="{% url socialauth_twitter_login %}?next={{ next }}" id="twitter_login_link" class="openid_large_btn twitter"></a>
+		  <a href="{% url 'socialauth_twitter_login' %}?next={{ next }}" id="twitter_login_link" class="openid_large_btn twitter"></a>
 		</div>
 	  
 		<!--<div id="yahoo">
-		  <a href="{% url socialauth_yahoo_login %}" id="yahoo_login_link" class="openid_large_btn yahoo"></a>
+		  <a href="{% url 'socialauth_yahoo_login' %}" id="yahoo_login_link" class="openid_large_btn yahoo"></a>
 		</div>-->
 	  </div>
 
--- a/src/ldt/ldt/templates/socialauth/signin_complete.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templates/socialauth/signin_complete.html	Fri May 24 21:55:08 2013 +0200
@@ -3,6 +3,6 @@
 {% block main_content %}
 
 You have signed in.<br/>
-<a onclick="FB.logout(); window.location='{% url socialauth_social_logout %}';" href="#">Logout</a>
+<a onclick="FB.logout(); window.location='{% url 'socialauth_social_logout' %}';" href="#">Logout</a>
 
 {% endblock %}
--- a/src/ldt/ldt/templatetags/absstatic.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templatetags/absstatic.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,6 @@
 from django import template
-from django.contrib.staticfiles.storage import staticfiles_storage
 from django.contrib.sites.models import Site
-from django.template import Library
-import logging
+from django.contrib.staticfiles.storage import staticfiles_storage
 import urlparse
 
 register = template.Library()
--- a/src/ldt/ldt/templatetags/absurl.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templatetags/absurl.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,7 @@
-import urlparse
+from django.contrib.sites.models import Site
 from django.template import Library
 from django.template.defaulttags import URLNode, url
-from django.contrib.sites.models import Site
-import logging
+import urlparse
 
 
 register = Library()
--- a/src/ldt/ldt/templatetags/analytics.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templatetags/analytics.py	Fri May 24 21:55:08 2013 +0200
@@ -11,10 +11,10 @@
 
 register = template.Library()
 
-def __clean_token(str, tag_name):
-    if not (str[0] == str[-1] and str[0] in ('"', "'")):
+def __clean_token(str_t, tag_name):
+    if not (str_t[0] == str_t[-1] and str_t[0] in ('"', "'")):
         raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name
-    return str[1:-1]
+    return str_t[1:-1]
 
 def do_get_analytics(parser, token):
     code = None
--- a/src/ldt/ldt/templatetags/front_tags.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/templatetags/front_tags.py	Fri May 24 21:55:08 2013 +0200
@@ -22,18 +22,18 @@
         arg = "::"
     if arg=="::" or arg=="h" or arg==":" :
         hours = sec//3600
-        min = (sec - (hours * 3600))//60
-        if min<10:
-            min_str = "0" + str(min)
+        minute = (sec - (hours * 3600))//60
+        if minute<10:
+            min_str = "0" + str(minute)
         else:
-            min_str = str(min)
+            min_str = str(minute)
         if (arg=="::" or arg==":") and hours<10 :
             hours_str = "0" + str(hours)
         else :
             hours_str = str(hours)
         if arg=="h" or arg==":" :
             return hours_str + arg + min_str
-        sec = (sec - (hours * 3600) - (min*60))
+        sec = (sec - (hours * 3600) - (minute*60))
         if sec<10:
             sec_str = "0" + str(sec)
         else:
--- a/src/ldt/ldt/text/migrations/0001_initial.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/migrations/0001_initial.py	Fri May 24 21:55:08 2013 +0200
@@ -1,15 +1,13 @@
 # encoding: utf-8
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 class Migration(SchemaMigration):
 
     def forwards(self, orm):
         
         # Adding model 'Annotation'
-        db.create_table('text_annotation', (
+        db.create_table('text_annotation', (  # @UndefinedVariable
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
             ('external_id', self.gf('django.db.models.fields.CharField')(default=u'5393f930-c975-11e0-bf36-58b035f6b93d', unique=True, max_length=255)),
             ('uri', self.gf('django.db.models.fields.CharField')(max_length=1024)),
@@ -23,13 +21,13 @@
             ('creation_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
             ('update_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
         ))
-        db.send_create_signal('text', ['Annotation'])
+        db.send_create_signal('text', ['Annotation'])  # @UndefinedVariable
 
 
     def backwards(self, orm):
         
         # Deleting model 'Annotation'
-        db.delete_table('text_annotation')
+        db.delete_table('text_annotation')  # @UndefinedVariable
 
 
     models = {
--- a/src/ldt/ldt/text/migrations/0002_auto__chg_field_annotation_external_id.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/migrations/0002_auto__chg_field_annotation_external_id.py	Fri May 24 21:55:08 2013 +0200
@@ -1,8 +1,6 @@
 # -*- coding: utf-8 -*-
-import datetime
 from south.db import db
 from south.v2 import SchemaMigration
-from django.db import models
 
 
 class Migration(SchemaMigration):
@@ -10,12 +8,12 @@
     def forwards(self, orm):
 
         # Changing field 'Annotation.external_id'
-        db.alter_column('text_annotation', 'external_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))
+        db.alter_column('text_annotation', 'external_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))  # @UndefinedVariable
 
     def backwards(self, orm):
 
         # Changing field 'Annotation.external_id'
-        db.alter_column('text_annotation', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))
+        db.alter_column('text_annotation', 'external_id', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True))  # @UndefinedVariable
 
     models = {
         'text.annotation': {
--- a/src/ldt/ldt/text/models.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/models.py	Fri May 24 21:55:08 2013 +0200
@@ -2,7 +2,7 @@
 from django.utils.translation import ugettext_lazy as _
 from tagging.models import Tag
 from utils import generate_uuid
-import lxml
+import lxml.etree
 import tagging.fields
 #from django.core.management.validation import max_length
 
@@ -74,8 +74,8 @@
         
         
         textannotation = lxml.etree.SubElement(iri, 'text-annotation')
-        id = lxml.etree.SubElement(textannotation, 'id')
-        id.text = self.external_id
+        id_node = lxml.etree.SubElement(textannotation, 'id')
+        id_node.text = self.external_id
         uri = lxml.etree.SubElement(textannotation, 'uri')
         uri.text = self.uri
         
--- a/src/ldt/ldt/text/tests/oauth_tests.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/tests/oauth_tests.py	Fri May 24 21:55:08 2013 +0200
@@ -8,7 +8,7 @@
 from oauth_provider.consts import OUT_OF_BAND
 from oauth_provider.models import Consumer, Token
 import datetime
-import lxml
+import lxml.etree
 import time
 import urlparse
 
--- a/src/ldt/ldt/text/urls.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/urls.py	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, url
+from django.conf.urls import patterns, url
 
 # Uncomment the next two lines to enable the admin:
 # from django.contrib import admin
--- a/src/ldt/ldt/text/utils.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/utils.py	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,5 @@
-from django.conf import settings
+import ldt.indexation
 import uuid
-import ldt.indexation
 
 __BOOLEAN_DICT = {
     'false':False,
@@ -11,12 +10,12 @@
     'f':False
 }
 
-def boolean_convert(bool):
-    if bool is None:
+def boolean_convert(b):
+    if b is None:
         return False
-    if bool is True or bool is False:
-        return bool
-    key = str(bool).lower()
+    if b is True or b is False:
+        return b
+    key = str(b).lower()
     return __BOOLEAN_DICT.get(key, False)
 
 
--- a/src/ldt/ldt/text/views.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/text/views.py	Fri May 24 21:55:08 2013 +0200
@@ -6,12 +6,12 @@
 from ldt.text.utils import TextSearch, generate_uuid
 from oauth_provider.decorators import oauth_required
 from urllib2 import urlparse
-import lxml
+import lxml.etree
 
 
 ## 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):
+def filter_annotation(request, uri=None, filter=None, limit=None, creator=None):  # @ReservedAssignment
     query = Q()    
     
     if request.GET.get('uri'):
@@ -53,9 +53,9 @@
     
     id_nodes = doc.xpath("/iri/text-annotation/id/text()")
     if id_nodes:
-        id = unicode(id_nodes[0])
+        id_n = unicode(id_nodes[0])
     else:
-        id = generate_uuid()
+        id_n = generate_uuid()
         
     uri = unicode(doc.xpath("/iri/text-annotation/uri/text()")[0])
 
@@ -98,7 +98,7 @@
         contributor = None
 
     try:
-        annotation = Annotation.create_annotation(external_id=id, uri=uri, tags=tags, title=title, description=desc, text=text, color=color, creator=creator, contributor=contributor)
+        annotation = Annotation.create_annotation(external_id=id_n, uri=uri, tags=tags, title=title, description=desc, text=text, color=color, creator=creator, contributor=contributor)
         annotation.save()
         return HttpResponse(lxml.etree.tostring(annotation.serialize(), pretty_print=True), mimetype="text/xml;charset=utf-8")
     except IntegrityError:
@@ -108,7 +108,7 @@
     
 ## Gets an annotation from its id
 ## Returns the xml-structured annotation
-def get_annotation(request, id):
+def get_annotation(request, id):  # @ReservedAssignment
     try:
         annot = Annotation.objects.get(external_id=id)
     except Annotation.DoesNotExist:
@@ -123,7 +123,7 @@
 ## Returns an empty xml-structured annotation
 @oauth_required
 @csrf_exempt
-def delete_annotation(request, id):
+def delete_annotation(request, id):  # @ReservedAssignment
     try:
         annot = Annotation.objects.get(external_id=id)
         annot.delete()
@@ -137,7 +137,7 @@
 ## Returns the xml-structured updated annotation
 @oauth_required
 @csrf_exempt
-def update_annotation(request, id):
+def update_annotation(request, id):  # @ReservedAssignment
     
     put_data = {}
     if request.GET != {}:
--- a/src/ldt/ldt/user/admin.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/admin.py	Fri May 24 21:55:08 2013 +0200
@@ -1,14 +1,8 @@
-from copy import deepcopy #@UnresolvedImport
 from django.contrib import admin
-from django.contrib.auth.admin import UserAdmin
-from django.contrib.auth.models import Group, User
-from django.utils.translation import ugettext as _
-from forms import LdtForm
+from django.contrib.auth.models import Group
 from guardian.admin import GuardedModelAdmin
-from models import Ldt, UserProfile, GroupProfile
-from tastypie.admin import ApiKeyInline
-from tastypie.models import ApiAccess, ApiKey
-
+from ldt.user.models import LdtUser
+from models import GroupProfile
 
 class GroupProfileInline(admin.StackedInline):
     model = GroupProfile
@@ -16,53 +10,11 @@
 class GroupAdmin(GuardedModelAdmin):
     inlines = [GroupProfileInline, ]
 
-class UserProfileInline(admin.StackedInline):
-    model = UserProfile
-    
-class UserProfileAdmin(UserAdmin):
-    def add_view(self, *args, **kwargs):
-        self.inlines = []
-        return super(UserProfileAdmin, self).add_view(*args, **kwargs)
-    
-    def change_view(self, *args, **kwargs):
-        self.inlines = [UserProfileInline]
-        return super(UserAdmin, self).change_view(*args, **kwargs)
-
+class LdtUserAdmin(admin.ModelAdmin):
+    pass
 
-class LdtAdmin(UserProfileAdmin):    
-    list_display = ('username', 'email', 'first_name', 'last_name')
-    
-    fieldsets = [
-        (None, {'fields': ('username', ('password1', 'password2'))}),
-        (_('User details'), {'fields': (('first_name', 'last_name'), 'email')}),
-        (_('Groups'), {'fields': ('groups',)}),
-        (_('Permissions'), {'fields': ('is_staff', 'user_permissions')}),
-    ]    
-    form = LdtForm
-    model = Ldt
-    filter_horizontal = ('user_permissions',)
-    inlines = [UserProfileInline, ApiKeyInline]
-    
-    def get_fieldsets(self, request, obj=None): 
-        fieldsets = deepcopy(self.fieldsets)
-        if not '/add' in request.path:
-            fieldsets[0] = (None, {'fields': ('username',)})
-            fieldsets.append((_('Password'), {'fields': ('password1', 'password2'), 'classes': ('collapse',)}))
-        return fieldsets
-        
-    def add_view(self, request):
-        return super(UserAdmin, self).add_view(request)  
-    
-    
 
 admin.site.unregister(Group)
 admin.site.register(Group, GroupAdmin)
 
-admin.site.unregister(Ldt) 
-admin.site.register(Ldt, LdtAdmin)
-
-admin.site.register(ApiKey)
-admin.site.register(ApiAccess)
-
-admin.site.unregister(User)
-admin.site.register(User, UserProfileAdmin)
+admin.site.register(LdtUser, LdtUserAdmin)
\ No newline at end of file
--- a/src/ldt/ldt/user/forms.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/forms.py	Fri May 24 21:55:08 2013 +0200
@@ -1,16 +1,17 @@
 from django import forms
 from django.conf import settings
+from django.contrib.auth import get_user_model
 from django.contrib.auth.forms import UserCreationForm, UserChangeForm
-from django.contrib.auth.models import User
+from django.contrib.auth.models import Group
 from django.forms.util import ErrorList
 from django.utils.translation import gettext as _
-from models import Ldt
 
+User = get_user_model()
 
 class LdtForm(UserCreationForm):
         
     class Meta:
-        model = Ldt
+        model = User
         
     def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                  initial=None, error_class=ErrorList, label_suffix=':',
@@ -113,11 +114,9 @@
         super(LanguageChangeForm, self).__init__(*args, **kwargs)
         
     def save(self):
-        profile = self.user.get_profile()
-        profile.language = self.cleaned_data['language']
-        profile.save()
+        self.user.language = self.cleaned_data['language']
+        self.user.save()
         return self.user
-        
            
 class PictureForm(forms.Form):
     image=forms.ImageField(label=_("Profile picture"), required=False)
@@ -141,9 +140,12 @@
             return None
         
         class_name = self.model.__class__.__name__
-        if class_name == 'User' or class_name == 'Group':
+        if isinstance(self.model, Group):
             instance_name = "%s" % self.model.id
             img_container = self.model.get_profile()
+        if isinstance(self.model, User):
+            instance_name = "%s" % self.model.id
+            img_container = self.model
         elif class_name == 'Content':
             instance_name = self.model.iri_id
             img_container = self.model
@@ -159,5 +161,4 @@
         img_container.image = self.cleaned_data['image']
         img_container.save()
         return self.model   
-   
         
\ No newline at end of file
--- a/src/ldt/ldt/user/migrations/0005_add_permission_owner_group.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/migrations/0005_add_permission_owner_group.py	Fri May 24 21:55:08 2013 +0200
@@ -1,20 +1,14 @@
-#@PydevCodeAnalysisIgnore
 # encoding: utf-8
-import datetime
-from south.db import db
+from django.contrib.auth.models import Permission
+from django.contrib.contenttypes.models import ContentType
 from south.v2 import DataMigration
-from django.db import models
-from django.contrib.auth.models import User
-from ldt.user.models import UserProfile 
-from django.contrib.auth.models import Group, Permission
-from django.contrib.contenttypes.models import ContentType
 
 
 class Migration(DataMigration):
 
     def forwards(self, orm):
         content_type = ContentType.objects.get(app_label='auth', model='group')
-        permission = Permission.objects.create(codename='is_owner_group',
+        Permission.objects.create(codename='is_owner_group',
                                                name='Can add/delete admins to the group',
                                                content_type=content_type)        
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0009_rename_auth_user_to_user_ldt_user.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        db.rename_table('auth_user', 'user_ldtuser')  # @UndefinedVariable
+        db.rename_table('auth_user_groups', 'user_ldtuser_groups')  # @UndefinedVariable
+        db.rename_column('user_ldtuser_groups', 'user_id', 'ldtuser_id')  # @UndefinedVariable
+        db.rename_table('auth_user_user_permissions', 'user_ldtuser_user_permissions')  # @UndefinedVariable
+        db.rename_column('user_ldtuser_user_permissions', 'user_id', 'ldtuser_id')  # @UndefinedVariable
+
+    def backwards(self, orm):
+        db.rename_table('user_ldt_user', 'auth_user')  # @UndefinedVariable
+        db.rename_table('user_ldtuser_groups', 'auth_user_groups')  # @UndefinedVariable
+        db.rename_column('auth_user_groups', 'ldtuser_id', 'user_id')  # @UndefinedVariable
+        db.rename_table('user_ldtuser_user_permissions', 'auth_user_user_permissions')  # @UndefinedVariable
+        db.rename_column('auth_user_user_permissions', 'ldtuser_id', 'user_id')  # @UndefinedVariable
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '200'})
+        },
+        u'user.ldt': {
+            'Meta': {'object_name': 'Ldt', '_ormbases': [u'auth.User']},
+            u'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'user.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'})
+        }
+    }
+
+    complete_apps = ['user']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0010_auto__add_field_ldtuser_language__add_field_ldtuser_image.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'LdtUser.language'
+        db.add_column(u'user_ldtuser', 'language',  # @UndefinedVariable
+                      self.gf('django.db.models.fields.CharField')(default='fr', max_length=2),
+                      keep_default=False)
+
+        # Adding field 'LdtUser.image'
+        db.add_column(u'user_ldtuser', 'image',  # @UndefinedVariable
+                      self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/users/user_default_icon.png', max_length=200),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'LdtUser.language'
+        db.delete_column(u'user_ldtuser', 'language')  # @UndefinedVariable
+
+        # Deleting field 'LdtUser.image'
+        db.delete_column(u'user_ldtuser', 'image')  # @UndefinedVariable
+
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '200'})
+        },
+        u'user.ldt': {
+            'Meta': {'object_name': 'Ldt', '_ormbases': [u'auth.User']},
+            u'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'user.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'})
+        }
+    }
+
+    complete_apps = ['user']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0011_copy_image_language_ldt_user.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+from south.v2 import DataMigration
+
+class Migration(DataMigration):
+
+    def forwards(self, orm):
+        for userprofile in orm['user.userprofile'].objects.all():
+            user = orm['user.ldtuser'].objects.get(id=userprofile.user_id)
+            user.language = userprofile.language
+            user.image = userprofile.image
+            user.save()
+
+    def backwards(self, orm):
+        for user in orm['user.userprofile'].objects.all():
+            userprofile = orm['user.ldtprofile'].objects.get(user_id=user.id)
+            userprofile.language = user.language
+            userprofile.image = user.image
+            userprofile.save()            
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '200'})
+        },
+        u'user.ldt': {
+            'Meta': {'object_name': 'Ldt', '_ormbases': [u'auth.User']},
+            u'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'user.userprofile': {
+            'Meta': {'object_name': 'UserProfile'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'})
+        }
+    }
+
+    complete_apps = ['user']
+    symmetrical = True
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0012_auto__del_userprofile.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting model 'UserProfile'
+        db.delete_table(u'user_userprofile')  # @UndefinedVariable
+
+
+    def backwards(self, orm):
+        # Adding model 'UserProfile'
+        db.create_table(u'user_userprofile', (  # @UndefinedVariable
+            ('image', self.gf('sorl.thumbnail.fields.ImageField')(default='thumbnails/users/user_default_icon.png', max_length=200)),
+            (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('language', self.gf('django.db.models.fields.CharField')(default='fr', max_length=2)),
+            ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
+        ))
+        db.send_create_signal(u'user', ['UserProfile'])  # @UndefinedVariable
+
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'auth.user': {
+            'Meta': {'object_name': 'User'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '200'})
+        },
+        u'user.ldt': {
+            'Meta': {'object_name': 'Ldt', '_ormbases': [u'auth.User']},
+            u'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        }
+    }
+
+    complete_apps = ['user']
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ldt/ldt/user/migrations/0013_auto__del_ldt.py	Fri May 24 21:55:08 2013 +0200
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+from south.db import db
+from south.v2 import SchemaMigration
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting model 'Ldt'
+        db.delete_table(u'user_ldt')  # @UndefinedVariable
+
+
+    def backwards(self, orm):
+        # Adding model 'Ldt'
+        db.create_table(u'user_ldt', (  # @UndefinedVariable
+            (u'user_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True, primary_key=True)),
+        ))
+        db.send_create_signal(u'user', ['Ldt'])  # @UndefinedVariable
+
+
+    models = {
+        u'auth.group': {
+            'Meta': {'object_name': 'Group'},
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        u'auth.permission': {
+            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
+            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+        },
+        u'contenttypes.contenttype': {
+            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+        },
+        u'user.groupprofile': {
+            'Meta': {'object_name': 'GroupProfile'},
+            'description': ('django.db.models.fields.TextField', [], {}),
+            'group': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'profile'", 'unique': 'True', 'to': u"orm['auth.Group']"}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/groups/group_default_icon.png'", 'max_length': '200'})
+        },
+        u'user.ldtuser': {
+            'Meta': {'object_name': 'LdtUser'},
+            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'image': ('sorl.thumbnail.fields.ImageField', [], {'default': "'thumbnails/users/user_default_icon.png'", 'max_length': '200'}),
+            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}),
+            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+        }
+    }
+
+    complete_apps = ['user']
\ No newline at end of file
--- a/src/ldt/ldt/user/models.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/models.py	Fri May 24 21:55:08 2013 +0200
@@ -1,48 +1,38 @@
 from django.conf import settings
-from django.contrib import admin
-from django.contrib.auth.models import User, UserManager, Group
+from django.contrib.auth.models import (AbstractUser, UserManager, Group, 
+    BaseUserManager)
 from django.db import models
 from django.db.models.signals import post_save
+from django.utils import timezone
 from sorl.thumbnail import ImageField
-import datetime
 
-        
-class Ldt(User):
-#    irigroups = models.ManyToManyField(IriGroup, blank=True)
-    
-    class Meta:
-        verbose_name = 'iri user'
-        verbose_name_plural = 'iri users'
-    
-    def __unicode__(self):
-        return self.username
-        
+class LdtUserManager(BaseUserManager):    
 
-class LdtManager(UserManager):
-    def create_user(self, username, email, password=None):
-        "Creates and saves a User with the given username, e-mail and password."
-        now = datetime.datetime.utcnow()
-        new_user = Ldt(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now)
-        if password:
-            new_user.set_password(password)
-        else:
-            new_user.set_unusable_password()
-        new_user.save()
-        new_user.groups.add(Group.objects.get(name=settings.PUBLIC_GROUP_NAME))
-        return new_user   
-    
-    
-class UserProfile (models.Model): 
-    user = models.OneToOneField(User)
-    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])    
-    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/users/", default=settings.DEFAULT_USER_ICON, max_length=200)
+    def create_user(self, username, email=None, password=None, **extra_fields):
+        """
+        Creates and saves a User with the given username, email and password.
+        """
+        now = timezone.now()
+        if not username:
+            raise ValueError('The given username must be set')
+        email = UserManager.normalize_email(email)
+        user = self.model(username=username, email=email,
+                          is_staff=False, is_active=True, is_superuser=False,
+                          last_login=now, date_joined=now, **extra_fields)
 
-    @staticmethod
-    def create_user_profile(sender, instance, created, **kwargs):
-        if created:
-            UserProfile.objects.get_or_create(user=instance)
-            everyone, _ = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)
-            instance.groups.add(everyone)
+        user.set_password(password)
+        user.save(using=self._db)
+        everyone, _ = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME)
+        user.groups.add(everyone)
+        return user
+
+    def create_superuser(self, username, email, password, **extra_fields):
+        u = self.create_user(username, email, password, **extra_fields)
+        u.is_staff = True
+        u.is_active = True
+        u.is_superuser = True
+        u.save(using=self._db)
+        return u
 
 class GroupProfile(models.Model):
     group = models.OneToOneField(Group, primary_key=False, related_name='profile')
@@ -55,20 +45,22 @@
             profile = GroupProfile()
             profile.group_id = instance.id
             profile.save()
-            admins = User.objects.filter(is_superuser=True)
+            admins = LdtUser.objects.filter(is_superuser=True)
             if admins:
-                instance.user_set.add(admins[0])            
+                admin_user = admins[0] 
+                admin_user.groups.add(instance)
+                admin_user.save()            
+
+class LdtUser(AbstractUser):
+    language = models.CharField(max_length=2, default=settings.LANGUAGE_CODE[:2])    
+    image = ImageField(upload_to=settings.MEDIA_ROOT+"thumbnails/users/", default=settings.DEFAULT_USER_ICON, max_length=200)
+    
+    objects = LdtUserManager()
+
             
-# To keep consistency with User.get_profile() method
 def get_profile(self):
     return self.profile
 
-Group.add_to_class("get_profile", get_profile)
-
+Group.add_to_class("get_profile", get_profile)  # @UndefinedVariable
 post_save.connect(GroupProfile.create_group_profile, sender=Group)
-post_save.connect(UserProfile.create_user_profile, sender=User)
-   
-User.objects = LdtManager()
-User.objects.contribute_to_class(User, "objects")
 
-admin.site.register(Ldt)
--- a/src/ldt/ldt/user/templates/ldt/user/change_profile.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/ldt/user/change_profile.html	Fri May 24 21:55:08 2013 +0200
@@ -35,7 +35,7 @@
 {% if msg %}
 <div class="success" style="left:50%; text-align: center;">{{ msg }}</div>
 {% endif %}
-<form method="post" action="{% url ldt.user.views.profile %}">
+<form method="post" action="{% url 'ldt.user.views.profile' %}">
 {% csrf_token %}
 	<table>
 		<tr>
@@ -97,7 +97,7 @@
     </table>    
 </form>
 
-<form method="post" action="{% url ldt.user.views.password %}">
+<form method="post" action="{% url 'ldt.user.views.password' %}">
 {% csrf_token %}
 <table>
 		<tr>
@@ -146,7 +146,7 @@
     </table>
 </form>
 
-<form enctype="multipart/form-data" method="post" action="{% url ldt.user.views.profile_picture %}">
+<form enctype="multipart/form-data" method="post" action="{% url 'ldt.user.views.profile_picture' %}">
 {% csrf_token %}
   <table>
 	<tr>
@@ -154,7 +154,7 @@
 	        <strong>{% trans "Current profile picture" %}</strong>
 	    </td>
 	    <td>
-	        {% thumbnail user.get_profile.image "x100" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
+	        {% thumbnail user.image "x100" format="PNG" as im %}<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" />{% empty %}&nbsp;{% endthumbnail %}
 	    </td>
 	</tr>
     <tr>
--- a/src/ldt/ldt/user/templates/ldt/user/login_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/ldt/user/login_form.html	Fri May 24 21:55:08 2013 +0200
@@ -1,11 +1,10 @@
 {% load i18n %}
-{% load absurl %}
 {# print user's state and form of login #}
 {% block js_import %}
 {{block.super}}
 
     <script language="javascript">
-    var url_login_ajax='{% absurl ldt.user.views.login_ajax %}';
+    var url_login_ajax='{% url "ldt.user.views.login_ajax" %}';
     {% if reload %}    
         var reload=true;    
     {% else %}
@@ -30,9 +29,9 @@
     <ul class="usertool">
         {% if user.is_authenticated %}    
             <li id="user">{{user.username}}</li>
-            <li><a href="{% url ldt.user.views.profile  %}" >{% trans "Profiles" %}</a> </li>
-            <li><a href="{% url ldt.user.views.space %}">{% trans "Space" %}</a></li>
-            <li><a href="{% url ldt.user.views.logout_view %}" >{% trans "Log out" %}</a></li>  
+            <li><a href="{% url 'ldt.user.views.profile'  %}" >{% trans "Profiles" %}</a> </li>
+            <li><a href="{% url 'ldt.user.views.space' %}">{% trans "Space" %}</a></li>
+            <li><a href="{% url 'ldt.user.views.logout_view' %}" >{% trans "Log out" %}</a></li>  
         
         {% else %}     
             <li><a href="#inlineContent" class="login_link">{% trans "Log in" %}</li>
@@ -48,7 +47,7 @@
             <div id="msg"></div>
             <div id="login_form" style="padding: 8px;" method="POST" action="">
                 <div style="float: right; padding-bottom: 8px;">
-                    <a href="{% url registration.views.register  %}" >{% trans "create account" %}</a>
+                    <a href="{% url 'registration.views.register'  %}" >{% trans "create account" %}</a>
                 </div>
                 <dl style="clear: both;">
                     
@@ -66,7 +65,7 @@
                     </dd>
                     <dt/>
                     <dd>
-                        <a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "reset password" %}</a>
+                        <a href="{% url 'django.contrib.auth.views.password_reset'  %}" >{% trans "reset password" %}</a>
                     </dd>
                 </dl>
                 <input class="button" id="submit" type="submit" value="{% trans 'Connection' %}"/>  
--- a/src/ldt/ldt/user/templates/ldt/user/user_base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/ldt/user/user_base.html	Fri May 24 21:55:08 2013 +0200
@@ -2,11 +2,11 @@
 {# this page inherit base html, all pages of ldt inherit this page. #}
 {# all contents are writed in the "iricontent" block  #}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 
 {% block css_import %}
 	{{ block.super }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/workspace.css" %}' type="text/css"/>
+	<link rel="stylesheet" href='{% static "ldt/css/workspace.css" %}' type="text/css"/>
 {% endblock %}
 
 
--- a/src/ldt/ldt/user/templates/registration/activate.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/activate.html	Fri May 24 21:55:08 2013 +0200
@@ -10,5 +10,5 @@
 
 {% block iricontent %}
 <p>{% trans "You have activated your account" %}</p>
-<a href="{% url django.contrib.auth.views.login%}">{% trans "Go back to login page" %}</a>
+<a href="{% url 'django.contrib.auth.views.login'%}">{% trans "Go back to login page" %}</a>
 {% endblock %}
\ No newline at end of file
--- a/src/ldt/ldt/user/templates/registration/base.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/base.html	Fri May 24 21:55:08 2013 +0200
@@ -1,10 +1,10 @@
 {% extends "ldt/user/user_base.html" %}
-{% load absstatic %}
+{% load static %}
 {% block js_import %}
 	{{ block.super }}
 {% endblock %}
 {% block css_import %}
 	{{ block.super }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/registration.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/registration.css" %}' />
 {% endblock %}
 {% block pageclass %}profile{% endblock %}
--- a/src/ldt/ldt/user/templates/registration/login.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/login.html	Fri May 24 21:55:08 2013 +0200
@@ -1,6 +1,6 @@
 {% extends "registration/base.html" %}
 {% load i18n %}
-{% load absstatic %}
+{% load static %}
 {% block js_declaration %}{{ block.super }}
     <script type="text/javascript">
         $(document).ready(function() {
@@ -11,8 +11,8 @@
 
 {% block css_import %}
 	{{ block.super }}
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldt.css" %}' />
-	<link rel="stylesheet" href='{% absstatic "ldt/css/ldtform.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldt.css" %}' />
+	<link rel="stylesheet" href='{% static "ldt/css/ldtform.css" %}' />
 {% endblock %}
 
 
@@ -37,8 +37,8 @@
 	       	<div id="login_links" class="span-12 last">
 		       	<div id="login_links_list" class="span-12 last">
 		       	<ul>
-		       		<li><a href="{% url registration.views.register  %}" >{% trans "Create an account" %}</a></li>
-		       	    <li><a href="{% url django.contrib.auth.views.password_reset  %}" >{% trans "Forget password?" %}</a></li>
+		       		<li><a href="{% url 'registration.views.register'  %}" >{% trans "Create an account" %}</a></li>
+		       	    <li><a href="{% url 'django.contrib.auth.views.password_reset'  %}" >{% trans "Forget password?" %}</a></li>
 	            </ul>
 	            </div>
         	</div>
--- a/src/ldt/ldt/user/templates/registration/password_change_done.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/password_change_done.html	Fri May 24 21:55:08 2013 +0200
@@ -4,7 +4,7 @@
 
 {% block breadcrumb %}
     <li></li>
-    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li><a href="{% url 'ldt.user.views.profile' %}">{% trans "Profiles" %}</a></li>
     <li>{% trans "password change" %}</li>
 {% endblock %}
 
@@ -12,6 +12,6 @@
 {% block iricontent %}
 
 <p>{% trans 'Your password has been changed.' %}</p>
-<a href="{% url ldt.user.views.profile %}">{% trans 'Go back to profiles' %}</a>
+<a href="{% url 'ldt.user.views.profile' %}">{% trans 'Go back to profiles' %}</a>
 
 {% endblock %}
--- a/src/ldt/ldt/user/templates/registration/password_change_form.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/password_change_form.html	Fri May 24 21:55:08 2013 +0200
@@ -10,7 +10,7 @@
 {% endblock %}
 {% block breadcrumb %}
     <li></li>
-    <li><a href="{% url ldt.user.views.profile %}">{% trans "Profiles" %}</a></li>
+    <li><a href="{% url 'ldt.user.views.profile' %}">{% trans "Profiles" %}</a></li>
     <li>{% trans 'Password change' %}</li>
 {% endblock %}
 
--- a/src/ldt/ldt/user/templates/registration/password_reset_email.html	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templates/registration/password_reset_email.html	Fri May 24 21:55:08 2013 +0200
@@ -4,7 +4,7 @@
 
 {% trans "Please go to the following page and choose a new password:" %}
 {% block reset_link %}
-{{ protocol }}://{{ domain }}{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %}
+{{ protocol }}://{{ domain }}{% url 'django.contrib.auth.views.password_reset_confirm' uidb36=uid, token=token %}
 {% endblock %}
 {% trans "Your username, in case you've forgotten:" %} {{ user.username }}
 
--- a/src/ldt/ldt/user/templatetags/logintag.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/templatetags/logintag.py	Fri May 24 21:55:08 2013 +0200
@@ -2,7 +2,7 @@
 
 register = template.Library() 
 
-def login_ajax(user, reload=None):
+def login_ajax(user, reload=None):  # @ReservedAssignment
     return {'user': user, 'reload': reload}
     
 register.inclusion_tag('ldt/user/login_form.html')(login_ajax)
--- a/src/ldt/ldt/user/urls.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/urls.py	Fri May 24 21:55:08 2013 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, url
+from django.conf.urls import patterns, url
 
 urlpatterns = patterns('',
     url(r'^loginAjax/$', 'ldt.user.views.login_ajax'),
--- a/src/ldt/ldt/user/views.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/user/views.py	Fri May 24 21:55:08 2013 +0200
@@ -1,3 +1,4 @@
+from .forms import ProfileForm, LanguageChangeForm, PictureForm
 from django.contrib.auth import authenticate, login, logout
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.forms import PasswordChangeForm
@@ -6,14 +7,12 @@
 from django.template import RequestContext, loader
 from django.utils import simplejson
 from django.utils.translation import ugettext as _
-from forms import ProfileForm, LanguageChangeForm, PictureForm
 from django.views.i18n import set_language
     
 @login_required   
 def profile(request):
     msg = ''
-    profile = request.user.get_profile()
-    user_language = profile.language
+    user_language = request.user.language
     
     if request.method == "POST":
         profile_form = ProfileForm(request.user, request.POST, instance=request.user)
@@ -38,7 +37,7 @@
 @login_required   
 def password(request):
     msg = ''
-    user_language = request.user.get_profile().language
+    user_language = request.user.language
    
     if request.method == "POST":        
         password_form = PasswordChangeForm(request.user, request.POST)
@@ -61,7 +60,7 @@
 @login_required   
 def profile_picture(request):
     msg = ''
-    user_language = request.user.get_profile().language
+    user_language = request.user.language
    
     if request.method == "POST":
         profile_form = ProfileForm(instance=request.user)
@@ -85,7 +84,6 @@
     logout(request)
     return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
     #return HttpResponseRedirect(settings.LOGOUT_URL)
-
     
 def login_ajax(request, loginstate_template_name='ldt/user/login_form.html'):
     if request.method == "POST":
--- a/src/ldt/ldt/utils/context_processors.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/utils/context_processors.py	Fri May 24 21:55:08 2013 +0200
@@ -4,8 +4,11 @@
 
 
 def ldt_context(request):
-    return {'BASE_URL': settings.BASE_URL, 'MEDIA_URL': settings.MEDIA_URL, \
-             'WEB_URL': get_web_url(), \
-             'ADMIN_MEDIA_PREFIX': settings.ADMIN_MEDIA_PREFIX, 'VERSION': ldt.get_version(), \
-             'WEB_VERSION' : settings.WEB_VERSION, }
+    return {
+        'BASE_URL': settings.BASE_URL,
+        'MEDIA_URL': settings.MEDIA_URL,
+        'WEB_URL': get_web_url(),
+        'VERSION': ldt.get_version(),
+        'WEB_VERSION' : settings.WEB_VERSION,
+    }
 
--- a/src/ldt/ldt/utils/url.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/utils/url.py	Fri May 24 21:55:08 2013 +0200
@@ -1,12 +1,16 @@
 from django.contrib.staticfiles.storage import staticfiles_storage
-from django.core.urlresolvers import reverse
+from django.core.urlresolvers import reverse, get_script_prefix
+from django.utils.encoding import iri_to_uri
 from ldt.utils.web_url_management import get_web_url
 from ldt import settings
 from django.conf import settings as djangosettings
 import httplib2
 import re
 import urlparse
-import logging
+from django.utils.http import urlquote
+
+def static(path):
+    return staticfiles_storage.url(path)
 
 def absstatic(request, path):
     domain=get_web_url(request)
@@ -43,4 +47,19 @@
 
 
 def is_absolute(url):
-    return bool(urlparse.urlparse(url).scheme)
\ No newline at end of file
+    return bool(urlparse.urlparse(url).scheme)
+
+###
+# 
+#
+def reverse_prefix(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None):
+    
+    url = reverse(viewname,urlconf,args,kwargs,prefix,current_app)
+    prefix = get_script_prefix()
+    quoted_prefix = urlquote(prefix)
+    clean_prefix = iri_to_uri(prefix)
+    
+    if url.startswith(quoted_prefix):
+        return clean_prefix + url[len(quoted_prefix):]
+    else:
+        return url
--- a/src/ldt/ldt/utils/zipfileext.py	Wed May 15 12:18:43 2013 +0200
+++ b/src/ldt/ldt/utils/zipfileext.py	Fri May 24 21:55:08 2013 +0200
@@ -2,7 +2,7 @@
 import os.path
 
 class ZipFileExt(zipfile.ZipFile):
-    def unzip_into_dir(self, dir):
+    def unzip_into_dir(self, dir):  # @ReservedAssignment
         if not os.path.exists(dir):
             os.mkdir(dir, 0777)
         for name in self.namelist():