add permalink + corrcetion config with static and media path. update urls
--- 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}),
)