Modifications in order to download the thumbnail picture and put it as default picture when creating youtube, dailymotion or vimeo contents
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html Mon Sep 24 11:01:39 2012 +0200
@@ -37,6 +37,7 @@
"{% 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) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
@@ -51,11 +52,19 @@
{% block css_import %}
{{ block.super }}
- {#{ content_form.media.css }#}
+ {{ content_form.media.css }}
<link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/ldtform.css" />
+ <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/style.css" />
+ <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/blueprint/screen.css" type="text/css" media="screen, projection" />
+ <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}css/blueprint/print.css" type="text/css" media="print" />
+ <link rel="stylesheet" href="{{LDT_MEDIA_PREFIX}}/css/workspace.css" type="text/css"/>
+
+
{% endblock %}
{% block content %}
+
+
{% if media_form.errors %}
<div id="media-form-error">
<p>{% trans "The operation could not be performed because one or more error(s) occurred.<br />Please resubmit the media form after making the following changes:" %}</p>
@@ -74,6 +83,7 @@
<div id="add_content" class="span-18 last">
<div class="projectscontentstitle">{% trans "Create content" %}</div>
<form action="{{create_content_action}}" enctype="multipart/form-data" id="my_form" method="POST" enctype="multipart/form-data" >
+
<div id="contentformhidden">
{% csrf_token %}
<input type="hidden" name="form_status" value="{{form_status}}" id="content_form_status" />
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html Mon Sep 24 11:01:39 2012 +0200
@@ -33,6 +33,7 @@
</td>
<td>
<input type="file" name="image" id="id_image" accept="image/jpeg, image/png" />
+ <input type="hidden" name="url_image" id="id_url_image" />
{% for error in profile_picture_form.image.errors %}
<span class="error">
{{ error }}
--- a/src/ldt/ldt/ldt_utils/urls.py Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/ldt_utils/urls.py Mon Sep 24 11:01:39 2012 +0200
@@ -25,7 +25,7 @@
url(r'^update/(?P<ldt_id>.*)$', 'views.project.update_project'),
url(r'^cljson/id/(?P<id>.*)$', 'views.json.project_json_id', name="projectjson_id"),
url(r'^cljson/externalid/(?P<id>.*)$', 'views.json.project_json_externalid', name="projectjson_externalid"),
- url(r'cljson/idcutting/(?P<id>.*)/(?P<cutting_id>.*)$', 'views.json.project_json_cutting_id'),
+ url(r'^cljson/idcutting/(?P<id>.*)/(?P<cutting_id>.*)$', 'views.json.project_json_cutting_id'),
url(r'^rdf/id/(?P<ldt_id>.*)$', 'views.rdf.project_annotations_rdf'),
url(r'^workspace/?$', "views.workspace.home", name="root-view"),
url(r'^filterprojects/_(?P<filter>[\w\%\_\-\+]*?)/(?P<is_owner>true|false)/(?P<status>\d)$', "views.project.projects_filter",),
--- a/src/ldt/ldt/ldt_utils/views/content.py Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/ldt_utils/views/content.py Mon Sep 24 11:01:39 2012 +0200
@@ -3,6 +3,8 @@
from django.contrib.auth.models import Group
from django.core.urlresolvers import reverse
from django.forms.models import model_to_dict
+from django.core.files import File
+#from django.core.files.temp import NamedTemporaryFile
from django.forms.util import ErrorList
from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
@@ -18,7 +20,7 @@
import ldt.utils.path as ldt_utils_path
import logging
import mimetypes
-import os
+import os, stat
import urllib2
import subprocess
import re
@@ -26,8 +28,9 @@
import math
import requests
import django.utils.simplejson as simplejson
-import urlparse
-
+import urlparse
+import tempfile
+
def write_content_base(request, iri_id=None):
if iri_id:
instance_content = Content.safe_objects.get(iri_id=iri_id) #@UndefinedVariable
@@ -60,7 +63,7 @@
content_instance_val = add_prefix(content_instance_val, "content")
media_instance_val= add_prefix(media_instance_val, "media")
- src_video=request.POST.get('media-src')
+
for k in request.POST.keys():
value = request.POST.get(k)
content_instance_val[k] = value
@@ -73,8 +76,9 @@
content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
+ logging.debug("loulou : POST : "+str(request.POST)+" FILES : "+str(request.FILES))
picture_form = PictureForm(None, request.POST, request.FILES)
-
+ logging.debug(str(picture_form.fields['image'])+" poissonrouge")
if request.user.is_staff:
content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
@@ -83,8 +87,15 @@
media_valid = media_form.is_valid()
content_valid = content_form.is_valid()
picture_valid = picture_form.is_valid()
-
- logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid)) #@UndefinedVariable
+ lien_image=request.POST.get('url_image')
+ if picture_valid and lien_image!='':
+ r=requests.get(lien_image)
+ img_temp=tempfile.NamedTemporaryFile(suffix='.png')
+ if img_temp:
+ img_temp.write(r.content)
+ img_temp.flush()
+ picture_form.cleaned_data["image"]=File(img_temp)
+ logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid) + "picture : valid :" +str(picture_valid)+" loulou") #@UndefinedVariable
if media_valid and content_valid and picture_valid:
@@ -271,7 +282,6 @@
@login_required
def write_content(request, iri_id=None):
- case=0
submit_action = request.REQUEST.get("submit_button", False)
member_list = admin_list = []
current_front_project = None
@@ -296,7 +306,6 @@
else:
content_form, media_form, picture_form, form_status, current_front_project = write_content_base(request, iri_id)
if iri_id:
- case=2
member_list, admin_list = get_userlist_model(Content.objects.get(iri_id=iri_id), request.user)
if iri_id:
@@ -306,7 +315,6 @@
else:
create_content_action = reverse('ldt.ldt_utils.views.content.write_content')
img_container = ''
- case=1
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
cookie_name = settings.SESSION_COOKIE_NAME
@@ -456,27 +464,6 @@
else :
return Tag.objects.cloud_for_model(Content, steps=steps)[:limit]
-def get_json(src_video):
- if 'youtube' in src_video:
- url_data=urlparse.urlparse(src_video)
- query=urlparse.parse_qs(url_data.query)
- video_id=query['v'][0]
- lien='http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc'
- elif 'vimeo' in src_video:
- url_data=urlparse.urlparse(src_video)
- url_path=url_data.path
- video_id=(url_path.split('/'))[1]
- lien='http://vimeo.com/api/v2/video/'+video_id+'.json'
- elif 'dailymotion' in src_video:
- url_data=urlparse.urlparse(src_video)
- video_path=url_data.path
- split_path=(video_path.split('/'))[2]
- video_id=(split_path.split('_'))[0]
- lien='https://api.dailymotion.com/video/'+video_id+'?fields=id,duration,title'
- resp=requests.get(lien)
- data=simplejson.loads(resp.content)
- return data
-
def get_duration_json(src_video, data):
if 'youtube' in src_video:
duration=data['data']['duration']*1000
@@ -495,11 +482,33 @@
title=data['title']
return title
+
+def get_json(src_video):
+ if 'youtube' in src_video:
+ url_data=urlparse.urlparse(src_video)
+ query=urlparse.parse_qs(url_data.query)
+ video_id=query['v'][0]
+ lien='http://gdata.youtube.com/feeds/api/videos/'+video_id+'?v=2&alt=jsonc'
+ elif 'vimeo' in src_video:
+ url_data=urlparse.urlparse(src_video)
+ url_path=url_data.path
+ video_id=(url_path.split('/'))[1]
+ lien='http://vimeo.com/api/v2/video/'+video_id+'.json'
+ elif 'dailymotion' in src_video:
+ url_data=urlparse.urlparse(src_video)
+ video_path=url_data.path
+ split_path=(video_path.split('/'))[2]
+ video_id=(split_path.split('_'))[0]
+ lien='https://api.dailymotion.com/video/'+video_id+'?fields=id,duration,title,thumbnail_medium_url'
+ resp=requests.get(lien)
+ data=simplejson.loads(resp.content)
+ return data
+
def get_image_json(src_video, data):
if 'youtube' in src_video:
lien=data['data']['thumbnail']['sqDefault']
filename=""+data['data']['id']+".jpg"
- download_path=settings.MEDIA_ROOT+"thumbnails/contents/"
+ download_path=settings.MEDIA_ROOT+"thumbnails\contents"
file_path = "%s\%s" % (download_path, filename)
video_thumbnail = file(file_path, "wb")
image_web=urllib2.urlopen(lien)
@@ -510,6 +519,8 @@
video_thumbnail.write(buf)
video_thumbnail.close()
image_web.close()
+ fileAtt=os.stat(file_path)[0]
+ if (not fileAtt & stat.S_IWRITE):
+ os.chmod(file_path, stat.S_IWRITE)
return file_path
-
--- a/src/ldt/ldt/static/ldt/css/style.css Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/static/ldt/css/style.css Mon Sep 24 11:01:39 2012 +0200
@@ -50,6 +50,7 @@
padding: 0px;
padding-left: 1em;
height: 55px;
+ background: #FFF;
}
#header a
--- a/src/ldt/ldt/static/ldt/js/projectscontents.js Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Mon Sep 24 11:01:39 2012 +0200
@@ -684,7 +684,8 @@
$('#id_content-title').val(data.entry.title.$t);
}
$('#media_field_create').append('<img id="external_thumbnail" src="'+data.entry.media$group.media$thumbnail[0].url+'" alt="Youtube Thumbnail"/>');
- $('#media_fields_div').height(150);
+ $('#media_fields_div').height(150);
+ $('#id_url_image').val(data.entry.media$group.media$thumbnail[0].url)
}
});
}
@@ -708,6 +709,7 @@
}
$('#media_field_create').append('<img id="external_thumbnail" src="'+data[0].thumbnail_small+'" />');
$('#media_fields_div').height(150);
+ $('#id_url_image').val(data[0].thumbnail_small);
}
});
}
@@ -732,6 +734,7 @@
}
$('#media_field_create').append('<img id="external_thumbnail" src="'+data.thumbnail_medium_url+'" />');
$('#media_fields_div').height(190);
+ $('#id_url_image').val(data.thumbnail_medium_url)
}
});
}
--- a/src/ldt/ldt/user/forms.py Thu Sep 20 12:43:02 2012 +0200
+++ b/src/ldt/ldt/user/forms.py Mon Sep 24 11:01:39 2012 +0200
@@ -120,7 +120,8 @@
class PictureForm(forms.Form):
- image = forms.ImageField(label=_("Profile picture"), required=False)
+ image=forms.ImageField(label=_("Profile picture"), required=False)
+ url_image=forms.CharField(max_length=1024, required=False)
def __init__(self, model=None, *args, **kwargs):
self.model = model