| author | verrierj |
| Mon, 16 Jan 2012 14:23:04 +0100 | |
| changeset 392 | 65c1898141da |
| parent 384 | 0e410517b311 |
| child 452 | 8e9494006e7b |
| permissions | -rw-r--r-- |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
1 |
from django.conf import settings |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
2 |
from django.contrib.auth.decorators import login_required |
| 319 | 3 |
from django.contrib.auth.models import Group |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
4 |
from django.core.cache import cache |
|
332
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
5 |
from django.core.urlresolvers import reverse#, resolve |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
6 |
from django.core.paginator import Paginator, InvalidPage, EmptyPage |
| 319 | 7 |
from django.http import (HttpResponseRedirect, HttpResponseForbidden ) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
8 |
from ldt.indexation import get_results_with_context, highlight_documents |
| 319 | 9 |
from django.shortcuts import render_to_response |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
10 |
from django.template import RequestContext |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
11 |
from django.template.loader import render_to_string |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
12 |
from django.utils.html import escape |
| 319 | 13 |
from django.utils.translation import ugettext as _ |
14 |
from ldt.ldt_utils.forms import SearchForm |
|
15 |
from ldt.ldt_utils.models import Content, Project |
|
16 |
from ldt.ldt_utils.utils import boolean_convert |
|
17 |
from ldt.security.utils import add_change_attr, get_userlist |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
18 |
from lxml.html import fragment_fromstring |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
19 |
from ldt.ldt_utils.projectserializer import ProjectSerializer |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
20 |
from operator import itemgetter |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
21 |
from itertools import groupby |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
22 |
import base64 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
23 |
import django.core.urlresolvers |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
24 |
import ldt.auth as ldt_auth |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
25 |
import lxml.etree |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
26 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
27 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
28 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
29 |
def home(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
30 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
31 |
# list of contents |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
32 |
content_list = add_change_attr(request.user, Content.safe_objects.all()) #@UndefinedVariable |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
33 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
34 |
# get list of projects owned by the current user |
| 392 | 35 |
project_list = add_change_attr(request.user, Project.safe_objects.filter(owner=request.user)) #@UndefinedVariable |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
36 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
37 |
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
38 |
|
|
332
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
39 |
# Resolve a URL |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
40 |
#project_api_view, project_api_args, project_api_kwargs = resolve('/api/ldt/projects/c8448f21-272d-11e1-876b-c8bcc896c290.json') |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
41 |
#match = resolve('/api/ldt/projects/c8448f21-272d-11e1-876b-c8bcc896c290.json') |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
42 |
|
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
43 |
# Print the URL pattern that matches the URL |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
44 |
#print match.url_name |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
45 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
46 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
47 |
return render_to_response("ldt/ldt_utils/workspace.html", |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
48 |
{'contents': content_list, 'projects': project_list, |
|
332
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
49 |
'is_gecko': is_gecko, #'project_api_url':"match.url_name", |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
50 |
#'project_api_view':match.url_name,'project_api_args':"project_api_args",'project_api_kwargs':"project_api_kwargs" |
|
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
51 |
}, |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
52 |
context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
53 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
54 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
55 |
def groups(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
56 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
57 |
# get list of all published projects |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
58 |
group_list = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
59 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
60 |
group_list = sorted(group_list.all(), key=lambda group: group.name.lower()) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
61 |
group_list = add_change_attr(request.user, group_list) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
62 |
|
|
342
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
332
diff
changeset
|
63 |
can_add_group = request.user.has_perm('auth.add_group') |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
64 |
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
65 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
66 |
return render_to_response("ldt/ldt_utils/groups.html", |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
67 |
{'groups': group_list, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
68 |
'is_gecko': is_gecko, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
69 |
'can_add_group': can_add_group}, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
70 |
context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
71 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
72 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
73 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
74 |
def published_project(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
75 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
76 |
# get list of all published projects |
| 384 | 77 |
project_list = Project.safe_objects.filter(state=2).exclude(title__startswith='front') #@UndefinedVariable |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
78 |
# Search form |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
79 |
form = SearchForm() |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
80 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
81 |
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
82 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
83 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
84 |
return render_to_response("ldt/ldt_utils/published_projects.html", |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
85 |
{'projects': project_list, 'form': form, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
86 |
'is_gecko': is_gecko}, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
87 |
context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
88 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
89 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
90 |
def popup_embed(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
91 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
92 |
json_url = request.GET.get("json_url") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
93 |
player_id = request.GET.get("player_id") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
94 |
ldt_id = request.GET.get("ldt_id") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
95 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
96 |
project = Project.safe_objects.get(ldt_id=ldt_id); #@UndefinedVariable |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
97 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
98 |
stream_mode = project.stream_mode |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
99 |
if stream_mode != "video": |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
100 |
stream_mode = 'radio' |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
101 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
102 |
player_width = 650 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
103 |
player_height = 480 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
104 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
105 |
if stream_mode == 'radio': |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
106 |
player_height = 1 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
107 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
108 |
if not ldt_auth.check_access(request.user, project): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
109 |
return HttpResponseForbidden(_("You can not access this project")) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
110 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
111 |
ps = ProjectSerializer(project, from_contents=False, from_display=True) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
112 |
annotations = ps.get_annotations(first_cutting=True) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
113 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
114 |
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} |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
115 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
116 |
embed_rendered = dict((typestr, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
117 |
(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)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
118 |
for typestr in ('player', 'seo_body', 'seo_meta', 'links')) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
119 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
120 |
rend_dict['embed_rendered'] = embed_rendered |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
121 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
122 |
return render_to_response("ldt/ldt_utils/embed_popup.html", |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
123 |
rend_dict, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
124 |
context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
125 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
126 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
127 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
128 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
129 |
def share_filter(request, filter, use_groups=False): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
130 |
use_groups = boolean_convert(use_groups) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
131 |
if not filter or len(filter) == 0: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
132 |
raise AttributeError("filter should be a string") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
133 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
134 |
filter = filter[1:] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
135 |
resp = get_userlist(request.user, filter=filter) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
136 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
137 |
if use_groups: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
138 |
groups = Group.objects.filter(name__icontains=filter).exclude(name=settings.PUBLIC_GROUP_NAME)[0:20] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
139 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
140 |
for g in groups: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
141 |
resp.append({'name': g.name, 'id': g.id, 'type': 'group'}) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
142 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
143 |
resp = sorted(resp, key=lambda elem: elem['name'].lower()) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
144 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
145 |
return render_to_response("ldt/ldt_utils/partial/sharewith.html", {'elem_list' : resp}, context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
146 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
147 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
148 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
149 |
def search_form(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
150 |
form = SearchForm() |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
151 |
return render_to_response('ldt/ldt_utils/search_form.html', {'form': form} , context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
152 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
153 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
154 |
@login_required |
| 348 | 155 |
def search_index(request, front_template=False): |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
156 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
157 |
sform = SearchForm(request.POST) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
158 |
if sform.is_valid(): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
159 |
search = sform.cleaned_data["search"] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
160 |
queryStr = base64.urlsafe_b64encode(search.encode('utf8')) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
161 |
field = request.POST["field"] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
162 |
language_code = request.LANGUAGE_CODE[:2] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
163 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
164 |
if request.POST.has_key("ldt_pres"): |
|
321
c68744402249
Change urls used in reverse to be compatible with the new organization
verrierj
parents:
319
diff
changeset
|
165 |
url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, queryStr]) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
166 |
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)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
167 |
else: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
168 |
results = get_results_with_context(field, search) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
169 |
complete_results = [] |
|
349
63f729155d81
Enhance search and front template : add begin and duration to searched segments.
cavaliet
parents:
348
diff
changeset
|
170 |
# the search is made only on the published project |
|
63f729155d81
Enhance search and front template : add begin and duration to searched segments.
cavaliet
parents:
348
diff
changeset
|
171 |
proj_list = Project.safe_objects.filter(state=2) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
172 |
results.sort(key=lambda k: k['iri_id']) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
173 |
for iri_id, item in groupby(results, itemgetter('iri_id')): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
174 |
try: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
175 |
content = Content.objects.get(iri_id=iri_id) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
176 |
except Content.DoesNotExist: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
177 |
continue |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
178 |
segments = list(item) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
179 |
to_delete = [] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
180 |
for s in segments: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
181 |
if not s['project_id']: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
182 |
s['project_id'] = '_' |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
183 |
else: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
184 |
project = proj_list.filter(ldt_id=s['project_id']) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
185 |
if len(project) == 0: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
186 |
to_delete.append(s) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
187 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
188 |
for e in to_delete: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
189 |
segments.remove(e) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
190 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
191 |
if not segments: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
192 |
continue |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
193 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
194 |
score = sum([seg['score'] for seg in segments]) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
195 |
desc = content.description if content.description else '' |
| 348 | 196 |
complete_results.append({'list' : segments, 'score' : score, 'content_title' : content.title, 'content_id' : content.iri_id, 'content_description' : desc, 'content':content }) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
197 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
198 |
complete_results.sort(key=lambda k: k['score']) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
199 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
200 |
cache.set('complete_results_%s' % request.user.username, complete_results) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
201 |
cache.set('search_%s' % request.user.username, search) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
202 |
cache.set('field_%s' % request.user.username, field) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
203 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
204 |
paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
205 |
page = 1 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
206 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
207 |
try: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
208 |
results = paginator.page(page) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
209 |
except (EmptyPage, InvalidPage): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
210 |
results = paginator.page(paginator.num_pages) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
211 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
212 |
results.object_list = highlight_documents(results.object_list, search, field) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
213 |
|
| 348 | 214 |
|
215 |
if front_template : |
|
216 |
return render_to_response('front/front_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)) |
|
217 |
else : |
|
218 |
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)) |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
219 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
220 |
else: |
| 348 | 221 |
if front_template : |
222 |
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.front.front_home')) |
|
223 |
else : |
|
224 |
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
225 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
226 |
|
| 348 | 227 |
def search_listing(request, front_template=False): |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
228 |
if not cache.get('complete_results_%s' % request.user.username): |
| 348 | 229 |
if front_template : |
230 |
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.front.front_home')) |
|
231 |
else : |
|
232 |
return HttpResponseRedirect(reverse('ldt.ldt_utils.views.workspace.published_project')) |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
233 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
234 |
complete_results = cache.get('complete_results_%s' % request.user.username) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
235 |
search = cache.get('search_%s' % request.user.username) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
236 |
field = cache.get('field_%s' % request.user.username) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
237 |
paginator = Paginator(complete_results, settings.LDT_RESULTS_PER_PAGE) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
238 |
language_code = request.LANGUAGE_CODE[:2] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
239 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
240 |
try: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
241 |
page = int(request.GET.get('page', '1')) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
242 |
except ValueError: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
243 |
page = 1 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
244 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
245 |
try: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
246 |
results = paginator.page(page) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
247 |
except (EmptyPage, InvalidPage): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
248 |
results = paginator.page(paginator.num_pages) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
249 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
250 |
results.object_list = highlight_documents(results.object_list, search, field) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
251 |
|
| 348 | 252 |
if front_template : |
253 |
return render_to_response('front/front_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)) |
|
254 |
else : |
|
255 |
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)) |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
256 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
257 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
258 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
259 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
260 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
261 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
262 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
263 |
def loading(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
264 |
return render_to_response('ldt/ldt_utils/loading.html', context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
265 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
266 |