add permalink + corrcetion config with static and media path. update urls
authorymh <ymh.work@gmail.com>
Wed, 18 May 2011 19:17:39 +0200
changeset 112 9886ab183b09
parent 111 4535dafa6007
child 113 cf3bdb2a4216
add permalink + corrcetion config with static and media path. update urls
src/ldt/ldt/ldt_utils/fileimport.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html
src/ldt/ldt/ldt_utils/tests.py
src/ldt/ldt/ldt_utils/urls.py
src/ldt/ldt/ldt_utils/utils.py
src/ldt/ldt/ldt_utils/views.py
src/ldt/ldt/user/urls.py
web/ldtplatform/config.py.tmpl
web/ldtplatform/urls.py
--- a/src/ldt/ldt/ldt_utils/fileimport.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/fileimport.py	Wed May 18 19:17:39 2011 +0200
@@ -130,7 +130,7 @@
             f.close()
         
         
-        destPath = os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.id);
+        destPath = os.path.join(os.path.join(settings.MEDIA_ROOT, "ldt"), self.id);
         if not os.path.exists(destPath):
             os.makedirs(destPath)
         shutil.move(os.path.join(self.basepath, self.src), os.path.join(destPath, os.path.basename(self.src)))
--- a/src/ldt/ldt/ldt_utils/models.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/models.py	Wed May 18 19:17:39 2011 +0200
@@ -178,7 +178,7 @@
             return unicode(web_url) + unicode(settings.MEDIA_URL) + u"ldt/" + unicode(self.iriurl)
     
     def iri_file_path(self):
-        return os.path.join(os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "media"), "ldt"), self.iri_id), os.path.basename(self.iriurl))
+        return os.path.join(os.path.join(os.path.join(settings.MEDIA_ROOT, "ldt"), self.iri_id), os.path.basename(self.iriurl))
 
     def iri_url_template(self):
         return "${web_url}${media_url}ldt/" + unicode(self.iri_id) + "/" + os.path.basename(self.iriurl)
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Wed May 18 19:17:39 2011 +0200
@@ -10,9 +10,9 @@
     <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
         {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %}
         {% if is_gecko %}
-            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url ldt.ldt_utils.views.indexProjectFull project.ldt_id %}"><img src="{{LDT_MEDIA_PREFIX}}img/document_edit.gif" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
+            <td class="cellimg"><div class="cellimgdiv"><a  href="{% url index_project_full project.ldt_id %}"><img src="{{LDT_MEDIA_PREFIX}}img/document_edit.gif" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
         {% else %}
-            <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/document_edit.gif" href="{% url ldt.ldt_utils.views.indexProject project.ldt_id %}" class="ldt_link" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></div></td>
+            <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/document_edit.gif" href="{% url index_project project.ldt_id %}" class="ldt_link" alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></div></td>
         {% endif %}
         <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/documents_duplicate.gif" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_create" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
         <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/plugin.gif" href="{{WEB_URL}}{{json_url_id}}" id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/></div></td>
--- a/src/ldt/ldt/ldt_utils/tests.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/tests.py	Wed May 18 19:17:39 2011 +0200
@@ -66,7 +66,8 @@
         self.project.contents.add(self.cont1, self.cont2)
     
         f = tempfile.TemporaryFile(mode='r+')
-        self.LU.generateLdt(Content.objects.all(), f)
+        doc = self.LU.generateLdt(Content.objects.all())
+        doc.write(f, pretty_print=True)
         f.seek(0)
         ldoc = lxml.etree.parse(f)
         self.assertEqual(ldoc.xpath("/iri/displays/display/content")[9].get("id"), self.cont2.iri_id)
--- a/src/ldt/ldt/ldt_utils/urls.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/urls.py	Wed May 18 19:17:39 2011 +0200
@@ -26,6 +26,10 @@
     url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)$', "views.projectsfilter",),
     url(r'^filtercontents/_(?P<filter>[\w\%\_\-\+]*?)/$', "views.contentsfilter",),
     (r'^embedpopup/?$', "views.popup_embed"),
