1 from Ft.Xml import MarkupWriter |
|
2 from contentindexer import * |
1 from contentindexer import * |
3 from django.conf import settings |
2 from django.conf import settings |
4 from django.contrib.auth.decorators import login_required |
3 from django.contrib.auth.decorators import login_required |
5 from django.core import serializers |
4 from django.core import serializers |
6 from django.core.urlresolvers import reverse |
5 from django.core.urlresolvers import reverse |
|
6 from django.db.models import Q |
7 from django.forms.forms import get_declared_fields |
7 from django.forms.forms import get_declared_fields |
8 from django.forms.models import model_to_dict |
8 from django.forms.models import model_to_dict |
9 from django.forms.util import ErrorList |
9 from django.forms.util import ErrorList |
10 from django.http import HttpResponse, HttpResponseRedirect, \ |
10 from django.http import HttpResponse, HttpResponseRedirect, \ |
11 HttpResponseForbidden |
11 HttpResponseForbidden, HttpResponseServerError |
12 from django.shortcuts import render_to_response, get_object_or_404, \ |
12 from django.shortcuts import render_to_response, get_object_or_404, \ |
13 get_list_or_404 |
13 get_list_or_404 |
14 from django.template import RequestContext |
14 from django.template import RequestContext |
|
15 from django.template.loader import render_to_string |
15 from django.utils import simplejson |
16 from django.utils import simplejson |
16 from django.utils.html import escape |
17 from django.utils.html import escape |
17 from django.utils.translation import ugettext as _, ungettext |
18 from django.utils.translation import ugettext as _, ungettext |
18 from fileimport import * |
19 from fileimport import * |
19 from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, \ |
20 from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, \ |
20 CopyProjectForm, ContentForm, MediaForm |
21 CopyProjectForm, ContentForm, MediaForm |
21 from ldt.core.models import Owner |
22 from ldt.core.models import Owner |
|
23 from ldt.ldt_utils.models import Content, Project, Owner |
|
24 from ldt.ldt_utils.projectserializer import ProjectSerializer |
|
25 from ldt.ldt_utils.utils import boolean_convert |
22 from lxml import etree |
26 from lxml import etree |
|
27 from lxml.html import fromstring, fragment_fromstring |
23 from models import * |
28 from models import * |
24 from projectserializer import * |
29 from projectserializer import * |
25 from string import Template |
30 from string import Template |
26 from urllib2 import urlparse |
31 from urllib2 import urlparse |
27 from utils import * |
32 from utils import * |
31 import django.core.urlresolvers |
36 import django.core.urlresolvers |
32 import ldt.auth as ldt_auth |
37 import ldt.auth as ldt_auth |
33 import ldt.utils.path as ldt_utils_path |
38 import ldt.utils.path as ldt_utils_path |
34 import logging |
39 import logging |
35 import lucene |
40 import lucene |
|
41 import lxml.etree |
36 import tempfile |
42 import tempfile |
37 import urllib2 |
43 import urllib2 |
38 import uuid |
44 import uuid |
39 |
45 |
|
46 |
|
47 @login_required |
|
48 def workspace(request): |
|
49 |
|
50 # list of contents |
|
51 content_list = Content.objects.all() |
|
52 |
|
53 # get list of projects |
|
54 project_list = Project.objects.all() |
|
55 |
|
56 # render list |
|
57 return render_to_response("ldt/ldt_utils/workspace.html", |
|
58 {'contents': content_list, 'projects': project_list}, |
|
59 context_instance=RequestContext(request)) |
|
60 |
|
61 |
|
62 def popup_embed(request): |
|
63 |
|
64 json_url = request.GET.get("json_url") |
|
65 player_id = request.GET.get("player_id") |
|
66 ldt_id = request.GET.get("ldt_id") |
|
67 |
|
68 |
|
69 project = Project.objects.get(ldt_id=ldt_id); |
|
70 |
|
71 if not ldt_auth.checkAccess(request.user, project): |
|
72 return HttpResponseForbidden(_("You can not access this project")) |
|
73 |
|
74 ps = ProjectSerializer(project, from_contents=False, from_display=True) |
|
75 annotations = ps.getAnnotations(first_cutting=True) |
|
76 |
|
77 embed_rendered = dict((typestr, |
|
78 (lambda s:escape(lxml.etree.tostring(fragment_fromstring(render_to_string("ldt/ldt_utils/partial/embed_%s.html"%(s), {'json_url':json_url,'player_id':player_id, 'annotations':annotations, 'ldt_id': ldt_id}, context_instance=RequestContext(request))),pretty_print=True)))(typestr)) |
|
79 for typestr in ('player','seo_body', 'seo_meta', 'links') ) |
|
80 |
|
81 return render_to_response("ldt/ldt_utils/embed_popup.html", |
|
82 {'json_url':json_url,'player_id':player_id, 'embed_rendered':embed_rendered, 'annotations':annotations}, |
|
83 context_instance=RequestContext(request)) |
|
84 |
|
85 |
|
86 |
|
87 @login_required |
|
88 def projectsfilter(request, filter, is_owner=False, status=0): |
|
89 |
|
90 project_list = None |
|
91 is_owner = boolean_convert(is_owner) |
|
92 status = int(status) |
|
93 query = Q() |
|
94 |
|
95 if is_owner: |
|
96 owner = None |
|
97 try: |
|
98 owner = Owner.objects.get(user=request.user) |
|
99 except: |
|
100 return HttpResponseServerError("<h1>User not found</h1>") |
|
101 query &= Q(owner=owner) |
|
102 |
|
103 if status > 0: |
|
104 query &= Q(state=status) |
|
105 |
|
106 if filter: |
|
107 if len(filter) > 0 and filter[0] == '_': |
|
108 filter = filter[1:] |
|
109 query &= Q(title__icontains=filter) |
|
110 |
|
111 project_list = Project.objects.filter(query) |
|
112 |
|
113 return render_to_response("ldt/ldt_utils/partial/projectslist.html", |
|
114 {'projects': project_list}, |
|
115 context_instance=RequestContext(request)) |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 @login_required |
|
122 def contentsfilter(request, filter): |
|
123 if filter and len(filter) > 0 and filter[0] == '_': |
|
124 filter = filter[1:] |
|
125 |
|
126 if filter: |
|
127 content_list = Content.objects.filter(title__icontains=filter) |
|
128 else: |
|
129 content_list = Content.objects.all() |
|
130 |
|
131 return render_to_response("ldt/ldt_utils/partial/contentslist.html", |
|
132 {'contents': content_list}, |
|
133 context_instance=RequestContext(request)) |
|
134 |
|
135 |
40 def searchForm(request): |
136 def searchForm(request): |
41 form = SearchForm() |
137 form = SearchForm() |
42 return render_to_response('ldt/ldt_utils_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) |
138 return render_to_response('ldt/ldt_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) |
43 |
139 |
44 def searchIndex(request): |
140 def searchIndex(request): |
45 |
141 |
46 sform = SearchForm(request.POST) |
142 sform = SearchForm(request.POST) |
47 if sform.is_valid(): |
143 if sform.is_valid(): |
51 queryStr = base64.urlsafe_b64encode(search.encode('utf8')) |
147 queryStr = base64.urlsafe_b64encode(search.encode('utf8')) |
52 field = request.POST["field"] |
148 field = request.POST["field"] |
53 language_code = request.LANGUAGE_CODE[:2] |
149 language_code = request.LANGUAGE_CODE[:2] |
54 |
150 |
55 url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, queryStr]) |
151 url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, queryStr]) |
56 return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': url}, context_instance=RequestContext(request)) |
152 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)) |
57 else: |
153 else: |
58 resp = HttpResponse() |
154 resp = HttpResponse() |
59 resp.write("<html><head></head><body>Error : No result</body></html>"); |
155 resp.write("<html><head></head><body>Error : No result</body></html>"); |
60 |
156 |
61 def searchIndexGet(request, field, query): |
157 def searchIndexGet(request, field, query): |
62 |
158 |
63 language_code = request.LANGUAGE_CODE[:2] |
159 language_code = request.LANGUAGE_CODE[:2] |
64 url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, query]) |
160 url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, query]) |
65 return render_to_response('irisuser/ldt/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': url}, context_instance=RequestContext(request)) |
161 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)) |
66 |
162 |
67 def searchInit(request, field, query): |
163 def searchInit(request, field, query): |
68 |
164 |
69 ldtgen = LdtUtils() |
165 ldtgen = LdtUtils() |
70 |
166 |
175 form_status = "none" |
271 form_status = "none" |
176 |
272 |
177 return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status,'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request)) |
273 return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status,'create_project_action':reverse(create_ldt_view)}, context_instance=RequestContext(request)) |
178 |
274 |
179 def created_ldt(request): |
275 def created_ldt(request): |
180 return render_to_response('ldt/ldt_utils/done.html', context_instance=RequestContext(request)) |
276 return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request)) |
181 |
277 |
182 def indexProject(request, id): |
278 def indexProject(request, id): |
183 |
279 |
184 urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldtProject', id]) |
280 urlStr = settings.WEB_URL + reverse("space_ldt_init", args=['ldtProject', id]) |
185 posturl= settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject") |
281 posturl= settings.WEB_URL + reverse("ldt.ldt_utils.views.save_ldtProject") |
189 if ldt.state ==2: #published |
285 if ldt.state ==2: #published |
190 readonly = 'true' |
286 readonly = 'true' |
191 else: |
287 else: |
192 readonly = 'false' |
288 readonly = 'false' |
193 |
289 |
194 return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request)) |
290 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, 'posturl': posturl, 'id': id, 'readonly': readonly}, context_instance=RequestContext(request)) |
195 |
291 |
196 def init(request, method, url): |
292 def init(request, method, url): |
197 ldtgen = LdtUtils() |
293 ldtgen = LdtUtils() |
198 |
294 |
199 doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None) |
295 doc = ldtgen.generateInit([url], 'ldt.ldt_utils.views.'+method, None) |
200 |
296 |
201 resp = HttpResponse(mimetype="text/xml") |
297 resp = HttpResponse(mimetype="text/xml") |
202 resp['Cache-Control']='no-cache, must-revalidate' |
298 resp['Cache-Control']='no-cache, must-revalidate' |
203 resp['Pragma']='no-cache' |
299 resp['Pragma']='no-cache' |
204 |
300 |
205 resp.write( etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) |
301 resp.write( etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) |
206 return resp |
302 return resp |
207 |
303 |
208 def ldtProject(request, id): |
304 def ldtProject(request, id): |
209 resp = HttpResponse(mimetype="text/xml") |
305 resp = HttpResponse(mimetype="text/xml") |
390 def index(request, url): |
486 def index(request, url): |
391 |
487 |
392 urlStr = settings.WEB_URL + reverse("ldt_init", args=['ldt',url]) |
488 urlStr = settings.WEB_URL + reverse("ldt_init", args=['ldt',url]) |
393 language_code = request.LANGUAGE_CODE[:2] |
489 language_code = request.LANGUAGE_CODE[:2] |
394 |
490 |
395 return render_to_response('ldt/ldt_utils/init_ldt.html', {'MEDIA_URL': settings.MEDIA_URL, 'colorurl': settings.MEDIA_URL+'swf/ldt/pkg/color.xml', 'i18nurl': settings.MEDIA_URL+'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.MEDIA_URL+'swf/ldt/', 'url': urlStr, 'weburl':settings.WEB_URL+settings.BASE_URL}, context_instance=RequestContext(request)) |
491 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)) |
396 |
492 |
397 |
493 |
398 def ldt(request, url, startSegment = None): |
494 def ldt(request, url, startSegment = None): |
399 |
|
400 |
495 |
401 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
496 resp = HttpResponse(mimetype="text/xml; charset=utf-8") |
402 resp['Cache-Control'] = 'no-cache' |
497 resp['Cache-Control'] = 'no-cache' |
403 |
498 |
404 contentList = Content.objects.filter(iri_id=url) |
499 contentList = Content.objects.filter(iri_id=url) |
478 return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request)) |
573 return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request)) |
479 |
574 |
480 |
575 |
481 def write_content_base(request, iri_id=None): |
576 def write_content_base(request, iri_id=None): |
482 |
577 |
483 logging.debug(repr(request)) |
|
484 if iri_id: |
578 if iri_id: |
485 instance_content = Content.objects.get(iri_id=iri_id) |
579 instance_content = Content.objects.get(iri_id=iri_id) |
486 instance_media = instance_content.media_obj |
580 instance_media = instance_content.media_obj |
487 logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content) ) |
581 logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content) ) |
488 else: |
582 else: |
672 media_form = MediaForm() |
766 media_form = MediaForm() |
673 else: |
767 else: |
674 content_form, media_form, form_status = write_content_base(request, iri_id) |
768 content_form, media_form, form_status = write_content_base(request, iri_id) |
675 |
769 |
676 if iri_id: |
770 if iri_id: |
677 create_content_action = reverse(write_content, kwargs={'iri_id':iri_id}) |
771 create_content_action = reverse('ldt.ldt_utils.views.write_content', kwargs={'iri_id':iri_id}) |
678 else: |
772 else: |
679 create_content_action = reverse(write_content) |
773 create_content_action = reverse('ldt.ldt_utils.views.write_content') |
680 |
|
681 |
774 |
682 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}, context_instance=RequestContext(request)) |
775 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}, context_instance=RequestContext(request)) |
683 |
776 |
684 @login_required |
777 @login_required |
685 def prepare_delete_content(request, iri_id=None): |
778 def prepare_delete_content(request, iri_id=None): |