src/hp/views.py
author ymh <ymh.work@gmail.com>
Fri, 16 Nov 2012 18:33:51 +0100
changeset 65 6289931858a7
parent 62 0cdd0bb4141c
child 72 b31ba28871ca
permissions -rw-r--r--
add a project property to override the front project.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
'''
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Created on Nov 11, 2012
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
@author: ymh
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
'''
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
     7
from django.conf import settings
45
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     8
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
     9
from django.http import HttpResponse
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
from django.shortcuts import render_to_response
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
from django.template.context import RequestContext
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    12
from hp.models import VideoKCRel
45
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    13
from hp.utils import get_all_objects
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    14
import logging
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
import requests
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
import urlparse
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
logger = logging.getLogger(__name__)
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
def all_videos(request):
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    
45
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    23
    url = settings.LDT_API_URL + "contents/?limit=" + str(settings.LDT_MAX_FETCH)
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    24
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    25
    #pagination TODO : implement a lazy loader     
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    26
    contents = get_all_objects(url, 'front_project')
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    27
    for content in contents:
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
        url_parts = urlparse.urlparse(content.get('image',''))
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        if not url_parts.netloc:
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
            content['image'] = settings.LDT_DOMAIN + content.get('image','')
45
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    31
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    32
    paginator = Paginator(contents, settings.PER_PAGE, 0, True)
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    33
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    34
    page = request.GET.get('page',1)
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    35
    if page == 'last':
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    36
        page = paginator.num_pages
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    37
    try:
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    38
        results = paginator.page(page)
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    39
    except PageNotAnInteger:
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    40
        # If page is not an integer, deliver first page.
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    41
        results = paginator.page(1)
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    42
    except EmptyPage:
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    43
        # If page is out of range (e.g. 9999), deliver last page of results.
316a0101512e add pagination new ldt version
ymh <ymh.work@gmail.com>
parents: 44
diff changeset
    44
        results = paginator.page(paginator.num_pages)
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    return render_to_response('hp/all_videos.html',{'results':results}, context_instance=RequestContext(request))
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
def show_video_details(request, content_id):
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    url_content = settings.LDT_API_URL + "contents/%s" % content_id
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
    r_content = requests.get(url_content)
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
        
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    logger.debug(r_content.text)
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    56
    
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    57
    content = r_content.json
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    58
        
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    59
    kc_id = None
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    60
    topic_id = None
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    61
    
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    62
    kc_relation_list = list(VideoKCRel.objects.filter(iri_id=content_id)[:1])
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    63
    
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    64
    if len(kc_relation_list) > 0:
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    65
        kc_id = kc_relation_list[0].graph_id
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    66
        topic_id = kc_relation_list[0].topic_id
65
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    67
        project_id = kc_relation_list[0].project_id
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    68
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    69
    if not project_id:
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    70
        project_url = content['front_project']
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    71
        project_path = urlparse.urlparse(project_url).path    
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    72
        project_id = ""
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    73
        if project_path:
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    74
            project_path_parts = project_path.split("/")
6289931858a7 add a project property to override the front project.
ymh <ymh.work@gmail.com>
parents: 62
diff changeset
    75
            project_id = project_path_parts[-1] if project_path_parts[-1] else project_path_parts[-2]
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    76
    
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    77
    return render_to_response(
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    78
        'hp/video_player.html',
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    79
        {'content':content, 'project_id': project_id, 'kc_id': kc_id, 'topic_id': topic_id},
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    80
        context_instance=RequestContext(request))
38
0fe2f3f5466f add basic pages and api endpoints
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    82
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    83
def kc_proxy(request, path):
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    84
    
44
0931f368cb9a correck kc proxy
ymh <ymh.work@gmail.com>
parents: 41
diff changeset
    85
    r = requests.request(request.method, settings.KC_URL + path, data=request.POST, params=request.GET)
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    86
    
44
0931f368cb9a correck kc proxy
ymh <ymh.work@gmail.com>
parents: 41
diff changeset
    87
    logger.debug("Proxy r url : " + r.url)
60
4a0bfe0002b1 proxy correction
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    88
    logger.debug("Proxy r method : " + r.request.method)
4a0bfe0002b1 proxy correction
ymh <ymh.work@gmail.com>
parents: 45
diff changeset
    89
    logger.debug("Proxy r full url : " + r.request.full_url)
62
0cdd0bb4141c correct proxy
ymh <ymh.work@gmail.com>
parents: 60
diff changeset
    90
    logger.debug("Proxy r status : " + str(r.status_code))
44
0931f368cb9a correck kc proxy
ymh <ymh.work@gmail.com>
parents: 41
diff changeset
    91
    logger.debug("Proxy r text : " + r.text)
0931f368cb9a correck kc proxy
ymh <ymh.work@gmail.com>
parents: 41
diff changeset
    92
        
41
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    93
    return HttpResponse(content=r.text, content_type='application/json;charset=UTF-8')
b6010b3d6ea8 add proxy, model, and correct embed_player
ymh <ymh.work@gmail.com>
parents: 38
diff changeset
    94