src/ldt/ldt/ldt_utils/views/content.py
changeset 791 12ba862f33fa
parent 786 623bc24bee49
child 792 e4180c2d11eb
child 795 923429f142ea
equal deleted inserted replaced
790:015f40d64d43 791:12ba862f33fa
     3 from django.contrib.auth.models import Group
     3 from django.contrib.auth.models import Group
     4 from django.core.urlresolvers import reverse
     4 from django.core.urlresolvers import reverse
     5 from django.forms.models import model_to_dict
     5 from django.forms.models import model_to_dict
     6 from django.forms.util import ErrorList
     6 from django.forms.util import ErrorList
     7 from django.http import HttpResponse
     7 from django.http import HttpResponse
     8 from django.shortcuts import render_to_response
     8 from django.shortcuts import render_to_response, redirect
     9 from django.template import RequestContext
     9 from django.template import RequestContext
    10 from django.utils.translation import ugettext as _, ungettext
    10 from django.utils.translation import ugettext as _, ungettext
    11 from ldt.ldt_utils.forms import ContentForm, MediaForm
    11 from ldt.ldt_utils.forms import ContentForm, MediaForm
    12 from guardian.shortcuts import remove_perm
    12 from guardian.shortcuts import remove_perm
    13 from ldt.ldt_utils.models import Content, Media, Project
    13 from ldt.ldt_utils.models import Content, Media, Project
    24 import re
    24 import re
    25 import datetime
    25 import datetime
    26 import math
    26 import math
    27 import requests
    27 import requests
    28 import django.utils.simplejson as simplejson
    28 import django.utils.simplejson as simplejson
    29 import urlparse
    29 import urlparse   
    30 
    30     
    31 def write_content_base(request, iri_id=None): 
    31 def write_content_base(request, iri_id=None): 
    32     if iri_id:        
    32     if iri_id:        
    33         instance_content = Content.safe_objects.get(iri_id=iri_id) #@UndefinedVariable
    33         instance_content = Content.safe_objects.get(iri_id=iri_id) #@UndefinedVariable
    34         instance_media = instance_content.media_obj
    34         instance_media = instance_content.media_obj
    35         logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content)) #@UndefinedVariable
    35         logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content)) #@UndefinedVariable
    57         
    57         
    58         def add_prefix(_dict, prefix):
    58         def add_prefix(_dict, prefix):
    59             return dict([('%s-%s' % (prefix, key), value) for key,value in _dict.items()])
    59             return dict([('%s-%s' % (prefix, key), value) for key,value in _dict.items()])
    60         
    60         
    61         content_instance_val = add_prefix(content_instance_val, "content")
    61         content_instance_val = add_prefix(content_instance_val, "content")
    62         media_instance_val= add_prefix(media_instance_val, "media")     
    62         media_instance_val= add_prefix(media_instance_val, "media")    
    63    
    63         src_video=request.POST.get('media-src')
    64         for k in request.POST.keys():
    64         for k in request.POST.keys():
    65             value = request.POST.get(k)
    65             value = request.POST.get(k)
    66             content_instance_val[k] = value
    66             content_instance_val[k] = value
    67             media_instance_val[k] = value
    67             media_instance_val[k] = value
       
    68             logging.debug("keys : "+k+"value : "+value+" Louiselogging")
    68             
    69             
    69         content_instance_val['read_list'] = request.POST.getlist('read_list')
    70         content_instance_val['read_list'] = request.POST.getlist('read_list')
    70         content_instance_val['write_list'] = request.POST.getlist('write_list')
    71         content_instance_val['write_list'] = request.POST.getlist('write_list')
    71         content_instance_val['share'] = request.POST.get('share', True)
    72         content_instance_val['share'] = request.POST.get('share', True)
    72 
    73         
    73         content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
    74         content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
    74         media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
    75         media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
    75         picture_form = PictureForm(None, request.POST, request.FILES)
    76         picture_form = PictureForm(None, request.POST, request.FILES)
       
    77         
    76         
    78         
    77         if request.user.is_staff:
    79         if request.user.is_staff:
    78             content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
    80             content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
    79 
    81 
    80         
    82         
   239                         content.front_project = content_defaults['front_project']
   241                         content.front_project = content_defaults['front_project']
   240                     
   242                     
   241                 content.save()
   243                 content.save()
   242                 picture_form.model = content
   244                 picture_form.model = content
   243                 picture_form.save()  
   245                 picture_form.save()  
   244 
       
   245                 form_status = 'saved'
   246                 form_status = 'saved'
   246                 media_form = MediaForm(instance=media, prefix="media")
   247                 media_form = MediaForm(instance=media, prefix="media")
   247                 content_form = ContentForm(instance=content, prefix="content")
   248                 content_form = ContentForm(instance=content, prefix="content")
   248                 picture_form = PictureForm()
   249                 picture_form = PictureForm()
   249         else:
   250         else:
   267                 content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
   268                 content_form.fields['front_project'].queryset = Project.objects.filter(contents__in=[instance_content])
   268                 
   269                 
   269     return content_form, media_form, picture_form, form_status, current_front_project
   270     return content_form, media_form, picture_form, form_status, current_front_project
   270 
   271 
   271 @login_required
   272 @login_required
   272 def write_content(request, iri_id=None):    
   273 def write_content(request, iri_id=None):  
       
   274     case=0  
   273     submit_action = request.REQUEST.get("submit_button", False) 
   275     submit_action = request.REQUEST.get("submit_button", False) 
   274     member_list = admin_list = []
   276     member_list = admin_list = []
   275     current_front_project = None
   277     current_front_project = None
   276     
   278     
   277     if submit_action == "prepare_delete": 
   279     if submit_action == "prepare_delete": 
   286     elif submit_action == "delete":
   288     elif submit_action == "delete":
   287         delete_content(request, iri_id)
   289         delete_content(request, iri_id)
   288         form_status = "deleted"
   290         form_status = "deleted"
   289         content_form = ContentForm()
   291         content_form = ContentForm()
   290         media_form = MediaForm()
   292         media_form = MediaForm()
   291         picture_form = PictureForm()
   293         picture_form = PictureForm()   
       
   294     elif submit_action=="close":
       
   295         return redirect("root-view") 
   292     else:
   296     else:
   293         content_form, media_form, picture_form, form_status, current_front_project = write_content_base(request, iri_id)
   297         content_form, media_form, picture_form, form_status, current_front_project = write_content_base(request, iri_id)
   294         if iri_id:
   298         if iri_id:
       
   299             case=2
   295             member_list, admin_list = get_userlist_model(Content.objects.get(iri_id=iri_id), request.user)
   300             member_list, admin_list = get_userlist_model(Content.objects.get(iri_id=iri_id), request.user)
   296         
   301             
   297     if iri_id:
   302     if iri_id:
   298         create_content_action = reverse('ldt.ldt_utils.views.content.write_content', kwargs={'iri_id':iri_id})
   303         create_content_action = reverse('ldt.ldt_utils.views.content.write_content', kwargs={'iri_id':iri_id})
   299         img_container = content_form.instance
   304         img_container = content_form.instance
       
   305 
   300     else:        
   306     else:        
   301         create_content_action = reverse('ldt.ldt_utils.views.content.write_content')
   307         create_content_action = reverse('ldt.ldt_utils.views.content.write_content')
   302         img_container = ''
   308         img_container = ''
       
   309         case=1
   303     
   310     
   304     session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
   311     session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
   305     cookie_name = settings.SESSION_COOKIE_NAME
   312     cookie_name = settings.SESSION_COOKIE_NAME
   306     # Media.safe_objects.all() does not return the good list of media, so we get them from the Content.safe_objects
   313     # Media.safe_objects.all() does not return the good list of media, so we get them from the Content.safe_objects
   307     content_form.fields["media_obj"].queryset = Media.objects.filter(id__in=Content.safe_objects.values_list('media_obj', flat=True))
   314     content_form.fields["media_obj"].queryset = Media.objects.filter(id__in=Content.safe_objects.values_list('media_obj', flat=True))
   308     
   315     
   309     return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form, 'form_status': form_status, 'create_content_action': create_content_action,
   316     if form_status=='saved' or form_status=='deleted':
       
   317         return redirect("root-view") 
       
   318     else:
       
   319         return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form, 'form_status': form_status, 'create_content_': create_content_action,
   310                                                                     'elem_list': get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list,  'iri_id': iri_id, 'session_key':session_key,
   320                                                                     'elem_list': get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list,  'iri_id': iri_id, 'session_key':session_key,
   311                                                                     'cookie_name':cookie_name, 'img_container': img_container, 'profile_picture_form': picture_form,
   321                                                                     'cookie_name':cookie_name, 'img_container': img_container, 'profile_picture_form': picture_form,
   312                                                                     'current_front_project':current_front_project}, context_instance=RequestContext(request))
   322                                                                     'current_front_project':current_front_project}, context_instance=RequestContext(request))
       
   323     #else :
       
   324     #    
   313 
   325 
   314 @login_required
   326 @login_required
   315 def prepare_delete_content(request, iri_id=None): 
   327 def prepare_delete_content(request, iri_id=None): 
   316     errors = []
   328     errors = []
   317     titles = []
   329     titles = []
   480     elif 'vimeo' in src_video:
   492     elif 'vimeo' in src_video:
   481         title=data[0]['title']
   493         title=data[0]['title']
   482     else:
   494     else:
   483         title=data['title']
   495         title=data['title']
   484     return title
   496     return title
       
   497 
       
   498 def get_image_json(src_video, data):
       
   499     if 'youtube' in src_video:
       
   500         lien=data['data']['thumbnail']['sqDefault']
       
   501         filename=""+data['data']['id']+".jpg"
       
   502         download_path=settings.MEDIA_ROOT+"thumbnails/contents/"
       
   503         file_path = "%s\%s" % (download_path, filename)
       
   504         video_thumbnail = file(file_path, "wb")
       
   505         image_web=urllib2.urlopen(lien)
       
   506         while True:
       
   507             buf = image_web.read(65536)
       
   508             if len(buf) == 0:
       
   509                 break
       
   510             video_thumbnail.write(buf)
       
   511         video_thumbnail.close()
       
   512         image_web.close()
       
   513     return file_path
       
   514         
       
   515