src/ldt/ldt/ldt_utils/views.py
author verrierj
Mon, 07 Nov 2011 15:18:25 +0100
changeset 233 f6d009f83e38
parent 232 2878499a372b
child 235 e5e5c4aeede9
permissions -rwxr-xr-x
User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     1
from django.conf import settings
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     2
from django.contrib.auth.decorators import login_required
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
     3
from django.contrib.auth.models import User, Group
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     4
from django.core.urlresolvers import reverse
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
     5
from django.core.paginator import Paginator, InvalidPage, EmptyPage
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     6
from django.db.models import Q
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     7
from django.forms.models import model_to_dict
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     8
from django.forms.util import ErrorList
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
     9
from django.http import (HttpResponse, HttpResponseRedirect,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    10
    HttpResponseForbidden, HttpResponseServerError)
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
    11
from ldt.indexation import get_results_with_context, highlight_documents
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    12
from django.shortcuts import (render_to_response, get_object_or_404,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    13
    get_list_or_404)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    14
from django.template import RequestContext
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    15
from django.template.loader import render_to_string
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    16
from django.utils import simplejson
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    17
from django.utils.html import escape
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    18
from django.utils.translation import ugettext as _, ungettext
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    19
from forms import (LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm,
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
    20
    ContentForm, MediaForm, GroupAddForm)
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
    21
from guardian.shortcuts import assign, remove_perm, get_perms
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    22
from ldt.ldt_utils.models import Content
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    23
from ldt.ldt_utils.utils import boolean_convert, LdtUtils, LdtSearch
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    24
from lxml.html import fragment_fromstring
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    25
from models import Media, Project
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    26
from projectserializer import ProjectSerializer
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    27
from urllib2 import urlparse
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
    28
from operator import itemgetter
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
    29
from itertools import groupby
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    30
import base64
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    31
import django.core.urlresolvers
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    32
import ldt.auth as ldt_auth
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    33
import ldt.utils.path as ldt_utils_path
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    34
import logging
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    35
import lxml.etree
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    36
import mimetypes
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    37
import os
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    38
import urllib2
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    39
import subprocess
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    40
import re
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    41
import datetime
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    42
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    43
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    44
def workspace(request):
229
fce9a02cc0a2 Basic access control for Projects
verrierj
parents: 228
diff changeset
    45
    
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    46
    # list of contents
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    47
    content_list = Content.objects.all() #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    48
125
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    49
    # get list of projects owned by the current user
128
503e365a3af7 Starting 'group_management' branch (CAUTION : STILL SOME BUGS)
cavaliet
parents: 127
diff changeset
    50
    project_list = Project.objects.filter(owner=request.user) #@UndefinedVariable
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    51
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    52
    is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    53
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    54
    # render list
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    55
    return render_to_response("ldt/ldt_utils/workspace.html",
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    56
                              {'contents': content_list, 'projects': project_list,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    57
                               'is_gecko': is_gecko},
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    58
                              context_instance=RequestContext(request))
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    59
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    60
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    61
@login_required
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    62
def groups(request):
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    63
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    64
    # get list of all published projects
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    65
    group_list = request.user.groups #@UndefinedVariable
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    66
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    67
    is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    68
    
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    69
    # render list
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    70
    return render_to_response("ldt/ldt_utils/groups.html",
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
    71
                              {'groups': group_list,
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    72
                               'is_gecko': is_gecko},
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
    73
                              context_instance=RequestContext(request))
