diff -r c9460033138f -r 0fb4b009c6eb web/ldt/ldt_utils/views.py --- a/web/ldt/ldt_utils/views.py Tue Oct 19 15:14:42 2010 +0200 +++ b/web/ldt/ldt_utils/views.py Tue Oct 19 15:21:07 2010 +0200 @@ -1,17 +1,18 @@ -from Ft.Xml import MarkupWriter from contentindexer import * from django.conf import settings from django.contrib.auth.decorators import login_required from django.core import serializers from django.core.urlresolvers import reverse +from django.db.models import Q from django.forms.forms import get_declared_fields -from django.forms.models import model_to_dict +from django.forms.models import model_to_dict from django.forms.util import ErrorList from django.http import HttpResponse, HttpResponseRedirect, \ - HttpResponseForbidden + HttpResponseForbidden, HttpResponseServerError from django.shortcuts import render_to_response, get_object_or_404, \ get_list_or_404 from django.template import RequestContext +from django.template.loader import render_to_string from django.utils import simplejson from django.utils.html import escape from django.utils.translation import ugettext as _, ungettext @@ -19,7 +20,11 @@ from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, \ CopyProjectForm, ContentForm, MediaForm from ldt.core.models import Owner +from ldt.ldt_utils.models import Content, Project, Owner +from ldt.ldt_utils.projectserializer import ProjectSerializer +from ldt.ldt_utils.utils import boolean_convert from lxml import etree +from lxml.html import fromstring, fragment_fromstring from models import * from projectserializer import * from string import Template @@ -33,13 +38,104 @@ import ldt.utils.path as ldt_utils_path import logging import lucene +import lxml.etree import tempfile import urllib2 import uuid - + + +@login_required +def workspace(request): + + # list of contents + content_list = Content.objects.all() + + # get list of projects + project_list = Project.objects.all() + + # render list + return render_to_response("ldt/ldt_utils/workspace.html", + {'contents': content_list, 'projects': project_list}, + context_instance=RequestContext(request)) + + +def popup_embed(request): + + json_url = request.GET.get("json_url") + player_id = request.GET.get("player_id") + ldt_id = request.GET.get("ldt_id") + + + project = Project.objects.get(ldt_id=ldt_id); + + if not ldt_auth.checkAccess(request.user, project): + return HttpResponseForbidden(_("You can not access this project")) + + ps = ProjectSerializer(project, from_contents=False, from_display=True) + annotations = ps.getAnnotations(first_cutting=True) + + embed_rendered = dict((typestr, + (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)) + for typestr in ('player','seo_body', 'seo_meta', 'links') ) + + return render_to_response("ldt/ldt_utils/embed_popup.html", + {'json_url':json_url,'player_id':player_id, 'embed_rendered':embed_rendered, 'annotations':annotations}, + context_instance=RequestContext(request)) + + + +@login_required +def projectsfilter(request, filter, is_owner=False, status=0): + + project_list = None + is_owner = boolean_convert(is_owner) + status = int(status) + query = Q() + + if is_owner: + owner = None + try: + owner = Owner.objects.get(user=request.user) + except: + return HttpResponseServerError("

User not found

") + query &= Q(owner=owner) + + if status > 0: + query &= Q(state=status) + + if filter: + if len(filter) > 0 and filter[0] == '_': + filter = filter[1:] + query &= Q(title__icontains=filter) + + project_list = Project.objects.filter(query) + + return render_to_response("ldt/ldt_utils/partial/projectslist.html", + {'projects': project_list}, + context_instance=RequestContext(request)) + + + + + +@login_required +def contentsfilter(request, filter): + if filter and len(filter) > 0 and filter[0] == '_': + filter = filter[1:] + + if filter: + content_list = Content.objects.filter(title__icontains=filter) + else: + content_list = Content.objects.all() + + return render_to_response("ldt/ldt_utils/partial/contentslist.html", + {'contents': content_list}, + context_instance=RequestContext(request)) + + def searchForm(request): form = SearchForm() - return render_to_response('ldt/ldt_utils_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) + return render_to_response('ldt/ldt_utils/search_form.html',{'form': form} , context_instance=RequestContext(request)) def searchIndex(request): @@ -53,7 +149,7 @@ language_code = request.LANGUAGE_CODE[:2] url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, queryStr]) - 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)) + 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)) else: resp = HttpResponse() resp.write("Error : No result"); @@ -62,7 +158,7 @@ language_code = request.LANGUAGE_CODE[:2] url = settings.WEB_URL + django.core.urlresolvers.reverse("ldt.ldt_utils.views.searchInit", args=[field, query]) - 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)) + 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)) def searchInit(request, field, query): @@ -177,7 +273,7 @@ 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)) def created_ldt(request): - return render_to_response('ldt/ldt_utils/done.html', context_instance=RequestContext(request)) + return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request)) def indexProject(request, id): @@ -191,7 +287,7 @@ else: readonly = 'false' - 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)) + 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)) def init(request, method, url): ldtgen = LdtUtils() @@ -201,7 +297,7 @@ resp = HttpResponse(mimetype="text/xml") resp['Cache-Control']='no-cache, must-revalidate' resp['Pragma']='no-cache' - + resp.write( etree.tostring(doc, pretty_print=True, xml_declaration=True, encoding="utf-8")) return resp @@ -392,11 +488,10 @@ urlStr = settings.WEB_URL + reverse("ldt_init", args=['ldt',url]) language_code = request.LANGUAGE_CODE[:2] - 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)) + 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)) def ldt(request, url, startSegment = None): - resp = HttpResponse(mimetype="text/xml; charset=utf-8") resp['Cache-Control'] = 'no-cache' @@ -480,7 +575,6 @@ def write_content_base(request, iri_id=None): - logging.debug(repr(request)) if iri_id: instance_content = Content.objects.get(iri_id=iri_id) instance_media = instance_content.media_obj @@ -674,10 +768,9 @@ content_form, media_form, form_status = write_content_base(request, iri_id) if iri_id: - create_content_action = reverse(write_content, kwargs={'iri_id':iri_id}) + create_content_action = reverse('ldt.ldt_utils.views.write_content', kwargs={'iri_id':iri_id}) else: - create_content_action = reverse(write_content) - + create_content_action = reverse('ldt.ldt_utils.views.write_content') 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))