--- a/src/ldt/ldt/ldt_utils/views.py Mon Sep 19 12:01:13 2011 +0200
+++ b/src/ldt/ldt/ldt_utils/views.py Tue Sep 20 15:31:58 2011 +0200
@@ -24,6 +24,8 @@
from models import Media, Project
from projectserializer import ProjectSerializer
from urllib2 import urlparse
+from operator import itemgetter
+from itertools import groupby
import base64
import django.core.urlresolvers
import ldt.auth as ldt_auth
@@ -64,11 +66,11 @@
else:
dur = 3600000
# Build platform media and platform content from "regarssignes" contents
- media = Media.objects.create(external_id=row[8], creation_date=row[4], update_date=row[5], videopath=row[3], duration=dur,
- description=row[7], title=row[6], src=(row[1]+u".flv"), mimetype_field="('video/x-flv', None)")
+ media = Media.objects.create(external_id=row[8], creation_date=row[4], update_date=row[5], videopath=row[3], duration=dur,
+ description=row[7], title=row[6], src=(row[1] + u".flv"), mimetype_field="('video/x-flv', None)")
media.save()
- content = Content.objects.create(iri_id=row[1], iriurl=row[2], creation_date=row[4], update_date=row[5], title=row[6], description=row[7],
+ content = Content.objects.create(iri_id=row[1], iriurl=row[2], creation_date=row[4], update_date=row[5], title=row[6], description=row[7],
content_creation_date=row[4], duration=dur, media_obj=media)
content.save()
@@ -104,7 +106,7 @@
# render list
return render_to_response("ldt/ldt_utils/groups.html",
- {'groups': group_list,
+ {'groups': group_list,
'is_gecko': is_gecko},
context_instance=RequestContext(request))
@@ -196,7 +198,7 @@
grp = Group.objects.get(id=id_group) #@UndefinedVariable
users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable
query &= Q(owner__in=users) #@UndefinedVariable
- project_list = Project.objects.filter(query).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username','lower_title') #@UndefinedVariable
+ project_list = Project.objects.filter(query).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username', 'lower_title') #@UndefinedVariable
show_username = True
else :
project_list = Project.objects.filter(query) #@UndefinedVariable
@@ -232,6 +234,8 @@
form = SearchForm()
return render_to_response('ldt/ldt_utils/search_form.html', {'form': form} , context_instance=RequestContext(request))
+
+
def search_index(request):
sform = SearchForm(request.POST)
@@ -245,7 +249,15 @@
url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.search_init", args=[field, queryStr])
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': url}, context_instance=RequestContext(request))
else:
- complete_results = get_results_with_context(field, search)
+ results = get_results_with_context(field, search)
+ results.sort(key=lambda k : k['project_id'])
+ complete_results = []
+
+ results.sort(key=lambda k: k['project_id'])
+ for project_id, item in groupby(results, itemgetter('project_id')):
+ project = Project.objects.get(ldt_id=project_id)
+ complete_results.append({'list' : list(item), 'project_title' : project.title, 'project_id' : project.ldt_id, 'project_description' : project.get_description() })
+
request.session.__setitem__('complete_results', complete_results)
request.session.__setitem__('search', search)
paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE)
@@ -263,12 +275,16 @@
return render_to_response('ldt/ldt_utils/search_results.html', {'msg' : msg}, context_instance=RequestContext(request))
-def display_highlighted_seg(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
+def display_highlighted_seg(request, project_id, content_id, ensemble_id, cutting_id, segment_id, full=False):
url = settings.WEB_URL + reverse("ldt.ldt_utils.views.init_segment", args=[project_id, content_id, ensemble_id, cutting_id, segment_id])
language_code = request.LANGUAGE_CODE[:2]
+
+ if full:
+ 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': url}, context_instance=RequestContext(request))
+ else:
+ 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': url}, context_instance=RequestContext(request))
- 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': url}, context_instance=RequestContext(request))
def search_listing(request):
@@ -467,21 +483,21 @@
ldtdoc = lxml.etree.fromstring(project.ldt.encode("utf-8"))
displays_node = ldtdoc.find("displays")
if not displays_node:
- displays_node = lxml.etree.SubElement(ldtdoc,u"displays")
+ displays_node = lxml.etree.SubElement(ldtdoc, u"displays")
res = displays_node.xpath("display")
if len(res) > 0:
display_node = res[0]
else:
- display_node = lxml.etree.SubElement(displays_node, u"display", attrib={u'id':u'0', u'title': u'generated', u'idsel':unicode(content_id), u'tc':u'0'})
+ display_node = lxml.etree.SubElement(displays_node, u"display", attrib={u'id':u'0', u'title': u'generated', u'idsel':unicode(content_id), u'tc':u'0'})
res = display_node.xpath("content[@id='%s']/decoupage[(@id='%s') and (@idens='%s')]" % (content_id, cutting_id, ensemble_id))
if len(res) == 0:
#create node
- res = display_node.xpath("content[@id='%s']" %(content_id))
+ res = display_node.xpath("content[@id='%s']" % (content_id))
if len(res) == 0:
- content_node = lxml.etree.SubElement(display_node,u"content")
+ content_node = lxml.etree.SubElement(display_node, u"content")
else:
- content_node = res[0]
+ content_node = res[0]
lxml.etree.SubElement(content_node, u"decoupage", attrib={u'id':unicode(cutting_id), u'idens':unicode(ensemble_id)})
active_segment_node = displays_node.find(u"activeSegment")
if not active_segment_node:
@@ -508,15 +524,15 @@
'idsegment' : segment_id
}
- doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
+ doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
- doc.write(resp, pretty_print = ('DEBUG' in dir(settings) and settings.DEBUG))
+ doc.write(resp, pretty_print=('DEBUG' in dir(settings) and settings.DEBUG))
return resp
# ldtgen.
-def index_project(request, id, full= False):
+def index_project(request, id, full=False):
urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldt_project', id])
posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldt_project")
@@ -1132,12 +1148,12 @@
try:
# The filename arrives with a GET var.
file_path = os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", ldt_utils_path.sanitize_filename(request.GET["filename"]))
- if hasattr(settings,'FFMPEG_PATH') and os.path.exists(file_path):
- output = str(subprocess.Popen([settings.FFMPEG_PATH, "-i", file_path],stderr = subprocess.PIPE).communicate()[1])
+ if hasattr(settings, 'FFMPEG_PATH') and os.path.exists(file_path):
+ output = str(subprocess.Popen([settings.FFMPEG_PATH, "-i", file_path], stderr=subprocess.PIPE).communicate()[1])
m = re.search("Duration:\s*?([\d.:]+)", output, re.M)
dur_arr = m.group(1).split(":")
- td = datetime.timedelta(hours=int(dur_arr[0]),minutes=int(dur_arr[1]),seconds=float(dur_arr[2]))
- str_duration = str((td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**3)
+ td = datetime.timedelta(hours=int(dur_arr[0]), minutes=int(dur_arr[1]), seconds=float(dur_arr[2]))
+ str_duration = str((td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10 ** 3)
return HttpResponse(str_duration, mimetype="text/plain")
else:
return HttpResponse("", mimetype="text/plain")
@@ -1151,7 +1167,7 @@
# Get group, user and project_list
grp = Group.objects.get(id=request.POST["id_group"]) #@UndefinedVariable
users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable
- project_list = Project.objects.filter(owner__in=users).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username','lower_title') #@UndefinedVariable
+ project_list = Project.objects.filter(owner__in=users).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username', 'lower_title') #@UndefinedVariable
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
@@ -1159,4 +1175,4 @@
return render_to_response("ldt/ldt_utils/partial/projectslist.html",
{'projects': project_list, 'show_username':True,
'is_gecko': is_gecko},
- context_instance=RequestContext(request))
\ No newline at end of file
+ context_instance=RequestContext(request))
--- a/src/ldt/ldt/static/ldt/js/projectscontents.js Mon Sep 19 12:01:13 2011 +0200
+++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Tue Sep 20 15:31:58 2011 +0200
@@ -53,7 +53,7 @@
});
});
- $('.cellimgdiv img').qtip({
+ $('.cellimgdiv img, .publishedproject, .unpublishedproject').qtip({
style: {
classes: 'ui-tooltip-dark ui-tooltip-rounded',
}
@@ -75,6 +75,10 @@
'width': 0,
'color': '#505050'
},
+ position: {
+ my: 'top left',
+ at: 'bottom left', // at the bottom right of...
+ }
});
});
}
@@ -147,7 +151,7 @@
url: url,
cache: false,
success: function(data, status, request) {
- $(container_selector).html(data);
+ $(container_selector).html(data);
target.next(".searchajaxloader").hide();
if(target.realVal().length > 0) {
target.nextAll(".searchclear").show();
@@ -155,7 +159,7 @@
init_events($(container_selector));
target.removeAttr('timer');
}
- });
+ });
},
300)
);
@@ -280,6 +284,7 @@
$('.publishedproject', base_node).click(function(e) {
e.preventDefault();
+ display_loading_icon($(this));
var target = $(e.target);
var project_id = target.attr('id').replace('project_','');
var url = unpublishprojecturl.replace('__PROJECT_ID__', project_id);
@@ -299,6 +304,7 @@
$('.unpublishedproject', base_node).click(function(e) {
e.preventDefault();
+ display_loading_icon($(this));
var target = $(e.target);
var project_id = target.attr('id').replace('project_','');
var url = publishprojecturl.replace('__PROJECT_ID__', project_id);
@@ -347,6 +353,10 @@
}
+function display_loading_icon (project) {
+ project.attr('src', LDT_MEDIA_PREFIX + "img/ajax-loader-transp.gif");
+}
+
function init_events_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
init_events_base(base_node, embed_url);
init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl);