| author | cavaliet |
| Fri, 19 Apr 2013 14:05:39 +0200 | |
| changeset 1158 | b9acd7c58930 |
| parent 1035 | 85322320d89c |
| child 1180 | 54ef33bb4065 |
| 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.paginator import Paginator, InvalidPage, EmptyPage |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
5 |
from django.core.urlresolvers import reverse #, resolve |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
6 |
from django.http import HttpResponseForbidden, HttpResponseNotFound, HttpResponseRedirect |
| 319 | 7 |
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
|
8 |
from django.template import RequestContext |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
9 |
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
|
10 |
from django.utils.html import escape |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
11 |
from django.utils.safestring import mark_safe |
| 319 | 12 |
from django.utils.translation import ugettext as _ |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
13 |
from itertools import groupby |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
14 |
from ldt.indexation import get_results_with_context, highlight_documents |
| 319 | 15 |
from ldt.ldt_utils.forms import SearchForm |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
16 |
from ldt.ldt_utils.models import Content, Project, Segment |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
17 |
from ldt.ldt_utils.projectserializer import ProjectJsonSerializer |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
18 |
from ldt.ldt_utils.utils import boolean_convert |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
19 |
from ldt.ldt_utils.views.content import get_contents_page, get_content_tags |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
20 |
from ldt.ldt_utils.views.project import get_projects_page, \ |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
21 |
get_published_projects_page |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
22 |
from ldt.security.utils import add_change_attr, get_userlist |
|
1010
a8a42538ba0e
modification of get_web_url to have less dependances and be usable in ldt_utils->models
grandjoncl
parents:
1008
diff
changeset
|
23 |
from ldt.utils.url import absstatic, absurl |
|
a8a42538ba0e
modification of get_web_url to have less dependances and be usable in ldt_utils->models
grandjoncl
parents:
1008
diff
changeset
|
24 |
from ldt.utils.web_url_management import get_web_url |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
25 |
from operator import itemgetter |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
26 |
import base64 |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
27 |
import ldt.auth as ldt_auth |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
28 |
import lxml.etree |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
29 |
|
|
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 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
32 |
def home(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
33 |
|
|
644
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
34 |
num_page = 0 |
|
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
35 |
# Prepare contents pagination |
|
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
36 |
content_nb, nb_ct_pages, content_list = get_contents_page(num_page, request.user) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
37 |
# get list of projects owned by the current user |
|
644
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
38 |
project_nb, nb_pj_pages, project_list = get_projects_page(num_page, request.user) |
| 710 | 39 |
# Get the all tags list |
40 |
tag_cloud = get_content_tags() |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
41 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
42 |
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
|
43 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
44 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
45 |
return render_to_response("ldt/ldt_utils/workspace.html", |
|
644
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
46 |
{'contents': content_list, 'nb_ct_pages': nb_ct_pages, 'content_nb': content_nb, 'current_content_page':float(num_page), |
|
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
47 |
'projects': project_list, 'nb_pj_pages': nb_pj_pages, 'project_nb': project_nb, 'current_project_page':float(num_page), |
| 710 | 48 |
'tag_cloud': tag_cloud, 'is_gecko': is_gecko, #'project_api_url':"match.url_name", |
|
332
c28d4dc49a50
add API interface to add annotation, with an ajax example in the comment.
cavaliet
parents:
321
diff
changeset
|
49 |
#'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
|
50 |
}, |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
51 |
context_instance=RequestContext(request)) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
52 |
|
|
644
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
53 |
|
|
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
54 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
55 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
56 |
def groups(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
57 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
58 |
# get list of all published projects |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
59 |
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
|
60 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
61 |
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
|
62 |
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
|
63 |
|
|
342
17d615b49a91
Extend image fields size to 200 characters + minor bugs
verrierj
parents:
332
diff
changeset
|
64 |
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
|
65 |
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
|
66 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
67 |
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
|
68 |
{'groups': group_list, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
69 |
'is_gecko': is_gecko, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
70 |
'can_add_group': can_add_group}, |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
71 |
context_instance=RequestContext(request)) |
|
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 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
74 |
@login_required |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
75 |
def published_project(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
76 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
77 |
# get list of all published projects |
|
646
97f5db87d71c
Enhance pagination with public project and quick search.
cavaliet
parents:
644
diff
changeset
|
78 |
#project_list = Project.safe_objects.filter(state=2).exclude(title__startswith='front') #@UndefinedVariable |
|
97f5db87d71c
Enhance pagination with public project and quick search.
cavaliet
parents:
644
diff
changeset
|
79 |
num_page = 0 |
|
97f5db87d71c
Enhance pagination with public project and quick search.
cavaliet
parents:
644
diff
changeset
|
80 |
project_nb, nb_pj_pages, project_list = get_published_projects_page(num_page) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
81 |
# Search form |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
82 |
form = SearchForm() |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
83 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
84 |
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
|
85 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
86 |
# render list |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
87 |
return render_to_response("ldt/ldt_utils/published_projects.html", |
|
646
97f5db87d71c
Enhance pagination with public project and quick search.
cavaliet
parents:
644
diff
changeset
|
88 |
{'projects': project_list, 'nb_pj_pages': nb_pj_pages, 'project_nb': project_nb, 'current_project_page':float(num_page), |
|
97f5db87d71c
Enhance pagination with public project and quick search.
cavaliet
parents:
644
diff
changeset
|
89 |
'form': form, 'is_gecko': is_gecko}, |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
90 |
context_instance=RequestContext(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 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
93 |
def popup_embed(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
94 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
95 |
json_url = request.GET.get("json_url") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
96 |
player_id = request.GET.get("player_id") |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
97 |
ldt_id = request.GET.get("ldt_id") |
| 817 | 98 |
rend_dict = get_datas_for_embed(request, json_url, player_id, ldt_id) |
99 |
||
100 |
embed_rendered = dict((typestr, |
|
101 |
(lambda s:escape(render_to_string("ldt/ldt_utils/partial/embed_%s.html" % (s), rend_dict, context_instance=RequestContext(request))))(typestr)) |
|
| 927 | 102 |
for typestr in ('seo_body', 'seo_meta', 'links')) |
|
893
bd5f9dea9791
Embed code popup modified in order to be abble to display html5 player
grandjoncl
parents:
886
diff
changeset
|
103 |
|
| 817 | 104 |
rend_dict['embed_rendered'] = embed_rendered |
105 |
return render_to_response("ldt/ldt_utils/embed_popup.html", rend_dict, context_instance=RequestContext(request)) |
|
106 |
||
107 |
||
108 |
def iframe_embed(request): |
|
109 |
||
110 |
project_id = request.GET.get("project_id") |
|
111 |
if not project_id: |
|
112 |
content_id = request.GET.get("content_id") |
|
| 821 | 113 |
try: |
114 |
content = Content.safe_objects.get(iri_id=content_id) |
|
115 |
except: |
|
116 |
return HttpResponseForbidden(_("The content does not exists or you are not allowed to access this content")) |
|
| 817 | 117 |
project = content.get_or_create_front_project() |
118 |
project_id = project.ldt_id |
|
119 |
if not project_id : |
|
| 821 | 120 |
return HttpResponseForbidden(_("Parameters project_id or content_id must be given in the url")) |
| 817 | 121 |
|
122 |
json_url = reverse("projectjson_id", args=[project_id]) |
|
123 |
player_id = "player_project_" + project_id |
|
124 |
ldt_id = project_id |
|
125 |
rend_dict = get_datas_for_embed(request, json_url, player_id, ldt_id) |
|
| 819 | 126 |
|
127 |
# Manage iframe options |
|
| 1021 | 128 |
if request.GET.has_key("player_height"): |
129 |
rend_dict["player_height"]=request.GET.get("player_height") |
|
130 |
else: |
|
131 |
rend_dict["player_height"]=300 |
|
132 |
if request.GET.has_key("player_width"): |
|
133 |
rend_dict["player_width"]=request.GET.get("player_width") |
|
134 |
else: |
|
135 |
rend_dict["player_width"]=550 |
|
| 819 | 136 |
if request.GET.has_key("polemic"): |
137 |
rend_dict["polemic"] = request.GET.get("polemic") |
|
| 1021 | 138 |
if request.GET.has_key("polemic_defaultColor"): |
139 |
rend_dict["polemic_defaultColor"] = request.GET.get("polemic_defaultColor") |
|
140 |
else: |
|
141 |
rend_dict["polemic_defaultColor"]="585858" |
|
142 |
if request.GET.has_key("polemic_foundColor"): |
|
143 |
rend_dict["polemic_foundColor"] = request.GET.get("polemic_foundColor") |
|
144 |
else: |
|
145 |
rend_dict["polemic_foundColor"]="fc00ff" |
|
146 |
if request.GET.has_key("polemic_okColor"): |
|
147 |
rend_dict["polemic_okColor"] = request.GET.get("polemic_okColor") |
|
148 |
else: |
|
149 |
rend_dict["polemic_okColor"] = "1d973d" |
|
150 |
if request.GET.has_key("polemic_koColor"): |
|
151 |
rend_dict["polemic_koColor"] = request.GET.get("polemic_koColor") |
|
152 |
else: |
|
153 |
rend_dict["polemic_koColor"]="ce0a15" |
|
154 |
if request.GET.has_key("polemic_refColor"): |
|
155 |
rend_dict["polemic_refColor"] = request.GET.get("polemic_refColor") |
|
156 |
else: |
|
157 |
rend_dict["polemic_refColor"] = "c5a62d" |
|
158 |
if request.GET.has_key("polemic_qColor"): |
|
159 |
rend_dict["polemic_qColor"] = request.GET.get("polemic_qColor") |
|
160 |
else: |
|
161 |
rend_dict["polemic_qColor"] = "036aae" |
|
162 |
||
| 929 | 163 |
|
| 1021 | 164 |
if request.GET.has_key("createannotation"): |
165 |
rend_dict["createannotation"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("createannotation").lower()) |
|
| 819 | 166 |
if request.GET.has_key("show_mic_record"): |
167 |
rend_dict["show_mic_record"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_mic_record").lower()) |
|
| 1021 | 168 |
if rend_dict["show_mic_record"]: |
169 |
rend_dict["createannotation"]=True |
|
| 821 | 170 |
if request.GET.has_key("annotations_list"): |
171 |
rend_dict["annotations_list"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("annotations_list").lower()) |
|
172 |
rend_dict["player_width"] = 550 |
|
| 930 | 173 |
if request.GET.has_key("tag_titles"): |
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
174 |
rend_dict["tag_titles"] = request.GET.get("tag_titles") |
| 927 | 175 |
if request.GET.has_key("sparkline"): |
| 929 | 176 |
rend_dict["sparkline"] = request.GET.get("sparkline") |
| 1021 | 177 |
if request.GET.has_key("sparkline_lineColor"): |
178 |
rend_dict["sparkline_lineColor"] = request.GET.get("sparkline_lineColor") |
|
179 |
else: |
|
180 |
rend_dict["sparkline_lineColor"] = "7492b4" |
|
181 |
if request.GET.has_key("sparkline_fillColor"): |
|
182 |
rend_dict["sparkline_fillColor"] = request.GET.get("sparkline_fillColor") |
|
183 |
else: |
|
184 |
rend_dict["sparkline_fillColor"] = "aeaeb8" |
|
| 927 | 185 |
if request.GET.has_key("slideshare"): |
| 928 | 186 |
rend_dict["slideshare"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("slideshare").lower()) |
| 927 | 187 |
if request.GET.has_key("social"): |
| 928 | 188 |
rend_dict["social"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("social").lower()) |
| 929 | 189 |
if request.GET.has_key("show_url"): |
| 1021 | 190 |
rend_dict["show_url"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_url").lower()) |
191 |
else: |
|
192 |
rend_dict["show_url"] = True |
|
| 929 | 193 |
if request.GET.has_key("show_twitter"): |
194 |
rend_dict["show_twitter"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_twitter").lower()) |
|
| 1021 | 195 |
else: |
196 |
rend_dict["show_twitter"] = True |
|
| 929 | 197 |
if request.GET.has_key("show_fb"): |
198 |
rend_dict["show_fb"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_fb").lower()) |
|
| 1021 | 199 |
else: |
200 |
rend_dict["show_fb"] = True |
|
| 929 | 201 |
if request.GET.has_key("show_gplus"): |
202 |
rend_dict["show_gplus"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_gplus").lower()) |
|
| 1021 | 203 |
else: |
204 |
rend_dict["show_gplus"] = True |
|
| 929 | 205 |
if request.GET.has_key("show_mail"): |
206 |
rend_dict["show_mail"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("show_mail").lower()) |
|
| 1021 | 207 |
else: |
208 |
rend_dict["show_mail"] = True |
|
| 927 | 209 |
if request.GET.has_key("annotation"): |
| 928 | 210 |
rend_dict["annotation"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("annotation").lower()) |
| 927 | 211 |
if request.GET.has_key("tweet"): |
| 928 | 212 |
rend_dict["tweet"] ={'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("tweet").lower()) |
| 927 | 213 |
if request.GET.has_key("segments"): |
| 1022 | 214 |
rend_dict["segments"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("segments").lower()) |
215 |
else: |
|
216 |
rend_dict["segments"] = True |
|
| 927 | 217 |
if request.GET.has_key("tagcloud"): |
| 928 | 218 |
rend_dict["tagcloud"] = {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("tagcloud").lower()) |
| 817 | 219 |
return render_to_response("ldt/ldt_utils/embed_iframe.html", rend_dict, context_instance=RequestContext(request)) |
220 |
||
221 |
||
222 |
def get_datas_for_embed(request, json_url, player_id, ldt_id): |
|
223 |
||
|
1158
b9acd7c58930
Enhance share project page. Embed correction. Add ldt embed. Little debugs
cavaliet
parents:
1035
diff
changeset
|
224 |
project = Project.safe_objects.prefetch_related("contents").get(ldt_id=ldt_id) #@UndefinedVariable |
|
804
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
225 |
project_contents = project.contents.all() |
|
1158
b9acd7c58930
Enhance share project page. Embed correction. Add ldt embed. Little debugs
cavaliet
parents:
1035
diff
changeset
|
226 |
content = project_contents[0] |
|
b9acd7c58930
Enhance share project page. Embed correction. Add ldt embed. Little debugs
cavaliet
parents:
1035
diff
changeset
|
227 |
WEB_URL = get_web_url(request) |
| 1021 | 228 |
iframe_url = mark_safe(WEB_URL+settings.BASE_URL+"ldtplatform/ldt/embediframe/?content_id="+content.iri_id+"&project_id="+ldt_id) |
|
804
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
229 |
external_url = None |
|
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
230 |
if content.src is not None: |
|
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
231 |
for external_src in settings.EXTERNAL_STREAM_SRC: |
|
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
232 |
if external_src in content.src: |
|
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
233 |
external_url = content.src |
| 817 | 234 |
break |
|
804
2ed891cf8c44
Correction of embed code generator. It takes the youtube/vimeo/dailymotion player when possible.
grandjoncl
parents:
726
diff
changeset
|
235 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
236 |
stream_mode = project.stream_mode |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
237 |
if stream_mode != "video": |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
238 |
stream_mode = 'radio' |
|
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 |
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
|
241 |
return HttpResponseForbidden(_("You can not access this project")) |
|
1158
b9acd7c58930
Enhance share project page. Embed correction. Add ldt embed. Little debugs
cavaliet
parents:
1035
diff
changeset
|
242 |
LANGUAGE_CODE = settings.LANGUAGE_CODE |
| 886 | 243 |
ps = ProjectJsonSerializer(project, from_contents=True, from_display=True) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
244 |
annotations = ps.get_annotations(first_cutting=True) |
|
1158
b9acd7c58930
Enhance share project page. Embed correction. Add ldt embed. Little debugs
cavaliet
parents:
1035
diff
changeset
|
245 |
rend_dict = {'project':project, 'contents':project_contents, 'json_url':json_url, 'player_id':player_id, 'annotations':annotations, 'ldt_id': ldt_id, 'stream_mode': stream_mode, |
| 930 | 246 |
'external_url': external_url, |
| 927 | 247 |
'polemic':False, 'show_mic_record':False, 'annotations_list':False, 'iframe_url':iframe_url, 'WEB_URL':WEB_URL, |
|
995
94f9d36371f6
new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents:
937
diff
changeset
|
248 |
'LANGUAGE_CODE':LANGUAGE_CODE} |
| 817 | 249 |
return rend_dict |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
250 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
251 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
252 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
253 |
def share_filter(request, filter, use_groups=False): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
254 |
use_groups = boolean_convert(use_groups) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
255 |
if not filter or len(filter) == 0: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
256 |
raise AttributeError("filter should be a string") |
|
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 |
filter = filter[1:] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
259 |
resp = get_userlist(request.user, filter=filter) |
|
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 |
if use_groups: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
262 |
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
|
263 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
264 |
for g in groups: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
265 |
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
|
266 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
267 |
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
|
268 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
269 |
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
|
270 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
271 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
272 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
273 |
def search_form(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
274 |
form = SearchForm() |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
275 |
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
|
276 |
|
| 563 | 277 |
@login_required |
278 |
def search_index(request): |
|
279 |
language_code = request.LANGUAGE_CODE[:2] |
|
| 570 | 280 |
nb = 0 |
281 |
results = [] |
|
282 |
search = '' |
|
283 |
field = 'all' |
|
|
997
947c8ad09bd6
change of method to have absolute url for static file in views
grandjoncl
parents:
995
diff
changeset
|
284 |
colorurl=absstatic(request, "ldt/swf/ldt/pkg/color.xml") |
|
947c8ad09bd6
change of method to have absolute url for static file in views
grandjoncl
parents:
995
diff
changeset
|
285 |
i18nurl=absstatic(request, "ldt/swf/ldt/pkg/i18n") |
|
947c8ad09bd6
change of method to have absolute url for static file in views
grandjoncl
parents:
995
diff
changeset
|
286 |
baseurl=absstatic(request, "ldt/swf/ldt/") |
| 570 | 287 |
sform = SearchForm(request.GET) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
288 |
if sform.is_valid(): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
289 |
search = sform.cleaned_data["search"] |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
290 |
queryStr = base64.urlsafe_b64encode(search.encode('utf8')) |
| 570 | 291 |
field = sform.cleaned_data["field"] |
292 |
page = sform.cleaned_data["page"] or 1 |
|
293 |
ldt_pres = sform.cleaned_data["ldt_pres"] |
|
294 |
if ldt_pres: |
|
|
1007
a6d47caa7fc0
creation of a function in order to avoid using settings.WEB_URL + reverse in the views. Function to get the web_url using site domain
grandjoncl
parents:
997
diff
changeset
|
295 |
url = absurl(request, "ldt.ldt_utils.views.lignesdetemps.search_init", args=[field, queryStr]) |
|
995
94f9d36371f6
new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents:
937
diff
changeset
|
296 |
return render_to_response('ldt/ldt_utils/init_ldt_full.html', {'colorurl': colorurl, 'i18nurl': i18nurl , 'language': language_code, 'baseurl': baseurl, 'url': url}, context_instance=RequestContext(request)) |
|
94f9d36371f6
new template tag absstatic to have absolute url for static file and avoid using LDT_MEDIA_PREFIX
grandjoncl
parents:
937
diff
changeset
|
297 |
else: |
| 1021 | 298 |
results, nb, nb_segment = get_search_results(request, search, field, page) |
|
452
8e9494006e7b
segment abstracts + content images can be retrieved directly from search results page
verrierj
parents:
392
diff
changeset
|
299 |
|
| 1021 | 300 |
return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : nb, 'nb_segment' : nb_segment, 'search' : search, 'field': field, 'colorurl': colorurl, 'i18nurl': i18nurl , 'language': language_code, 'baseurl': baseurl}, context_instance=RequestContext(request)) |
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
301 |
|
| 570 | 302 |
|
| 599 | 303 |
def get_search_results(request, search, field, page, content_list=None): |
| 602 | 304 |
# We parse the author if necessary. For author search to work in every case, we have to transform the query author:cheese shop into author:"CHEESE SHOP" |
305 |
if u'author:' in search.lower() : |
|
306 |
sub = search[7:] |
|
307 |
sub = sub.upper() |
|
308 |
if sub[0] != u'"': |
|
309 |
sub = u'"' + sub |
|
310 |
if sub[-1] != u'"': |
|
311 |
sub = sub + u'"' |
|
312 |
search = u'author:' + sub |
|
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
313 |
results = get_results_with_context(field, search, content_list) |
| 563 | 314 |
all_segments = Segment.objects.filter(element_id__in=[e['element_id'] for e in results]) |
315 |
all_projects = Project.objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2) |
|
316 |
all_contents = Content.objects.filter(iri_id__in=[e['iri_id'] for e in results]) |
|
317 |
viewable_projects_id = [p.ldt_id for p in all_projects] |
|
| 1021 | 318 |
nb_segment=0 |
| 563 | 319 |
complete_results = [] |
320 |
results.sort(key=lambda k: k['iri_id']) |
|
321 |
||
322 |
for iri_id, item in groupby(results, itemgetter('iri_id')): |
|
|
1020
f3205dfbeb4f
minor correction to avoid error when search result is empty (initialise var)
rougeronj
parents:
1019
diff
changeset
|
323 |
content=[] |
|
1019
d665c0b9dac0
minor correction to avoid error when search result is empty
rougeronj
parents:
1011
diff
changeset
|
324 |
content_filter = filter(lambda e: e.iri_id == iri_id, all_contents) |
|
d665c0b9dac0
minor correction to avoid error when search result is empty
rougeronj
parents:
1011
diff
changeset
|
325 |
if len(content_filter)>0: |
|
d665c0b9dac0
minor correction to avoid error when search result is empty
rougeronj
parents:
1011
diff
changeset
|
326 |
content = filter(lambda e: e.iri_id == iri_id, all_contents)[0] |
|
d665c0b9dac0
minor correction to avoid error when search result is empty
rougeronj
parents:
1011
diff
changeset
|
327 |
if content.description is None: |
|
d665c0b9dac0
minor correction to avoid error when search result is empty
rougeronj
parents:
1011
diff
changeset
|
328 |
content.description = '' |
| 563 | 329 |
|
|
567
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
330 |
all_related_segments = list(item) |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
331 |
|
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
332 |
valid_segments = [] |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
333 |
for s in all_related_segments: |
| 915 | 334 |
array_of_segs = [seg for seg in all_segments if seg.element_id == s['element_id'] and seg.project_id == s['project_id'] and seg.iri_id == s['iri_id'] and seg.cutting_id == s['cutting_id'] and seg.ensemble_id == s['ensemble_id'] ] |
335 |
if len(array_of_segs)>0: |
|
336 |
segment = array_of_segs[0] |
|
337 |
||
338 |
segment.score = s['score'] |
|
339 |
segment.indexation_id = s['indexation_id'] |
|
340 |
segment.context = s['context'] |
|
341 |
segment.context_tags = s['tags'] |
|
342 |
segment.highlighted = s['highlighted'] |
|
343 |
||
344 |
if not s['project_id']: |
|
345 |
segment.project_id = '_' |
|
346 |
valid_segments.append(segment) |
|
| 1021 | 347 |
nb_segment+=1 |
| 915 | 348 |
elif s['project_id'] in viewable_projects_id: |
349 |
valid_segments.append(segment) |
|
| 1021 | 350 |
nb_segment+=1 |
|
567
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
351 |
|
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
352 |
# If all segments found belong to unpublished projects or projects |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
353 |
# the current user is not allowed to see |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
354 |
if not valid_segments: |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
355 |
continue |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
356 |
|
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
357 |
score = sum([seg.score for seg in valid_segments]) |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
358 |
complete_results.append({ |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
359 |
'list': valid_segments, |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
360 |
'score': score, |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
361 |
'content': content, |
|
715f117b0415
correct search function. change two default tags in embed player.
cavaliet
parents:
563
diff
changeset
|
362 |
}) |
| 563 | 363 |
|
364 |
complete_results.sort(key=lambda k: k['score']) |
|
365 |
||
366 |
paginator = Paginator (complete_results, settings.LDT_RESULTS_PER_PAGE) |
|
367 |
||
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
368 |
try: |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
369 |
results = paginator.page(page) |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
370 |
except (EmptyPage, InvalidPage): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
371 |
results = paginator.page(paginator.num_pages) |
| 563 | 372 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
373 |
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
|
374 |
|
| 1021 | 375 |
return results, len(complete_results), nb_segment |
| 563 | 376 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
377 |
|
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
378 |
def loading(request): |
|
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
379 |
return render_to_response('ldt/ldt_utils/loading.html', context_instance=RequestContext(request)) |
|
644
94429061bbfa
First step of pagination for contents and projet in workspace home.
cavaliet
parents:
602
diff
changeset
|
380 |
|
|
315
877f89ec1efa
Split big views.py files into several views grouped by "make sense".
cavaliet
parents:
diff
changeset
|
381 |
|
|
1035
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
382 |
def delete_segment(request, project_id, content_id, ensemble_id, cutting_id, segment_id): |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
383 |
if project_id and project_id != "_" : |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
384 |
project = Project.safe_objects.get(ldt_id=project_id) #@UndefinedVariable |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
385 |
if project: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
386 |
ldtdoc = lxml.etree.fromstring(project.ldt_encoded) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
387 |
xstr = "/iri/annotations/content[@id='%s']/ensemble[@id='%s']/decoupage[@id='%s']/elements/element[@id='%s']" % (content_id, ensemble_id, cutting_id, segment_id) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
388 |
element = None |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
389 |
try: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
390 |
element = ldtdoc.xpath(xstr) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
391 |
except: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
392 |
return HttpResponseNotFound(_("Annotation not found in the xml")) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
393 |
if element and len(element)>0: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
394 |
# element[0] is the annotation to remove |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
395 |
el = element[0] |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
396 |
el.getparent().remove(el) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
397 |
project.ldt = lxml.etree.tostring(ldtdoc) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
398 |
project.save() |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
399 |
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/')) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
400 |
else: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
401 |
return HttpResponseNotFound(_("Annotation not found")) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
402 |
else: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
403 |
return HttpResponseNotFound(_("Project not found")) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
404 |
else: |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
405 |
return HttpResponseNotFound(_("Project not found")) |
|
85322320d89c
delete annotation when you are admin, and import cleaning.
cavaliet
parents:
1022
diff
changeset
|
406 |