src/ldt/ldt/ldt_utils/views/lignesdetemps.py
author ymh <ymh.work@gmail.com>
Wed, 23 Jan 2013 17:19:56 +0100
changeset 1081 2e086097cb5d
parent 1035 85322320d89c
parent 1043 34af1cdcf746
child 1152 351782e601e7
permissions -rw-r--r--
Merge with cb83b868164a4795345f7a87ad9291c97725740d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
     1
from django.conf import settings
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
     2
from django.contrib.auth.decorators import login_required
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
     3
from django.core.urlresolvers import reverse
319
c45aed3c7a89 Remove unused imports in views
verrierj
parents: 315
diff changeset
     4
from django.http import HttpResponse, HttpResponseRedirect
c45aed3c7a89 Remove unused imports in views
verrierj
parents: 315
diff changeset
     5
from django.shortcuts import render_to_response, get_object_or_404
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
     6
from django.template import RequestContext
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
     7
from ldt.indexation import SimpleSearch
843
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
     8
from ldt.ldt_utils.models import Content, Project, Media
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
     9
from ldt.ldt_utils.searchutils import search_generate_ldt
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
    10
from ldt.ldt_utils.stat import update_stat_project
719
1c0ac4068bbe improve highlighting management
ymh <ymh.work@gmail.com>
parents: 560
diff changeset
    11
from ldt.ldt_utils.utils import LdtUtils, clean_description
319
c45aed3c7a89 Remove unused imports in views
verrierj
parents: 315
diff changeset
    12
from ldt.security.utils import set_forbidden_stream
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
    13
from ldt.utils.projectldt_parser import absolute_src_xml, relative_src_xml
1010
a8a42538ba0e modification of get_web_url to have less dependances and be usable in ldt_utils->models
grandjoncl
parents: 1007
diff changeset
    14
from ldt.utils.url import absstatic, absurl
a8a42538ba0e modification of get_web_url to have less dependances and be usable in ldt_utils->models
grandjoncl
parents: 1007
diff changeset
    15
from ldt.utils.web_url_management import get_web_url
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    16
import base64
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    17
import lxml.etree
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
    18
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    19
def search_index_get(request, field, query):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    20
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    21
    language_code = request.LANGUAGE_CODE[:2]
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    22
    
1007
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
    23
    url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, query])
997
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    24
    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    25
    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    26
    baseurl=absstatic(request, "ldt/swf/ldt/")