125
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    74
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    75
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    76
@login_required
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    77
def published_project(request):
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    78
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    79
    # get list of all published projects
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    80
    project_list = Project.objects.filter(state=2) #@UndefinedVariable
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    81
    # Search form
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    82
    form = SearchForm()
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    83
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    84
    is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    85
    
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    86
    # render list
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    87
    return render_to_response("ldt/ldt_utils/published_projects.html",
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    88
                              {'projects': project_list, 'form': form,
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
    89
                               'is_gecko': is_gecko},
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    90
                              context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    91
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    92
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    93
def popup_embed(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    94
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    95
    json_url = request.GET.get("json_url")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    96
    player_id = request.GET.get("player_id")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    97
    ldt_id = request.GET.get("ldt_id")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    98
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
    99
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   100
    project = Project.objects.get(ldt_id=ldt_id); #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   101
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   102
    stream_mode = project.stream_mode
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   103
    if stream_mode != "video":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   104
        stream_mode = 'radio'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   105
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   106
    player_width = 650
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   107
    player_height = 480
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   108
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   109
    if stream_mode == 'radio':
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   110
        player_height = 1
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   111
        
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   112
    if not ldt_auth.check_access(request.user, project):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   113
        return HttpResponseForbidden(_("You can not access this project"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   114
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   115
    ps = ProjectSerializer(project, from_contents=False, from_display=True)
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   116
    annotations = ps.get_annotations(first_cutting=True)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   117
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   118
    rend_dict = {'json_url':json_url, 'player_id':player_id, 'annotations':annotations, 'ldt_id': ldt_id, 'stream_mode': stream_mode, 'player_width': player_width, 'player_height': player_height}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   119
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   120
    embed_rendered = dict((typestr,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   121
                           (lambda s:escape(lxml.etree.tostring(fragment_fromstring(render_to_string("ldt/ldt_utils/partial/embed_%s.html" % (s), rend_dict, context_instance=RequestContext(request))), pretty_print=True)))(typestr))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   122
                           for typestr in ('player', 'seo_body', 'seo_meta', 'links'))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   123
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   124
    rend_dict['embed_rendered'] = embed_rendered
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   125
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   126
    return render_to_response("ldt/ldt_utils/embed_popup.html",
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   127
                              rend_dict,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   128
                              context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   129
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   130
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   131
@login_required
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   132
def projects_filter(request, filter, is_owner=False, status=0, id_group=None):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   133
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   134
    is_owner = boolean_convert(is_owner)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   135
    status = int(status)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   136
    query = Q()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   137
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   138
    if is_owner:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   139
        owner = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   140
        try:
128
503e365a3af7 Starting 'group_management' branch (CAUTION : STILL SOME BUGS)
cavaliet
parents: 127
diff changeset
   141
            owner = request.user #@UndefinedVariable
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   142
        except:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   143
            return HttpResponseServerError("<h1>User not found</h1>")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   144
        query &= Q(owner=owner)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   145
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   146
    if status > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   147
        query &= Q(state=status)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   148
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   149
    if filter:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   150
        if len(filter) > 0 and filter[0] == '_':
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   151
            filter = filter[1:]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   152
        query &= Q(title__icontains=filter)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   153
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   154
    is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   155
    show_username = False
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   156
    
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   157
    if id_group > 0:
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   158
        # Get group, user and project_list
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   159
        grp = Group.objects.get(id=id_group)  #@UndefinedVariable
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   160
        users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable
128
503e365a3af7 Starting 'group_management' branch (CAUTION : STILL SOME BUGS)
cavaliet
parents: 127
diff changeset
   161
        query &= Q(owner__in=users) #@UndefinedVariable
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   162
        project_list = Project.objects.filter(query).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username', 'lower_title') #@UndefinedVariable
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   163
        show_username = True
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   164
    else :
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   165
        project_list = Project.objects.filter(query) #@UndefinedVariable
125
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   166
    
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   167
    # Template depends on the projects's status
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   168
    if status == 2 :
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   169
        url_templ = "ldt/ldt_utils/partial/publishedprojectslist.html"
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   170
    else :
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   171
        url_templ = "ldt/ldt_utils/partial/projectslist.html"
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   172
    
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   173
    return render_to_response(url_templ,
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
   174
                              {'projects': project_list, 'show_username':show_username, 'is_gecko': is_gecko},
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   175
                              context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   176
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   177
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   178
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   179
@login_required
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   180
def contents_filter(request, filter):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   181
    if filter and len(filter) > 0 and filter[0] == '_':
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   182
        filter = filter[1:]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   183
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   184
    if filter:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   185
        content_list = Content.objects.filter(title__icontains=filter) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   186
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   187
        content_list = Content.objects.all() #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   188
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   189
    return render_to_response("ldt/ldt_utils/partial/contentslist.html",
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   190
                              {'contents': content_list},
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   191
                              context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   192
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   193
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   194
def search_form(request):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   195
    form = SearchForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   196
    return render_to_response('ldt/ldt_utils/search_form.html', {'form': form} , context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   197
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   198
193
1fc885d6e120 Fixed minor bugs
verrierj
parents: 185
diff changeset
   199
@login_required
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   200
def search_index(request):
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   201
        
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   202
    sform = SearchForm(request.POST)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   203
    if sform.is_valid():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   204
        search = sform.cleaned_data["search"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   205
        queryStr = base64.urlsafe_b64encode(search.encode('utf8'))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   206
        field = request.POST["field"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   207
        language_code = request.LANGUAGE_CODE[:2]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   208
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   209
        if request.POST.has_key("ldt_pres"):
176
a88714473302 Added a page to display search results
verrierj
parents: 167
diff changeset
   210
            url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.search_init", args=[field, queryStr])
a88714473302 Added a page to display search results
verrierj
parents: 167
diff changeset
   211
            return render_to_response('ldt/ldt_utils/init_ldt_full.html', {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': url}, context_instance=RequestContext(request))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   212
        else:
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   213
            results = get_results_with_context(field, search)     
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   214
            complete_results = []
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   215
            
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   216
            results.sort(key=lambda k: k['iri_id'])
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   217
            for iri_id, item in groupby(results, itemgetter('iri_id')):
193
1fc885d6e120 Fixed minor bugs
verrierj
parents: 185
diff changeset
   218
                try:
1fc885d6e120 Fixed minor bugs
verrierj
parents: 185
diff changeset
   219
                    content = Content.objects.get(iri_id=iri_id)
1fc885d6e120 Fixed minor bugs
verrierj
parents: 185
diff changeset
   220
                except Content.DoesNotExist:
1fc885d6e120 Fixed minor bugs
verrierj
parents: 185
diff changeset
   221
                    continue
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   222
                segments = list(item)
205
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   223
                for s in segments:
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   224
                    if not s['project_id']:
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   225
                        s['project_id'] = '_'
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   226
                        
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   227
                score = sum([seg['score'] for seg in segments])
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   228
                if content.description == None:
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   229
                    desc = ''
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   230
                else:
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   231
                    desc = content.description        
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   232
                complete_results.append({'list' : segments, 'score' : score, 'content_title' : content.title, 'content_id' : content.iri_id, 'content_description' : desc })
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   233
            complete_results.sort(key=lambda k: k['score'])  
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   234
                    
205
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   235
            request.session['complete_results'] = complete_results
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   236
            request.session['search'] = search
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   237
            request.session['field'] = field
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   238
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   239
            paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE)
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   240
            page = 1
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   241
            
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   242
            try:
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   243
                results = paginator.page(page)
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   244
            except (EmptyPage, InvalidPage):
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   245
                results = paginator.page(paginator.num_pages)
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   246
                
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   247
            results.object_list = highlight_documents(results.object_list, search, field)
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   248
            
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   249
            return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))   
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   250
        
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   251
    else:
198
202107fff250 Fixed minor bugs
verrierj
parents: 193
diff changeset
   252
        return HttpResponseRedirect(reverse('ldt.ldt_utils.views.published_project'))
202107fff250 Fixed minor bugs
verrierj
parents: 193
diff changeset
   253
        
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   254
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   255
def search_listing(request):
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   256
    if not request.session.__contains__('complete_results'):
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   257
        msg = _("Please enter valid keywords.")
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   258
        return render_to_response('ldt/ldt_utils/search_results.html', {'msg' : msg}, context_instance=RequestContext(request))
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   259
 
205
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   260
    complete_results = request.session.get('complete_results')
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   261
    search = request.session.get('search')
49c9890dce4a Fixed bug when displaying annotations from iri files in search results + thread in indexation
verrierj
parents: 198
diff changeset
   262
    field = request.session.get('field')
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   263
    paginator = Paginator(complete_results, settings.LDT_RESULTS_PER_PAGE)
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   264
    language_code = request.LANGUAGE_CODE[:2]
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   265
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   266
    try:
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   267
        page = int(request.GET.get('page', '1'))
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   268
    except ValueError:
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   269
        page = 1
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   270
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   271
    try:
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   272
        results = paginator.page(page)
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   273
    except (EmptyPage, InvalidPage):
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   274
        results = paginator.page(paginator.num_pages)
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   275
    
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   276
    results.object_list = highlight_documents(results.object_list, search, field)
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   277
183
89334901b7c2 Improve search page
verrierj
parents: 182
diff changeset
   278
    return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : paginator.count, 'search' : search, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))   
177
32fbed79d3a1 Display search results on multiple pages
verrierj
parents: 176
diff changeset
   279
  
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   280
def search_index_get(request, field, query):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   281
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   282
    language_code = request.LANGUAGE_CODE[:2]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   283
    
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   284
    url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.search_init", args=[field, query])
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   285
    return render_to_response('ldt/ldt_utils/init_ldt.html', {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': url}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   286
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   287
def search_init(request, field, query):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   288
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   289
    ldtgen = LdtUtils()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   290
    
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   291
    doc = ldtgen.generate_init([field, query], 'ldt.ldt_utils.views.search_ldt', 'ldt.ldt_utils.views.search_segments')
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   292
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   293
    resp = HttpResponse(mimetype="text/xml;charset=utf-8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   294
    resp.write(lxml.etree.tostring(doc, pretty_print=True, encoding="utf-8")) 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   295
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   296
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   297
def search_ldt(request, field, query, edition=None):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   298
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   299
    contentList = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   300
    resp = HttpResponse(mimetype="text/xml")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   301
    queryStr = ""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   302
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   303
    if query and len(query) > 0:        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   304
        queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   305
        searcher = LdtSearch()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   306
        ids = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   307
        projIds = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   308
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   309
        for result in searcher.query(field, queryStr):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   310
            ids[result["iri_id"]] = ""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   311
            projIds[result["project_id"]] = ""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   312
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   313
        id_list = ids.keys()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   314
        projId_list = projIds.keys()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   315
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   316
        #if edition is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   317
        #    ids_editions = 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")))            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   318
        #    id_list = filter(lambda id: id in id_list, ids_editions)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   319
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   320
        contentList = Content.objects.filter(iri_id__in=id_list)        #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   321
        projectList = Project.objects.filter(ldt_id__in=projId_list);
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   322
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   323
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   324
    ldtgen = LdtUtils()
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   325
    #            generate_ldt(contentList, title=u"", author=u"IRI Web", web_url=u"", startSegment=None, projects=None):
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   326
    doc = ldtgen.generate_ldt(contentList, title=u"Recherche : " + queryStr, projects=projectList)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   327
    doc.write(resp, pretty_print=True)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   328
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   329
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   330
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   331
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   332
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   333
def search_segments(request, field, query, edition=None):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   334
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   335
    if query and len(query) > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   336
        searcher = LdtSearch()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   337
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   338
        queryStr = base64.urlsafe_b64decode(query.encode("ascii")).decode("utf8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   339
        res = searcher.query(field, queryStr)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   340
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   341
        res = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   342
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   343
    iri_ids = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   344
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   345
    #if edition is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   346
    #    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")))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   347
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   348
    iri = lxml.etree.Element('iri')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   349
    doc = lxml.etree.ElementTree(iri)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   350
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   351
    for resultMap in res:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   352
        if iri_ids is None or resultMap['iri_id'] in iri_ids:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   353
            seg = lxml.etree.SubElement(iri, 'seg')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   354
            seg.set('idctt', resultMap['iri_id'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   355
            seg.set('idens', resultMap['ensemble_id'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   356
            seg.set('iddec', resultMap['decoupage_id'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   357
            seg.set('idseg', resultMap['element_id'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   358
            seg.set('idvue', "")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   359
            seg.set('crit', "")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   360
  
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   361
    #return doc  
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   362
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   363
    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   364
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   365
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   366
@login_required         
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   367
def list_ldt(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   368
    contents = Content.objects.all() #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   369
    try:
128
503e365a3af7 Starting 'group_management' branch (CAUTION : STILL SOME BUGS)
cavaliet
parents: 127
diff changeset
   370
        owner = request.user #@UndefinedVariable
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   371
    except:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   372
        return HttpResponseRedirect(settings.LOGIN_URL)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   373
    ldtProjects = Project.objects.filter(owner=owner) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   374
    context = {
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   375
    'contents': contents,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   376
    'projects': ldtProjects.reverse(),
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   377
    }
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   378
    return render_to_response('ldt/ldt_utils/ldt_list.html', context, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   379
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   380
@login_required         
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   381
def list_content(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   382
    contents = Content.objects.all() #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   383
    context = {
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   384
        'contents': contents,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   385
    }
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   386
    return render_to_response('ldt/ldt_utils/content_list.html', context, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   387
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   388
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   389
def create_ldt_view(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   390
    if request.method == "POST" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   391
        form = LdtAddForm(request.POST)
182
b7add86c2772 Resized modal windows #3 working on Firefox, Chrome, IE8 + update jQuery
verrierj
parents: 181
diff changeset
   392
        form_status = "none"
b7add86c2772 Resized modal windows #3 working on Firefox, Chrome, IE8 + update jQuery
verrierj
parents: 181
diff changeset
   393
        contents = Content.objects.all()
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
   394
        groups = request.user.groups.all()
178
4b83c370dc8a Added project description and tooltip
verrierj
parents: 177
diff changeset
   395
        
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   396
        if form.is_valid():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   397
            user = request.user
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   398
            p = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'],
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   399
                                   description=form.cleaned_data['description'], groups=form.cleaned_data['groups'])
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   400
            
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   401
            for k in request.POST:
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   402
                if k.startswith('perm_'):
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   403
                    group_id = k.split('_')[-1]
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   404
                    group = Group.objects.get(id=group_id)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   405
                    if request.POST[k] == 'write':
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   406
                        assign('change_project', group, p)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   407
            
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   408
            form_status = "saved"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   409
            contents = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   410
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   411
        form = LdtAddForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   412
        contents = Content.objects.all() #@UndefinedVariable
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
   413
        groups = request.user.groups.all()
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   414
        form_status = "none"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   415
            
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
   416
    return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'groups': groups, 'form': form, 'form_status':form_status, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:]}, context_instance=RequestContext(request))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   417
     
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   418
def created_ldt(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   419
    return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   420
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   421
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   422
def index_segment(request, project_id, content_id, cutting_id, ensemble_id, segment_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   423
    url_str = settings.WEB_URL + reverse("ldt.ldt_utils.views.init_segment", args=[project_id, content_id, ensemble_id, cutting_id, segment_id])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   424
    post_url = ""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   425
    language_code = request.LANGUAGE_CODE[:2]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   426
    readonly = 'true'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   427
    template_path = 'ldt/ldt_utils/init_ldt.html'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   428
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   429
    return render_to_response(template_path, {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': url_str, 'posturl': post_url, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   430
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   431
def init_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   432
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   433
    ldtgen = LdtUtils()
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   434
    doc = ldtgen.generate_init([project_id, content_id, ensemble_id, cutting_id, segment_id], 'ldt.ldt_utils.views.ldt_segment', 'ldt.ldt_utils.views.highlight_segment')
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   435
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   436
    return HttpResponse(lxml.etree.tostring(lxml.etree.ElementTree(doc), pretty_print=True), mimetype="text/xml;charset=utf-8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   437
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   438
def highlight_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   439
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   440
    iri = lxml.etree.Element('iri')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   441
    doc = lxml.etree.ElementTree(iri)    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   442
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   443
    seg = lxml.etree.SubElement(iri, 'seg')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   444
    seg.set('idctt', content_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   445
    seg.set('idens', ensemble_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   446
    seg.set('iddec', cutting_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   447
    seg.set('idseg', segment_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   448
    seg.set('idvue', "")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   449
    seg.set('crit', "")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   450
  
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   451
    return HttpResponse(lxml.etree.tostring(doc, pretty_print=True), mimetype="text/xml;charset=utf-8") 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   452
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   453
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   454
def ldt_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   455
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   456
    resp = HttpResponse(mimetype="text/xml")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   457
    resp['Cache-Control'] = 'no-cache, must-revalidate'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   458
    resp['Pragma'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   459
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   460
    if project_id and project_id != "_" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   461
        project = Project.objects.get(ldt_id=project_id) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   462
        ldtdoc = lxml.etree.fromstring(project.ldt.encode("utf-8"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   463
        displays_node = ldtdoc.find("displays")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   464
        if not displays_node:
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   465
            displays_node = lxml.etree.SubElement(ldtdoc, u"displays")        
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   466
        res = displays_node.xpath("display")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   467
        if len(res) > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   468
            display_node = res[0]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   469
        else:
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   470
            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'})
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   471
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   472
        res = display_node.xpath("content[@id='%s']/decoupage[(@id='%s') and (@idens='%s')]" % (content_id, cutting_id, ensemble_id))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   473
        if len(res) == 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   474
            #create node
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   475
            res = display_node.xpath("content[@id='%s']" % (content_id))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   476
            if len(res) == 0:
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   477
                content_node = lxml.etree.SubElement(display_node, u"content")
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   478
            else:
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   479
                content_node = res[0]
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   480
            lxml.etree.SubElement(content_node, u"decoupage", attrib={u'id':unicode(cutting_id), u'idens':unicode(ensemble_id)})
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   481
        active_segment_node = displays_node.find(u"activeSegment")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   482
        if not active_segment_node:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   483
            active_segment_node = lxml.etree.SubElement(displays_node, u"activeSegment")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   484
        id_node = active_segment_node.find(u"id")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   485
        if id_node:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   486
            active_segment_node.remove(id_node)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   487
        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)})
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   488
                                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   489
        resp.write(lxml.etree.tostring(ldtdoc, xml_declaration=True, encoding='utf-8', pretty_print=True))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   490
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   491
        # generate ldt from 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   492
        ldtgen = LdtUtils()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   493
        content_list = Content.objects.filter(iri_id=content_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   494
        if request.user and request.user.username:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   495
            username = request.user.username
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   496
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   497
            username = "webuser"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   498
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   499
        start_segment = {
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   500
            'idcontent': content_id,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   501
            'idgroup' : ensemble_id,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   502
            'idcutting' : cutting_id,
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   503
            'idsegment' : segment_id
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   504
        }
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   505
        
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   506
        doc = ldtgen.generate_ldt(content_list, "segment : ", author=username, startSegment=start_segment)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   507
        
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   508
        doc.write(resp, pretty_print=('DEBUG' in dir(settings) and settings.DEBUG))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   509
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   510
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   511
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   512
#        ldtgen.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   513
    
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
   514
def index_project(request, id, full=False):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   515
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   516
    urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldt_project', id])
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   517
    posturl = settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldt_project")
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   518
    language_code = request.LANGUAGE_CODE[:2]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   519
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   520
    ldt = get_object_or_404(Project, ldt_id=id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   521
    if ldt.state == 2: #published
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   522
        readonly = 'true'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   523
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   524
        readonly = 'false'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   525
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   526
    if full:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   527
        template_path = 'ldt/ldt_utils/init_ldt_full.html'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   528
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   529
        template_path = 'ldt/ldt_utils/init_ldt.html'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   530
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   531
    return render_to_response(template_path, {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   532
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   533
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   534
def init(request, method, url):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   535
    ldtgen = LdtUtils()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   536
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   537
    doc = ldtgen.generate_init([url], 'ldt.ldt_utils.views.' + method, None)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   538
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   539
    resp = HttpResponse(mimetype="text/xml")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   540
    resp['Cache-Control'] = 'no-cache, must-revalidate'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   541
    resp['Pragma'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   542
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   543
    resp.write(lxml.etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   544
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   545
       
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   546
def ldt_project(request, id):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   547
    resp = HttpResponse(mimetype="text/xml")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   548
    resp['Cache-Control'] = 'no-cache, must-revalidate'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   549
    resp['Pragma'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   550
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   551
    project = Project.objects.get(ldt_id=id) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   552
    resp.write(project.ldt)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   553
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   554
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   555
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   556
def project_json_id(request, id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   557
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   558
    project = get_object_or_404(Project, ldt_id=id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   559
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   560
    return project_json(request, project, False)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   561
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   562
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   563
def project_json_externalid(request, id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   564
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   565
    res_proj = get_list_or_404(Project.objects.order_by('-modification_date'), contents__external_id=id) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   566
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   567
    return project_json(request, res_proj[0], False)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   568
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   569
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   570
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   571
def project_json(request, project, serialize_contents=True):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   572
    
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   573
    if not ldt_auth.check_access(request.user, project):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   574
        return HttpResponseForbidden(_("You can not access this project"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   575
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   576
    mimetype = request.REQUEST.get("mimetype")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   577
    if mimetype is None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   578
        mimetype = "application/json; charset=utf-8"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   579
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   580
        mimetype = mimetype.encode("utf-8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   581
    if "charset" not in mimetype:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   582
        mimetype += "; charset=utf-8" 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   583
    resp = HttpResponse(mimetype=mimetype)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   584
    resp['Cache-Control'] = 'no-cache, must-revalidate'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   585
    resp['Pragma'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   586
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   587
    indent = request.REQUEST.get("indent")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   588
    if indent is None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   589
        indent = settings.LDT_JSON_DEFAULT_INDENT
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   590
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   591
        indent = int(indent)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   592
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   593
    callback = request.REQUEST.get("callback")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   594
    escape_str = request.REQUEST.get("escape")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   595
    escape_bool = False
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   596
    if escape_str:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   597
        escape_bool = {'true': True, 'false': False, "0": False, "1": True}.get(escape_str.lower())
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   598
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   599
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   600
    ps = ProjectSerializer(project, serialize_contents)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   601
    project_dict = ps.serialize_to_cinelab()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   602
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   603
    json_str = simplejson.dumps(project_dict, ensure_ascii=False, indent=indent)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   604
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   605
    if callback is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   606
        json_str = "%s(%s)" % (callback, json_str)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   607
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   608
    if escape_bool:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   609
        json_str = escape(json_str)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   610
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   611
    resp.write(json_str)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   612
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   613
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   614
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   615
def project_annotations_rdf(request, ldt_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   616
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   617
    project = Project.objects.get(ldt_id=ldt_id); #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   618
    
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   619
    if not ldt_auth.check_access(request.user, project):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   620
        return HttpResponseForbidden(_("You can not access this project"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   621
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   622
    mimetype = request.REQUEST.get("mimetype")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   623
    if mimetype is None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   624
        mimetype = "application/rdf+xml; charset=utf-8"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   625
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   626
        mimetype = mimetype.encode("utf-8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   627
    if "charset" not in mimetype:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   628
        mimetype += "; charset=utf-8" 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   629
    resp = HttpResponse(mimetype=mimetype)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   630
    resp['Cache-Control'] = 'no-cache, must-revalidate'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   631
    resp['Pragma'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   632
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   633
    ps = ProjectSerializer(project, from_contents=False, from_display=True) 
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   634
    annotations = ps.get_annotations(first_cutting=True)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   635
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   636
    rdf_ns = u"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   637
    dc_ns = u"http://purl.org/dc/elements/1.1/"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   638
    rdf = u"{%s}" % rdf_ns
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   639
    dc = u"{%s}" % dc_ns
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   640
    nsmap = {u'rdf' : rdf_ns, u'dc':dc_ns}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   641
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   642
    rdf_root = lxml.etree.Element(rdf + u"RDF", nsmap=nsmap)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   643
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   644
    logging.debug("RDF annotations : " + repr(annotations)) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   645
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   646
    for annotation in annotations:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   647
        uri = u""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   648
        if 'uri' in annotation and annotation['uri']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   649
            uri = unicode(annotation['uri'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   650
        annot_desc = lxml.etree.SubElement(rdf_root, rdf + u"Description")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   651
        annot_desc.set(rdf + u'about', uri)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   652
        if annotation['title']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   653
            lxml.etree.SubElement(annot_desc, dc + 'title').text = lxml.etree.CDATA(unicode(annotation['title']))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   654
        if annotation['desc']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   655
            lxml.etree.SubElement(annot_desc, dc + 'description').text = lxml.etree.CDATA(unicode(annotation['desc']))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   656
        if annotation['tags']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   657
            for tag in annotation['tags']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   658
                lxml.etree.SubElement(annot_desc, dc + 'subject').text = lxml.etree.CDATA(unicode(tag))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   659
        lxml.etree.SubElement(annot_desc, dc + 'coverage').text = u"start=%s, duration=%s" % (annotation['begin'], annotation['duration'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   660
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   661
    resp.write(u"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   662
    resp.write(u"<!DOCTYPE rdf:RDF PUBLIC \"-//DUBLIN CORE//DCMES DTD 2002/07/31//EN\" \"http://dublincore.org/documents/2002/07/31/dcmes-xml/dcmes-xml-dtd.dtd\">\n")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   663
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   664
    resp.write(lxml.etree.tostring(rdf_root, xml_declaration=False, encoding="utf-8", pretty_print=True))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   665
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   666
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   667
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   668
def save_ldt_project(request):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   669
    if request.method == "POST":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   670
        ldt = request.POST['ldt']
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   671
        id = request.POST['id']
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   672
        ldtproject = Project.objects.get(ldt_id=id) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   673
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   674
        #save xml ldt
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   675
        ldtproject.ldt = ldt
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   676
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   677
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   678
        doc = lxml.etree.fromstring(ldtproject.ldt.encode("utf-8"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   679
        result = doc.xpath("/iri/project")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   680
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   681
        #set new title
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   682
        ldtproject.title = result[0].get("title")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   683
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   684
        #get new content list
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   685
        new_contents = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   686
        result = doc.xpath("/iri/medias/media")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   687
        for medianode in result:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   688
            id = medianode.get("id")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   689
            new_contents.append(id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   690
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   691
        #set new content list
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   692
        for c in ldtproject.contents.all():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   693
            if not c.iri_id in new_contents:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   694
                ldtproject.contents.remove(c)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   695
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   696
        ldtproject.save()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   697
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   698
        ldt = ''
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   699
        new_contents = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   700
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   701
    return render_to_response('ldt/ldt_utils/save_done.html', {'ldt': ldt, 'id':id, 'title':ldtproject.title, 'contents': new_contents}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   702
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   703
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   704
def publish(request, id, redirect=True):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   705
    ldt = get_object_or_404(Project, ldt_id=id)
232
2878499a372b Security layer moved to middleware and ldt_utils __init__ file
verrierj
parents: 231
diff changeset
   706
    ldt.publish()
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   707
    redirect = boolean_convert(redirect)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   708
    if redirect:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   709
        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   710
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   711
        return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state, 'ldt_id': ldt.ldt_id}}, ensure_ascii=False), mimetype='application/json')
229
fce9a02cc0a2 Basic access control for Projects
verrierj
parents: 228
diff changeset
   712
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   713
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   714
def unpublish(request, id, redirect=True):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   715
    ldt = get_object_or_404(Project, ldt_id=id)
232
2878499a372b Security layer moved to middleware and ldt_utils __init__ file
verrierj
parents: 231
diff changeset
   716
    ldt.unpublish()
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   717
    redirect = boolean_convert(redirect)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   718
    if redirect:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   719
        return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   720
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   721
        return HttpResponse(simplejson.dumps({'res':True, 'ldt': {'id': ldt.id, 'state':ldt.state, 'ldt_id': ldt.ldt_id}}, ensure_ascii=False), mimetype='application/json')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   722
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   723
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   724
def index(request, url):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   725
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   726
    urlStr = settings.WEB_URL + reverse("ldt_init", args=['ldt', url])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   727
    language_code = request.LANGUAGE_CODE[:2]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   728
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   729
    return render_to_response('ldt/ldt_utils/init_ldt.html', {'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL + settings.BASE_URL}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   730
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   731
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   732
def ldt(request, url, startSegment=None):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   733
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   734
    resp = HttpResponse(mimetype="text/xml; charset=utf-8")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   735
    resp['Cache-Control'] = 'no-cache'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   736
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   737
    contentList = Content.objects.filter(iri_id=url) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   738
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   739
    ldtgen = LdtUtils()
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
   740
    doc = ldtgen.generate_ldt(contentList, title=contentList[0].title, startSegment=startSegment)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   741
    doc.write(resp, pretty_print=True)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   742
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   743
    return resp
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   744
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   745
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   746
def loading(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   747
    return render_to_response('ldt/ldt_utils/loading.html', context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   748
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   749
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   750
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   751
def create_project(request, iri_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   752
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   753
    content = get_object_or_404(Content, iri_id=iri_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   754
    contents = [ content, ]
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   755
    groups = request.user.groups.all()
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   756
    if request.method == "POST" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   757
        form = AddProjectForm(request.POST)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   758
        if form.is_valid():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   759
            user = request.user
179
03007a7c14ca Corrected bug in description display
verrierj
parents: 178
diff changeset
   760
            project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents, description=form.cleaned_data['description'])
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   761
            # Modal window is not used with firefox
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   762
            is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   763
            if is_gecko :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   764
                return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   765
            else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   766
                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   767
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   768
        form = AddProjectForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   769
    # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   770
    target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   771
    return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'groups' : groups, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   772
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   773
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   774
def update_project(request, ldt_id):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   775
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   776
    project = get_object_or_404(Project, ldt_id=ldt_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   777
    contents = project.contents.all()
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
   778
    groups = request.user.groups.all()
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   779
    
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   780
    for g in groups:
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   781
        list_perms = get_perms(g, project)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   782
        if 'view_project' in list_perms:
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   783
            g.member = True
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   784
        if 'change_project' in list_perms:
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   785
            g.change = True
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
   786
    
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   787
    if request.method == "POST" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   788
        submit_action = request.REQUEST.get("submit_button", False)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   789
        if submit_action == "prepare_delete":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   790
            errors = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   791
            if project.state == 2:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   792
                errors.append(_("the project %(title)s is published. please unpublish before deleting.") % {'title':project.title})
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   793
                message = _("can not delete the project. Please correct the following error")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   794
                title = _('title error deleting project')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   795
            else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   796
                message = _("please confirm deleting project %(title)s") % {'title':project.title}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   797
                title = _("confirm deletion")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   798
            return render_to_response('ldt/ldt_utils/error_confirm.html', {'errors':errors, 'message':message, 'title': title}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   799
        elif submit_action == "delete":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   800
            if project.state != 2:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   801
                project.delete()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   802
            form_status = 'deleted'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   803
            form = AddProjectForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   804
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   805
            form_status = 'saved'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   806
            form = AddProjectForm(request.POST)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   807
            if form.is_valid():
178
4b83c370dc8a Added project description and tooltip
verrierj
parents: 177
diff changeset
   808
                if project.title != form.cleaned_data['title'] or project.description != form.cleaned_data['description']:
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   809
                    project.title = form.cleaned_data['title']
178
4b83c370dc8a Added project description and tooltip
verrierj
parents: 177
diff changeset
   810
                    project.description = form.cleaned_data['description']
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   811
                    ldt = lxml.etree.fromstring(project.ldt.encode("utf-8"))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   812
                    res = ldt.xpath("/iri/project")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   813
                    res[0].set("title", project.title)
179
03007a7c14ca Corrected bug in description display
verrierj
parents: 178
diff changeset
   814
                    res[0].set("abstract", project.description)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   815
                    project.ldt = lxml.etree.tostring(ldt, pretty_print=True)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   816
                    project.save()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   817
    else:
179
03007a7c14ca Corrected bug in description display
verrierj
parents: 178
diff changeset
   818
        form = AddProjectForm({'title':unicode(project.title), 'description':unicode(project.get_description())})
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   819
        form_status = 'none'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   820
        
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
   821
    return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status':form_status, 'groups': groups, 'ldt_id': ldt_id, 'contents':contents, 'create_project_action':reverse("ldt.ldt_utils.views.update_project", args=[ldt_id])}, context_instance=RequestContext(request))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   822
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   823
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   824
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   825
def copy_project(request, ldt_id):
182
b7add86c2772 Resized modal windows #3 working on Firefox, Chrome, IE8 + update jQuery
verrierj
parents: 181
diff changeset
   826
    
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   827
    project = get_object_or_404(Project, ldt_id=ldt_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   828
    if request.method == "POST" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   829
        form = CopyProjectForm(request.POST)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   830
        if form.is_valid():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   831
            user = request.user
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   832
            project = project.copy_project(title=request.POST['title'], user=user)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   833
            is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   834
            if is_gecko:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   835
                return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   836
            else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   837
                return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   838
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   839
        form = CopyProjectForm
125
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   840
    # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   841
    target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
5c3ed9c919bb New search feature on top right corner. Advanced search included in published projects tab. Colored icons. Change css to avoid scroll on contents and projects table.
cavaliet
parents: 122
diff changeset
   842
    return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project, 'target_parent':target_parent}, context_instance=RequestContext(request))
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   843
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   844
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   845
def write_content_base(request, iri_id=None):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   846
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   847
    if iri_id:        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   848
        instance_content = Content.objects.get(iri_id=iri_id) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   849
        instance_media = instance_content.media_obj
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   850
        logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content)) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   851
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   852
        logging.debug("No iri_id") #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   853
        instance_content = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   854
        instance_media = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   855
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   856
    form_status = 'none'        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   857
    if request.method == "POST":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   858
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   859
        if instance_content is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   860
            content_instance_val = model_to_dict(instance_content, exclude=ContentForm.Meta.exclude)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   861
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   862
            content_instance_val = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   863
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   864
        if instance_media is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   865
            media_instance_val = model_to_dict(instance_media, exclude=MediaForm.Meta.exclude)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   866
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   867
            media_instance_val = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   868
        #add prefix
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   869
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   870
        def add_prefix(dict, prefix):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   871
            for key, value in dict.items():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   872
                dict['%s-%s' % (prefix, key)] = value
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   873
                del(dict[key])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   874
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   875
        add_prefix(content_instance_val, "content")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   876
        add_prefix(media_instance_val, "media")        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   877
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   878
        for k in request.POST.keys():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   879
            value = request.POST.get(k)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   880
            content_instance_val[k] = value
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   881
            media_instance_val[k] = value
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   882
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   883
        content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   884
        media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   885
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   886
        media_valid = media_form.is_valid()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   887
        content_valid = content_form.is_valid()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   888
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   889
        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
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   890
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   891
        if media_valid and content_valid :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   892
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   893
            # see if media must be created
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   894
            cleaned_data = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   895
            cleaned_data.update(media_form.cleaned_data)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   896
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   897
            media_input_type = content_form.cleaned_data["media_input_type"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   898
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   899
            if media_input_type == "none":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   900
                media = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   901
            elif media_input_type == "link":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   902
                media = content_form.cleaned_data["media_obj"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   903
                created = False
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   904
            elif media_input_type == "create":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   905
                del cleaned_data["media_file"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   906
                if not cleaned_data['videopath']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   907
                    cleaned_data['videopath'] = settings.STREAM_URL
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   908
                # if the source is already http:// or rtmp:// we don't have to add STREAM_URL
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   909
                if cleaned_data['src'].startswith("rtmp://") or cleaned_data['src'].startswith("http://"):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   910
                    cleaned_data['videopath'] = ''
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   911
                media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   912
            elif media_input_type == "url" or media_input_type == "upload" :
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   913
                # copy file
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   914
                #complet src
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   915
                destination_file = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   916
                source_file = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   917
                try:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   918
                    if media_input_type == "url":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   919
                        url = cleaned_data["external_src_url"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   920
                        source_file = urllib2.urlopen(url)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   921
                        source_filename = source_file.info().get('Content-Disposition', None)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   922
                        if not source_filename:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   923
                            source_filename = urlparse.urlparse(url).path.rstrip("/").split('/')[-1]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   924
                    elif media_input_type == "upload":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   925
                        #source_file = request.FILES['media-media_file']
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   926
                        # At this point the file has already be uploaded thanks to the upload view, and original file name is sent through a post var
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   927
                        source_filename = request.POST["media-local_file_name"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   928
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   929
                    source_filename = ldt_utils_path.sanitize_filename(source_filename)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   930
                    destination_filepath = os.path.join(settings.STREAM_PATH, source_filename)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   931
                    base_source_filename = source_filename
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   932
                    extension = base_source_filename.split(".")[-1]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   933
                    if extension == base_source_filename:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   934
                        extension = ""
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   935
                        base_basename_filename = base_source_filename
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   936
                    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   937
                        base_basename_filename = base_source_filename[:-1 * (len(extension) + 1)]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   938
                    i = 0
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   939
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   940
                    while os.path.exists(destination_filepath):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   941
                        base_source_filename = "%s.%d.%s" % (base_basename_filename, i, extension)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   942
                        destination_filepath = os.path.join(settings.STREAM_PATH, base_source_filename)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   943
                        i += 1
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   944
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   945
                    if media_input_type == "url":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   946
                        # we upload the file if we are in url case
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   947
                        destination_file = open(destination_filepath, "wb")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   948
                        chunck = source_file.read(2048)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   949
                        while chunck:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   950
                            destination_file.write(chunck)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   951
                            chunck = source_file.read(2048)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   952
                        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   953
                    elif media_input_type == "upload":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   954
                        # The media file has been uploaded in the session temp folder 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   955
                        # so we just have to move to the regular folder and rename it.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   956
                        if os.path.exists(os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", source_filename)):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   957
                            os.rename(os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", source_filename), os.path.join(settings.STREAM_PATH, base_source_filename))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   958
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   959
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   960
                    src_prefix = settings.STREAM_SRC_PREFIX.rstrip("/")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   961
                    if len(src_prefix) > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   962
                        cleaned_data["src"] = src_prefix + "/" + base_source_filename
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   963
                    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   964
                        cleaned_data["src"] = base_source_filename
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   965
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   966
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   967
                except Exception as inst:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   968
                    logging.debug("write_content_base : POST error when processing file:" + str(inst)) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   969
                    form_status = "error"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   970
                    #set error for form
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   971
                    if media_input_type == "url":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   972
                        errors = media_form._errors.setdefault("external_src_url", ErrorList())
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   973
                        errors.append(_("Problem when downloading file from url : ") + url)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   974
                    elif media_input_type == "upload":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   975
                        errors = media_form._errors.setdefault("media_file", ErrorList())
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   976
                        errors.append(_("Problem when uploading file : ") + str(inst))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   977
                finally:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   978
                    if media_input_type == "url":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   979
                        if destination_file:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   980
                            destination_file.close()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   981
                        if source_file:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   982
                            source_file.close()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   983
                
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   984
                if form_status != "error":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   985
                    #try:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   986
                    del cleaned_data["media_file"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   987
                    if not cleaned_data['videopath']:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   988
                        cleaned_data['videopath'] = settings.STREAM_URL
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   989
                    mimetype = cleaned_data.get('mimetype_field', None)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   990
                    if not mimetype:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   991
                        mimetype = mimetypes.guess_type(cleaned_data['src'])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   992
                    cleaned_data['mimetype_field'] = mimetype
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   993
                    media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   994
                else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   995
                    media = None
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   996
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   997
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   998
            if media and not created:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
   999
                for attribute in ('external_id', 'external_permalink', 'external_publication_url', 'external_src_url', 'media_creation_date', 'videopath', 'duration', 'description', 'title'):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1000
                    setattr(media, attribute, cleaned_data.get(attribute))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1001
                mimetype = cleaned_data.get('mimetype_field', None)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1002
                if not mimetype:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1003
                    mimetype = mimetypes.guess_type(media.src)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1004
                media.mimetype_field = mimetype
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1005
                    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1006
                media.save()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1007
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1008
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1009
            if form_status != "error":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1010
                #try:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1011
                content_defaults = {}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1012
                content_defaults.update(content_form.cleaned_data)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1013
                content_defaults['media_obj'] = media
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1014
                del content_defaults["media_input_type"]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1015
                content, created = Content.objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults) #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1016
                if not created:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1017
                    for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1018
                        setattr(content, attribute, content_defaults[attribute])
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1019
                content.save()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1020
                form_status = 'saved'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1021
                media_form = MediaForm(instance=media, prefix="media")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1022
                content_form = ContentForm(instance=content, prefix="content")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1023
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1024
            form_status = 'error'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1025
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1026
        form_status = 'empty'
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1027
        initial = { 'media_input_type':"link"}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1028
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1029
        content_form = ContentForm(prefix="content", instance=instance_content, initial=initial)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1030
        media_form = MediaForm(prefix="media", instance=instance_media)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1031
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1032
        if instance_content is not None:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1033
            content_form.media_input_type = "link"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1034
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1035
    return content_form, media_form, form_status
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1036
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1037
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1038
def write_content(request, iri_id=None):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1039
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1040
    submit_action = request.REQUEST.get("submit_button", False) 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1041
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1042
    if submit_action == "prepare_delete": 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1043
        errors, titles = prepare_delete_content(request, iri_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1044
        if errors and len(errors) > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1045
            message = ungettext("There is %(count)d error when deleting content", "There are %(count)d errors when deleting content", len(errors)) % { 'count': len(errors)}
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1046
            title_msg = _('title error deleting content')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1047
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1048
            message = _("Confirm delete content %(titles)s") % { 'titles' : ",".join(titles) }
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1049
            title_msg = _("confirm delete content")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1050
        return render_to_response('ldt/ldt_utils/error_confirm.html', {'errors':errors, 'message':message, 'title': title_msg}, context_instance=RequestContext(request))  
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1051
    elif submit_action == "delete":
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1052
        delete_content(request, iri_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1053
        form_status = "deleted"
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1054
        content_form = ContentForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1055
        media_form = MediaForm()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1056
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1057
        content_form, media_form, form_status = write_content_base(request, iri_id)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1058
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1059
    if iri_id:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1060
        create_content_action = reverse('ldt.ldt_utils.views.write_content', kwargs={'iri_id':iri_id})
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1061
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1062
        create_content_action = reverse('ldt.ldt_utils.views.write_content')
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1063
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1064
    session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1065
    cookie_name = settings.SESSION_COOKIE_NAME
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1066
    
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1067
    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, 'iri_id': iri_id, 'session_key':session_key, 'cookie_name':cookie_name}, context_instance=RequestContext(request))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1068
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1069
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1070
def prepare_delete_content(request, iri_id=None):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1071
    errors = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1072
    titles = []
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1073
    if not iri_id:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1074
        iri_id = request.REQUEST.get("iri_id", None)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1075
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1076
    if iri_id:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1077
        for content in Content.objects.filter(iri_id=iri_id): #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1078
            titles.append(unicode(content.title))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1079
            projects = content.project_set.all()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1080
            projects_nb = len(projects)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1081
            if projects_nb > 0:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1082
                project_titles = map(lambda p: unicode(p.title), projects)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1083
                errors.append(ungettext("Content '%(title)s' is referenced by this project : %(project_titles)s. Please delete it beforehand.", "Content '%(title)s' is referenced by %(count)d projects: %(project_titles)s. Please delete them beforehand.", projects_nb) % {'title':unicode(content.title), 'count':projects_nb, 'project_titles': ",".join(project_titles)})
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1084
 
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1085
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1086
    return errors, titles
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1087
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1088
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1089
@login_required
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1090
def delete_content(request, iri_id=None):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1091
    if not iri_id:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1092
        iri_id = request.REQUEST.get("iri_id", None)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1093
        
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1094
    if iri_id:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1095
        Content.objects.filter(iri_id=iri_id).delete() #@UndefinedVariable
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1096
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1097
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1098
def upload(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1099
    if request.method == 'POST':
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1100
        for field_name in request.FILES:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1101
            # We get the file name
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1102
            source_file = request.FILES[field_name]
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1103
            source_filename = source_file.name
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1104
            # We sanitize the file name : no space, only lower case.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1105
            source_filename = ldt_utils_path.sanitize_filename(source_filename)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1106
            # We create the session temp folder if necessary
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1107
            if not os.path.exists(os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME])):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1108
                os.makedirs(os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1109
            destination_filepath = os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", source_filename)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1110
            # We delete the existing file if necessary
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1111
            if os.path.exists(destination_filepath):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1112
                os.remove(destination_filepath)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1113
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1114
            destination_file = open(destination_filepath, "wb")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1115
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1116
            for chunk in source_file.chunks():
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1117
                destination_file.write(chunk)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1118
            destination_file.close()
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1119
            
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1120
        # indicate that everything is OK for SWFUpload
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1121
        return HttpResponse("ok", mimetype="text/plain")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1122
    else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1123
        return HttpResponse("notok", mimetype="text/plain")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1124
167
fe00e7302efe Change class and functions names to follow PEP8 formatting standards
verrierj
parents: 128
diff changeset
  1125
def remove_temp_file(request):
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1126
    # The filename arrives with a GET var.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1127
    file_path = os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", ldt_utils_path.sanitize_filename(request.GET["filename"]))
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1128
    if os.path.exists(file_path):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1129
        os.remove(file_path)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1130
    return HttpResponse("remove ok", mimetype="text/plain")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1131
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1132
def get_duration(request):
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1133
    try:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1134
        # The filename arrives with a GET var.
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1135
        file_path = os.path.join(settings.STREAM_PATH, "tmp/" + request.COOKIES[settings.SESSION_COOKIE_NAME] + "/", ldt_utils_path.sanitize_filename(request.GET["filename"]))
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1136
        if hasattr(settings, 'FFMPEG_PATH') and os.path.exists(file_path):
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1137
            output = str(subprocess.Popen([settings.FFMPEG_PATH, "-i", file_path], stderr=subprocess.PIPE).communicate()[1])
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1138
            m = re.search("Duration:\s*?([\d.:]+)", output, re.M)
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1139
            dur_arr = m.group(1).split(":")
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1140
            td = datetime.timedelta(hours=int(dur_arr[0]), minutes=int(dur_arr[1]), seconds=float(dur_arr[2]))
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1141
            str_duration = str((td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10 ** 3)
122
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1142
            return HttpResponse(str_duration, mimetype="text/plain")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1143
        else:
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1144
            return HttpResponse("", mimetype="text/plain")
f3a013f66974 Add search form, displaying the results in a regular LDT template. Update language files.
cavaliet
parents: 116
diff changeset
  1145
    except Exception as inst:
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1146
        return HttpResponse(str(inst), mimetype="text/plain")
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1147
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1148
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1149
@login_required
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1150
def get_group_projects(request):
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1151
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1152
    # Get group, user and project_list
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1153
    grp = Group.objects.get(id=request.POST["id_group"])  #@UndefinedVariable
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1154
    users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1155
    project_list = Project.objects.filter(owner__in=users).extra(select={'lower_title': 'lower(title)'}).order_by('owner__username', 'lower_title')  #@UndefinedVariable
127
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1156
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1157
    is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1158
    
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1159
    # render list
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1160
    return render_to_response("ldt/ldt_utils/partial/projectslist.html",
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1161
                              {'projects': project_list, 'show_username':True,
854f0305d866 First step of group management : tab, template, quick search, css.
cavaliet
parents: 125
diff changeset
  1162
                               'is_gecko': is_gecko},
181
12e279e0253c Added loading bar #16 + groupped search results by project
verrierj
parents: 179
diff changeset
  1163
                              context_instance=RequestContext(request))
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1164
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1165
@login_required
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1166
def create_group(request):
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1167
    user_list = User.objects.exclude(id=settings.ANONYMOUS_USER_ID).exclude(id=request.user.id)
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1168
    form_status = ''
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1169
    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1170
    if request.method == 'POST':
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1171
        form = GroupAddForm(request.POST)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1172
        
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1173
        if form.is_valid():
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1174
            name = form.cleaned_data['name']
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1175
            members_list = form.cleaned_data['members_list']
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1176
            admin_list = form.cleaned_data['admin_list']
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1177
            
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1178
            group = Group.objects.create(name=name)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1179
            group.save()
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1180
            assign('change_group', request.user, group)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1181
            user_list = User.objects.filter(id__in=members_list)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1182
            
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1183
            for user in user_list:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1184
                user.groups.add(group)
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1185
            request.user.groups.add(group)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1186
            
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1187
            for user in admin_list:
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1188
                assign('change_group', user, group)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1189
                user.groups.add(group)
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1190
             
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1191
            form_status = 'saved' 
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1192
            
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1193
    else:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1194
        form = GroupAddForm()        
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1195
    
233
f6d009f83e38 User can choose how to share a project at creation (read/write). Permissions updating does not work yet.
verrierj
parents: 232
diff changeset
  1196
    return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'user_list' : user_list, 'admin_list': user_list}, context_instance=RequestContext(request))
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1197
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1198
@login_required
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1199
def update_group(request, group_id):
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1200
    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1201
    group = get_object_or_404(Group, id=group_id)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1202
    
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
  1203
    user_list = User.objects.exclude(id=settings.ANONYMOUS_USER_ID).exclude(id=request.user.id)
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1204
    members_list = User.objects.filter(groups__id=group_id)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1205
    form_status = ''    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1206
    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1207
    if not request.user.has_perm('change_group', group):
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1208
        user_list = []
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1209
        form_status = 'saved'
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1210
        form = GroupAddForm()
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1211
        return render_to_response("ldt/ldt_utils/create_group.html", {'group_id' : group_id, 'form' : form, 'form_status' : form_status, 'user_list' : user_list}, context_instance=RequestContext(request))
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1212
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1213
    for u in user_list:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1214
        if u in members_list:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1215
            u.member = True
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1216
            
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1217
    if request.method == "POST":
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1218
        form = GroupAddForm(request.POST)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1219
        submit_action = request.REQUEST.get("submit_button", False)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1220
        
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1221
        if submit_action == 'delete':
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1222
            remove_perm('change_group', request.user, group)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1223
            group.delete()
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1224
            form_status = 'deleted'
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1225
        else:            
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1226
            if form.is_valid():
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1227
                name = form.cleaned_data['name']
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1228
                members_list = form.cleaned_data['members_list']
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1229
                group.name = name
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1230
                
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1231
                for user in User.objects.all():
231
535ce952e51c Stub of html template for project creation containing a group selection
verrierj
parents: 229
diff changeset
  1232
                    if user in members_list:                        
228
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1233
                        group.user_set.add(user)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1234
                    else:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1235
                        group.user_set.remove(user)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1236
                group.user_set.add(user)
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1237
                group.save()
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1238
                form_status = 'saved'       
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1239
                    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1240
    else:
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1241
        form = GroupAddForm({'name':unicode(group.name), 'members_list':members_list})    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1242
    
94fdb72b7d56 Users can add their own groups
verrierj
parents: 206
diff changeset
  1243
    return render_to_response("ldt/ldt_utils/create_group.html", {'group_id' : group_id, 'form' : form, 'form_status' : form_status, 'user_list' : user_list}, context_instance=RequestContext(request))