# HG changeset patch # User cavaliet # Date 1406130008 -7200 # Node ID 94e317204c4abfea22aed2c912ca84ee4eaf472c # Parent 8479e91f15ccf578084e7c346c6c472e68e54c70 v1.53.8 : enhance json generation when for one media diff -r 8479e91f15cc -r 94e317204c4a src/ldt/ldt/__init__.py --- a/src/ldt/ldt/__init__.py Wed May 28 16:29:18 2014 +0200 +++ b/src/ldt/ldt/__init__.py Wed Jul 23 17:40:08 2014 +0200 @@ -1,6 +1,6 @@ __all__ = ["VERSION", "get_version", "__version__"] -VERSION = (1, 53, 7, "final", 0) +VERSION = (1, 53, 8, "final", 0) def get_version(): diff -r 8479e91f15cc -r 94e317204c4a src/ldt/ldt/ldt_utils/projectserializer.py --- a/src/ldt/ldt/ldt_utils/projectserializer.py Wed May 28 16:29:18 2014 +0200 +++ b/src/ldt/ldt/ldt_utils/projectserializer.py Wed Jul 23 17:40:08 2014 +0200 @@ -40,6 +40,8 @@ self.display_ensemble_list = [] self.first_cutting = first_cutting self.only_one_cutting = only_one_cutting + # if first_cutting, it means that we limit to the concerned media= + self.one_content= None def __parse_views(self, display_node_list): @@ -342,12 +344,18 @@ self.__parse_views(self.ldt_doc.xpath(xpath_str)) - #getting all contents at once - contents_iri_id = list( - set(self.ldt_doc.xpath("/iri/medias/media/@id")) | - set(self.ldt_doc.xpath("/iri/annotations/content/@id")) | - (set(self.ldt_doc.xpath('/iri/annotations/content[ensemble/decoupage/@id=\'%s\']/@id' % self.first_cutting)) if self.first_cutting and self.first_cutting not in self.display_cuttings_list else set()) - ) + # getting all contents at once + # If self.one_content, we remove the other content + if self.first_cutting and self.one_content: + contents_iri_id = list( + set(self.ldt_doc.xpath('/iri/annotations/content[ensemble/decoupage/@id=\'%s\']/@id' % self.first_cutting)) + ) + else: + contents_iri_id = list( + set(self.ldt_doc.xpath("/iri/medias/media/@id")) | + set(self.ldt_doc.xpath("/iri/annotations/content/@id")) | + (set(self.ldt_doc.xpath('/iri/annotations/content[ensemble/decoupage/@id=\'%s\']/@id' % self.first_cutting)) if self.first_cutting and self.first_cutting not in self.display_cuttings_list else set()) + ) contents = dict([ (c.iri_id, c) for c in Content.objects.filter(iri_id__in=contents_iri_id).select_related('media_obj', 'stat_annotation').prefetch_related("authors")]) m_cls = ContentType.objects.get(model='media') @@ -358,7 +366,7 @@ res = self.ldt_doc.xpath("/iri/medias/media") for mediaNode in res: iri_id = mediaNode.attrib[u"id"] - if self.from_display and iri_id not in self.display_contents_list: + if (self.from_display and iri_id not in self.display_contents_list) or iri_id not in contents_iri_id: continue content = contents[iri_id]#Content.objects.get(iri_id=iri_id) #@UndefinedVariable self.__parse_content(content, medias) @@ -366,7 +374,7 @@ res = self.ldt_doc.xpath("/iri/annotations/content") for content_node in res: content_id = content_node.attrib[u"id"] - if self.from_display and content_id not in self.display_contents_list: + if (self.from_display and content_id not in self.display_contents_list) or content_id not in contents_iri_id: continue content = contents[content_id]#Content.objects.get(iri_id=content_id) #@UndefinedVariable for ensemble_node in content_node: @@ -523,9 +531,11 @@ self.__parse_ensemble(ensemble_node, content) - def serialize_to_cinelab(self): + def serialize_to_cinelab(self, one_content_param): res = {} + + self.one_content = one_content_param if not self.parsed: self.__parse_ldt() diff -r 8479e91f15cc -r 94e317204c4a src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html Wed May 28 16:29:18 2014 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/embed_player.html Wed Jul 23 17:40:08 2014 +0200 @@ -12,7 +12,7 @@ if (typeof jQuery == "undefined") { jQuery = IriSP.jQuery; } -var metadatas = {metadata: {url: '{{json_url}}'}}; +var metadatas = {metadata: {url: '{{json_url}}?onecontent=1' }}; var metadata_key = "metadata"; IriSP.libFiles.defaultDir = '{% static "ldt/js/" %}'; diff -r 8479e91f15cc -r 94e317204c4a src/ldt/ldt/ldt_utils/views/json.py --- a/src/ldt/ldt/ldt_utils/views/json.py Wed May 28 16:29:18 2014 +0200 +++ b/src/ldt/ldt/ldt_utils/views/json.py Wed Jul 23 17:40:08 2014 +0200 @@ -64,10 +64,15 @@ escape_bool = False if escape_str: escape_bool = {'true': True, 'false': False, "0": False, "1": True}.get(escape_str.lower()) + + one_content_str = request.REQUEST.get("onecontent") + one_content_bool = False + if one_content_str: + one_content_bool = {'true': True, 'false': False, "0": False, "1": True}.get(one_content_str.lower()) ps = ProjectJsonSerializer(project, serialize_contents, first_cutting=first_cutting) - project_dict = ps.serialize_to_cinelab() + project_dict = ps.serialize_to_cinelab(one_content_bool) json_str = simplejson.dumps(project_dict, ensure_ascii=False, indent=indent)