+    url(r'^segment/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.index_segment'),
+    url(r'^segmentInit/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.init_segment'),
+    url(r'^segmentLdt/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.ldt_segment'),
+    url(r'^segmentHighlight/(?P<project_id>.*)/(?P<content_id>.*)/(?P<ensemble_id>.*)/(?P<cutting_id>.*)/(?P<segment_id>.*)/$', 'views.highlight_segment'),
 )
 
 urlpatterns += patterns('',
@@ -39,8 +43,8 @@
         url(r'^space/content/create/$', 'views.write_content'),
         url(r'^space/content/update/(?P<iri_id>[\w-]+)$', 'views.write_content'),
         url(r'^space/ldt/$', 'views.list_ldt'),
-        url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.indexProject'),
-        url(r'^space/ldt/indexprojectfull/(?P<id>.*)$', 'views.indexProjectFull'),
+        url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.index_project', name='index_project'),
+        url(r'^space/ldt/indexprojectfull/(?P<id>.*)$', 'views.index_project', {'full': True}, name='index_project_full'),
         url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init', name='space_ldt_init'),
         url(r'^space/ldt/project/(?P<id>.*)$', 'views.ldtProject'),
         url(r'^space/ldt/create/$', 'views.create_ldt_view'),
--- a/src/ldt/ldt/ldt_utils/utils.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/utils.py	Wed May 18 19:17:39 2011 +0200
@@ -54,7 +54,7 @@
 
 class LdtUtils(object):
     
-    def generateLdt(self, contentList, file, title=u"", author=u"IRI Web", web_url=u"", media_url="", startSegment=None, contributions=None):
+    def generateLdt(self, contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, contributions=None):
 
         iri = lxml.etree.Element(u'iri')
         doc = lxml.etree.ElementTree(iri)
@@ -141,14 +141,12 @@
                 idas.set(u"idseg", startSegment["idsegment"])
     
         lxml.etree.SubElement(iri, "edits")
+        return doc
         
-        doc.write(file, pretty_print=True)
-
 
     def generateInit(self, url, method, search=None):
                 
         iri = lxml.etree.Element('iri')
-        lxml.etree.ElementTree(iri)
  
         elementFiles = lxml.etree.SubElement(iri, 'files')    
         elementInit = lxml.etree.SubElement(elementFiles, 'init')
--- a/src/ldt/ldt/ldt_utils/views.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/views.py	Wed May 18 19:17:39 2011 +0200
@@ -199,7 +199,9 @@
 
             
     ldtgen = LdtUtils()
-    ldtgen.generateLdt(contentList, file=resp, title=u"Recherche : " + queryStr)
+    doc = ldtgen.generateLdt(contentList, title=u"Recherche : " + queryStr)
+    doc.write(resp, pretty_print=True)
+
     
     return resp
 
@@ -231,8 +233,6 @@
             seg.set('idseg', resultMap['element_id'])
             seg.set('idvue', "")
             seg.set('crit', "")
-
-    return doc  
   
     return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
 
@@ -279,16 +279,74 @@
 def created_ldt(request):
     return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request))
 
+
 def index_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