995
94f9d36371f6 new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents: 843
diff changeset
    27
    return render_to_response('ldt/ldt_utils/init_ldt.html', {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': url}, context_instance=RequestContext(request))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    28
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    29
def search_init(request, field, query):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    30
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    31
    ldtgen = LdtUtils()
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    32
    
321
c68744402249 Change urls used in reverse to be compatible with the new organization
verrierj
parents: 319
diff changeset
    33
    doc = ldtgen.generate_init([field, query], 'ldt.ldt_utils.views.lignesdetemps.search_ldt', 'ldt.ldt_utils.views.lignesdetemps.search_segments')
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    34
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    35
    resp = HttpResponse(mimetype="text/xml;charset=utf-8")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    36
    resp.write(lxml.etree.tostring(doc, pretty_print=True, encoding="utf-8")) 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    37
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    38
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents: 722
diff changeset
    39
713
202fb1255d8b first step for mashup json.
cavaliet
parents: 560
diff changeset
    40
def search_ldt(request, field, query, edition=None, return_project=False, query_encoded=True): 
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    41
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    42
    resp = HttpResponse(mimetype="text/xml")
730
38993be55b2b search_ldt factorization and correct template.
cavaliet
parents: 722
diff changeset
    43
    doc, _ = search_generate_ldt(request, field, query)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
    44
    doc = absolute_src_xml(doc)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    45
    doc.write(resp, pretty_print=True)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    46
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    47
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    48
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    49
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    50
def search_segments(request, field, query, edition=None):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    51
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    52
    if query and len(query) > 0:
719
1c0ac4068bbe improve highlighting management
ymh <ymh.work@gmail.com>
parents: 560
diff changeset
    53
        searcher = SimpleSearch()
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    54
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    55
        queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    56
        res = searcher.query(field, queryStr)            
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    57
    else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    58
        res = []
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    59
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    60
    iri_ids = None
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    61
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    62
    #if edition is not None:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    63
    #    iri_ids = map(lambda t:t[0], filter(lambda id: id[0] is not None, Speak.objects.filter(session__day__edition=edition).order_by("session__start_ts", "order").values_list("content__iri_id")))
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    64
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    65
    iri = lxml.etree.Element('iri')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    66
    doc = lxml.etree.ElementTree(iri)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    67
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    68
    for resultMap in res:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    69
        if iri_ids is None or resultMap['iri_id'] in iri_ids:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    70
            seg = lxml.etree.SubElement(iri, 'seg')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    71
            seg.set('idctt', resultMap['iri_id'])
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    72
            seg.set('idens', resultMap['ensemble_id'])
722
2446fff2bea0 correct search result
cavaliet
parents: 720
diff changeset
    73
            seg.set('iddec', resultMap['cutting_id'])
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    74
            seg.set('idseg', resultMap['element_id'])
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    75
            seg.set('idvue', "")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    76
            seg.set('crit', "")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    77
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    78
    #return doc  
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    79
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    80
    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    81
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    82
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    83
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    84
def index_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
1007
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
    85
    url_str = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init_segment", args=[project_id, content_id, ensemble_id, cutting_id, segment_id])
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    86
    post_url = ""
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    87
    language_code = request.LANGUAGE_CODE[:2]
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    88
    readonly = 'true'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    89
    template_path = 'ldt/ldt_utils/init_ldt.html'
997
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    90
    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    91
    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
    92
    baseurl=absstatic(request, "ldt/swf/ldt/")
995
94f9d36371f6 new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents: 843
diff changeset
    93
    return render_to_response(template_path, {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': url_str, 'posturl': post_url, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    94
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    95
def init_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    96
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    97
    if project_id != u"_":
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    98
        get_object_or_404(Project.safe_objects, ldt_id=project_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
    99
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   100
    ldtgen = LdtUtils()
323
f85caa66acf4 Fix bugs in new url organization
verrierj
parents: 321
diff changeset
   101
    doc = ldtgen.generate_init([project_id, content_id, ensemble_id, cutting_id, segment_id], 'ldt.ldt_utils.views.lignesdetemps.ldt_segment', 'ldt.ldt_utils.views.lignesdetemps.highlight_segment')
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   102
    return HttpResponse(lxml.etree.tostring(lxml.etree.ElementTree(doc), pretty_print=True), mimetype="text/xml;charset=utf-8")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   103
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   104
def highlight_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   105
    if project_id != u"_":
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   106
        get_object_or_404(Project.safe_objects, ldt_id=project_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   107
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   108
    iri = lxml.etree.Element('iri')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   109
    doc = lxml.etree.ElementTree(iri)    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   110
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   111
    seg = lxml.etree.SubElement(iri, 'seg')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   112
    seg.set('idctt', content_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   113
    seg.set('idens', ensemble_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   114
    seg.set('iddec', cutting_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   115
    seg.set('idseg', segment_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   116
    seg.set('idvue', "")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   117
    seg.set('crit', "")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   118
  
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   119
    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   120
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   121
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   122
def ldt_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id): 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   123
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   124
    resp = HttpResponse(mimetype="text/xml")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   125
    resp['Cache-Control'] = 'no-cache, must-revalidate'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   126
    resp['Pragma'] = 'no-cache'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   127
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   128
    if project_id and project_id != "_" :
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   129
        project = Project.safe_objects.get(ldt_id=project_id) #@UndefinedVariable
560
1cb2a4a573e1 correct annoations api handler + ldt encoding
ymh <ymh.work@gmail.com>
parents: 482
diff changeset
   130
        ldtdoc = lxml.etree.fromstring(project.ldt_encoded)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   131
        ldtdoc = absolute_src_xml(ldtdoc)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   132
        ldtdoc = set_forbidden_stream(ldtdoc, request.user)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   133
        displays_node = ldtdoc.find("displays")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   134
        if not displays_node:
1035
85322320d89c delete annotation when you are admin, and import cleaning.
cavaliet
parents: 1010
diff changeset
   135
            displays_node = lxml.etree.SubElement(ldtdoc, u"displays")
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   136
        res = displays_node.xpath("display")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   137
        if len(res) > 0:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   138
            display_node = res[0]
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   139
        else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   140
            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'})
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   141
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   142
        res = display_node.xpath("content[@id='%s']/decoupage[(@id='%s') and (@idens='%s')]" % (content_id, cutting_id, ensemble_id))
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   143
        if len(res) == 0:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   144
            #create node
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   145
            res = display_node.xpath("content[@id='%s']" % (content_id))
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   146
            if len(res) == 0:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   147
                content_node = lxml.etree.SubElement(display_node, u"content")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   148
            else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   149
                content_node = res[0]
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   150
            lxml.etree.SubElement(content_node, u"decoupage", attrib={u'id':unicode(cutting_id), u'idens':unicode(ensemble_id)})
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   151
        active_segment_node = displays_node.find(u"activeSegment")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   152
        if not active_segment_node:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   153
            active_segment_node = lxml.etree.SubElement(displays_node, u"activeSegment")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   154
        id_node = active_segment_node.find(u"id")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   155
        if id_node:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   156
            active_segment_node.remove(id_node)
482
c802e00c7131 Lot of bugfixes
verrierj
parents: 468
diff changeset
   157
        lxml.etree.SubElement(active_segment_node, u"id", attrib={u"idctt":unicode(content_id), u"idens": unicode(ensemble_id), "idcut":unicode(cutting_id), u"idseg":unicode(segment_id)})                     
c802e00c7131 Lot of bugfixes
verrierj
parents: 468
diff changeset
   158
        ldtdoc = set_forbidden_stream(ldtdoc, request.user)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   159
        resp.write(lxml.etree.tostring(ldtdoc, xml_declaration=True, encoding='utf-8', pretty_print=True))
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   160
    else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   161
        # generate ldt from 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   162
        ldtgen = LdtUtils()
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   163
        content_list = Content.safe_objects.filter(iri_id=content_id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   164
        if request.user and request.user.username:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   165
            username = request.user.username
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   166
        else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   167
            username = "webuser"
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   168
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   169
        start_segment = {
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   170
            'idcontent': content_id,
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   171
            'idgroup' : ensemble_id,
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   172
            'idcutting' : cutting_id,
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   173
            'idsegment' : segment_id
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   174
        }        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   175
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   176
        doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   177
        doc = absolute_src_xml(doc)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   178
        doc = set_forbidden_stream(doc, request.user)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   179
        doc.write(resp, pretty_print=('DEBUG' in dir(settings) and settings.DEBUG))
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   180
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   181
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   182
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   183
   
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   184
@login_required    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   185
def index_project(request, id, full=False): 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   186
1007
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
   187
    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", args=['ldt_project', id])
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
   188
    posturl = absurl(request, "ldt.ldt_utils.views.lignesdetemps.save_ldt_project")
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   189
    language_code = request.LANGUAGE_CODE[:2]
997
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   190
    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   191
    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   192
    baseurl=absstatic(request, "ldt/swf/ldt/")
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   193
    try:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   194
        ldt = Project.safe_objects.get(ldt_id=id)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   195
    except Project.DoesNotExist:
321
c68744402249 Change urls used in reverse to be compatible with the new organization
verrierj
parents: 319
diff changeset
   196
        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.workspace.home"))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   197
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   198
    if ldt.state == 2 or not request.user.has_perm('change_project', ldt): #published
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   199
        readonly = 'true'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   200
    else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   201
        readonly = 'false'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   202
       
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   203
    if full:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   204
        template_path = 'ldt/ldt_utils/init_ldt_full.html'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   205
    else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   206
        template_path = 'ldt/ldt_utils/init_ldt.html'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   207
  
995
94f9d36371f6 new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents: 843
diff changeset
   208
    return render_to_response(template_path, {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   209
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   210
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   211
def init(request, method, url):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   212
    ldtgen = LdtUtils()
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   213
323
f85caa66acf4 Fix bugs in new url organization
verrierj
parents: 321
diff changeset
   214
    doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.lignesdetemps.' + method, None)    
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   215
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   216
    library = doc.xpath('/iri/files/library')[0]
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   217
    for c in Content.safe_objects.all():
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   218
        elem = lxml.etree.SubElement(library, 'file')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   219
        elem.set('src', c.iri_url())
324
163d00f55ffd little debug for ldt init view and url management.
cavaliet
parents: 323
diff changeset
   220
        if c.videopath :
163d00f55ffd little debug for ldt init view and url management.
cavaliet
parents: 323
diff changeset
   221
            elem.set('video', c.videopath)
163d00f55ffd little debug for ldt init view and url management.
cavaliet
parents: 323
diff changeset
   222
        else :
163d00f55ffd little debug for ldt init view and url management.
cavaliet
parents: 323
diff changeset
   223
            elem.set('video', '')
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   224
        elem.set('title', c.title)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   225
        elem.set('author', '')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   226
        elem.set('category', '')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   227
        elem.set('pict', '')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   228
        elem.set('img', '')
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   229
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   230
    resp = HttpResponse(mimetype="text/xml")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   231
    resp['Cache-Control'] = 'no-cache, must-revalidate'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   232
    resp['Pragma'] = 'no-cache'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   233
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   234
    resp.write(lxml.etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   235
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   236
       
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   237
def ldt_project(request, id): 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   238
    resp = HttpResponse(mimetype="text/xml")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   239
    resp['Cache-Control'] = 'no-cache, must-revalidate'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   240
    resp['Pragma'] = 'no-cache'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   241
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   242
    project = Project.safe_objects.get(ldt_id=id) #@UndefinedVariable
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   243
    
560
1cb2a4a573e1 correct annoations api handler + ldt encoding
ymh <ymh.work@gmail.com>
parents: 482
diff changeset
   244
    doc = lxml.etree.fromstring(project.ldt_encoded)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   245
    doc = set_forbidden_stream(doc, request.user)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   246
    doc = absolute_src_xml(doc)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   247
    resp.write(lxml.etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   248
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   249
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   250
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   251
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   252
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   253
def save_ldt_project(request):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   254
    if request.method == "POST":
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   255
        ldt = request.POST['ldt']
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   256
        ldt_id = request.POST['id']
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   257
        ldtproject = Project.safe_objects.select_related().get(ldt_id=ldt_id) #@UndefinedVariable
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   258
        ldtxml=lxml.etree.fromstring(ldt)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   259
        #save xml ldt
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   260
        ldt, _, _ = relative_src_xml(ldtxml)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   261
        ldt = lxml.etree.tostring(ldt, pretty_print=True)          
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   262
        ldtproject.ldt = ldt
843
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   263
        
560
1cb2a4a573e1 correct annoations api handler + ldt encoding
ymh <ymh.work@gmail.com>
parents: 482
diff changeset
   264
        doc = lxml.etree.fromstring(ldtproject.ldt_encoded)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   265
        result = doc.xpath("/iri/project")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   266
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   267
        #set new title
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   268
        ldtproject.title = result[0].get("title")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   269
        
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   270
        #get new content list
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   271
        new_contents = []
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   272
        result = doc.xpath("/iri/medias/media")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   273
        for medianode in result:
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   274
            media_id = medianode.get("id")
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   275
            new_contents.append(media_id)
843
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   276
            #Put back the video fied from "forbidden_stream_url" to the video url
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   277
            if medianode.get("video") == settings.FORBIDDEN_STREAM_URL:
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   278
                content = Content.objects.get(iri_id=media_id)
843
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   279
                media = Media.objects.get(id=content.media_obj.id)
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   280
                medianode.set('video', media.videopath)
77f740eaf247 Bug correction on deletion content. Bug correction : forbidden_stream_url was saved in the xml of the project
rougeronj
parents: 730
diff changeset
   281
                ldtproject.ldt = lxml.etree.tostring(doc, pretty_print=True)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   282
    
330
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   283
        check_icon_project = False
343
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   284
        
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   285
        #find contents to remove
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   286
        for c in ldtproject.contents.all():
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   287
            if not c.iri_id in new_contents:
468
d1ff0694500b Add polemic properties to contents
verrierj
parents: 467
diff changeset
   288
                ldtproject.contents.remove(c)
333
4ddf8c0eeab4 Image size is checked before save + project image can be set manually
verrierj
parents: 330
diff changeset
   289
                if ldtproject.image == c.image:
4ddf8c0eeab4 Image size is checked before save + project image can be set manually
verrierj
parents: 330
diff changeset
   290
                    check_icon_project = True
343
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   291
        
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   292
        #add new contents
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   293
        contents_id = [c.iri_id for c in ldtproject.contents.all()]
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   294
        
330
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   295
        for c in new_contents:
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   296
            if c not in contents_id:
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   297
                content = Content.objects.get(iri_id=c)
468
d1ff0694500b Add polemic properties to contents
verrierj
parents: 467
diff changeset
   298
                ldtproject.contents.add(content)
343
1b9b509013a7 Stats are recomputed without parsing extra xml file when projects are saved from ligne de temps.
verrierj
parents: 333
diff changeset
   299
         
468
d1ff0694500b Add polemic properties to contents
verrierj
parents: 467
diff changeset
   300
        update_stat_project(ldtproject)
330
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   301
        
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   302
        #remove html tags added by flash
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   303
        description = ldtproject.get_description(doc)
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   304
        new_desc = clean_description(description)
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   305
            
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   306
        if new_desc:        
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   307
            desc_node = doc.xpath('/iri/project')[0]
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   308
            desc_node.set('abstract', new_desc)
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   309
            ldtproject.ldt = lxml.etree.tostring(doc, pretty_print=True)
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   310
            
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   311
        ldtproject.description = new_desc if new_desc else description
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   312
    
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   313
        #set a new icon for this project
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   314
        if check_icon_project:
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   315
            ldtproject.set_icon()
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   316
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   317
        ldtproject.save()
330
806188af5027 Projects have an icon identical to one of the media they contain, if this icon is different from the default icon. Icons can be set using ./manage.py setprojecticon once icons have been added to contents.
verrierj
parents: 324
diff changeset
   318
            
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   319
    else:
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   320
        ldt = ''
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   321
        new_contents = []
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   322
    
1081
2e086097cb5d Merge with cb83b868164a4795345f7a87ad9291c97725740d
ymh <ymh.work@gmail.com>
parents: 1035 1043
diff changeset
   323
    return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':ldt_id, 'title':ldtproject.title, 'contents': new_contents}, context_instance=RequestContext(request))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   324
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   325
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   326
def index(request, url):
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   327
    
1007
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
   328
    urlStr = absurl(request, "ldt.ldt_utils.views.lignesdetemps.init", args=['ldt', url])
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   329
    language_code = request.LANGUAGE_CODE[:2]
997
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   330
    colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   331
    i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n")
947c8ad09bd6 change of method to have absolute url for static file in views
grandjoncl
parents: 995
diff changeset
   332
    baseurl=absstatic(request, "ldt/swf/ldt/")
1007
a6d47caa7fc0 creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents: 1005
diff changeset
   333
    return render_to_response('ldt/ldt_utils/init_ldt.html', {'colorurl': colorurl, 'i18nurl': i18nurl, 'language': language_code, 'baseurl': baseurl, 'url': urlStr, 'weburl': get_web_url(request) + settings.BASE_URL}, context_instance=RequestContext(request))
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   334
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   335
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   336
def ldt(request, url, startSegment=None): 
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   337
    
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   338
    resp = HttpResponse(mimetype="text/xml; charset=utf-8")
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   339
    resp['Cache-Control'] = 'no-cache'
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   340
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   341
    contentList = Content.safe_objects.filter(iri_id=url) #@UndefinedVariable
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   342
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   343
    ldtgen = LdtUtils()
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   344
    doc = ldtgen.generate_ldt(contentList, title=contentList[0].title, startSegment=startSegment)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   345
    doc = set_forbidden_stream(doc, request.user)
1043
34af1cdcf746 Starting 'modifications_relative_ldtxml' branch
grandjoncl
parents: 1010
diff changeset
   346
    doc = absolute_src_xml(doc)
315
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   347
    doc.write(resp, pretty_print=True)
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   348
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   349
    return resp
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   350
877f89ec1efa Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff changeset
   351