-    pass
+    url_str = settings.WEB_URL + reverse("ldt.ldt_utils.views.init_segment", args=[project_id, content_id, ensemble_id, cutting_id, segment_id])
+    post_url = ""
+    language_code = request.LANGUAGE_CODE[:2]
+    readonly = 'true'
+    template_path = 'ldt/ldt_utils/init_ldt.html'
+    
+    return render_to_response(template_path, {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', '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):
+    
+    ldtgen = LdtUtils()
+    doc = ldtgen.generateInit([project_id, content_id, ensemble_id, cutting_id, segment_id], 'ldt.ldt_utils.views.ldt_segment', 'ldt.ldt_utils.views.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):
+        
+    iri = lxml.etree.Element('iri')
+    doc = lxml.etree.ElementTree(iri)    
+
+    seg = lxml.etree.SubElement(iri, 'seg')
+    seg.set('idctt', content_id)
+    seg.set('idens', ensemble_id)
+    seg.set('iddec', cutting_id)
+    seg.set('idseg', segment_id)
+    seg.set('idvue', "")
+    seg.set('crit', "")
+  
+    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
+
 
-def init_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
-    pass
+def ldt_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
 
-def ldt_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
-    pass
+    resp = HttpResponse(mimetype="text/xml")
+    resp['Cache-Control'] = 'no-cache, must-revalidate'
+    resp['Pragma'] = 'no-cache'
     
-def indexProject(request, id):
+    if project_id and project_id != "_" :
+        project = Project.objects.get(ldt_id=project_id) #@UndefinedVariable
+#TODO check that segment is in didplay
+        resp.write(project.ldt)
+    else:
+        # generate ldt from 
+        ldtgen = LdtUtils()
+        content_list = Content.objects.filter(iri_id=content_id)
+        if request.user and request.user.username:
+            username = request.user.username
+        else:
+            username = "webuser"
+        
+        start_segment = {
+            'idcontent': content_id,
+            'idgroup' : ensemble_id,
+            'idcutting' : cutting_id,
+            'idsegment' : segment_id
+        }
+        
+        doc = ldtgen.generateLdt(content_list, "segment : ", author=username,  startSegment=start_segment)
+        
+        doc.write(resp, pretty_print = ('DEBUG' in dir(settings) and settings.DEBUG))
+        
+    return resp
+        
+#        ldtgen.
+    
+def index_project(request, id, full= False):
 
     urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldtProject', id])
     posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject")
@@ -300,21 +358,13 @@
     else:
         readonly = 'false'
     
-    return render_to_response('ldt/ldt_utils/init_ldt.html', {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
-    
-def indexProjectFull(request, id):
-
-    urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldtProject', id])
-    posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject")
-    language_code = request.LANGUAGE_CODE[:2]
+    if full:
+        template_path = 'ldt/ldt_utils/init_ldt_full.html'
+    else:
+        template_path = 'ldt/ldt_utils/init_ldt.html'
+        
+    return render_to_response(template_path, {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
     
-    ldt = get_object_or_404(Project, ldt_id=id)
-    if ldt.state == 2: #published
-        readonly = 'true'
-    else:
-        readonly = 'false'
-    
-    return render_to_response('ldt/ldt_utils/init_ldt_full.html', {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
     
 def init(request, method, url):
     ldtgen = LdtUtils()
@@ -526,7 +576,8 @@
     contentList = Content.objects.filter(iri_id=url) #@UndefinedVariable
 
     ldtgen = LdtUtils()
-    ldtgen.generateLdt(contentList, file=resp, title=contentList[0].title, startSegment=startSegment)
+    doc = ldtgen.generateLdt(contentList, title=contentList[0].title, startSegment=startSegment)
+    doc.write(resp, pretty_print=True)
 
     return resp
 
@@ -548,9 +599,9 @@
             # Modal window is not used with firefox
             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
             if is_gecko :
-                return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProjectFull', args=[project.ldt_id]))
+                return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
             else:
-                return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
+                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
     else:
         form = AddProjectForm()
     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
@@ -606,7 +657,11 @@
         if form.is_valid():
             user = request.user
             project = project.copy_project(title=request.POST['title'], user=user)
-            return HttpResponseRedirect(reverse('ldt.ldt_utils.views.indexProject', args=[project.ldt_id]))
+            is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
+            if is_gecko:
+                return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
+            else:
+                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
     else:
         form = CopyProjectForm
     return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
--- a/src/ldt/ldt/user/urls.py	Mon May 16 20:00:36 2011 +0200
+++ b/src/ldt/ldt/user/urls.py	Wed May 18 19:17:39 2011 +0200
@@ -8,7 +8,7 @@
     url(r'^emailchange/$', 'ldt.user.views.change_email'),
     url(r'^emailchange/done/$', 'ldt.user.views.change_email_done'),
 #    url(r'^space/ldt/$', 'ldt.ldt_utils.views.list_ldt'),
-#    url(r'^space/ldt/indexproject/(?P<id>.*)$', 'ldt.ldt_utils.views.indexProject'),
+#    url(r'^space/ldt/indexproject/(?P<id>.*)$', 'ldt.ldt_utils.views.index_project'),
 #    url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.*)$', 'ldt.ldt_utils.views.init'),
 #    url(r'^space/ldt/project/(?P<id>.*)$', 'ldt.ldt_utils.views.ldtProject'),
 #    url(r'^space/ldt/create/$', 'ldt.ldt_utils.views.create_ldt_view'),
--- a/web/ldtplatform/config.py.tmpl	Mon May 16 20:00:36 2011 +0200
+++ b/web/ldtplatform/config.py.tmpl	Wed May 18 19:17:39 2011 +0200
@@ -12,18 +12,19 @@
 
 STREAM_SRC_PREFIX = ""
  
+BASE_STATIC_ROOT = os.path.abspath(BASE_DIR + "../static/").rstrip("/")+"/"
 
 # Absolute path to the directory that holds media.
 # Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = os.path.abspath(BASE_DIR + "../static/").rstrip("/")+"/"
+MEDIA_ROOT = BASE_STATIC_ROOT + "media/"
 
 
 # Absolute path to the directory that static files (js, css, swf...)
 # DO NOT forget to do command line ./manage.py collectstatic to gather static media into the web/static folder
-STATIC_ROOT = MEDIA_ROOT + "site/"
+STATIC_ROOT = BASE_STATIC_ROOT + "site/"
 
 
-CONTENT_ROOT = MEDIA_ROOT + "media/content/"
+CONTENT_ROOT = BASE_STATIC_ROOT + "content/"
 
 # PATH where uploaded media are put.
 STREAM_PATH = CONTENT_ROOT
--- a/web/ldtplatform/urls.py	Mon May 16 20:00:36 2011 +0200
+++ b/web/ldtplatform/urls.py	Wed May 18 19:17:39 2011 +0200
@@ -35,5 +35,5 @@
     #(r'^$', 'social_auth.views.complete'),
     
     (r'^/?$', 'django.views.generic.simple.redirect_to', {'url': 'ldt'}),
-    #(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 
+    #(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
 )