web/ldt/ldt_utils/projectserializer.py
changeset 27 f81da251d0aa
parent 26 d5b6908e4da5
equal deleted inserted replaced
26:d5b6908e4da5 27:f81da251d0aa
    45                 "id-ref":content.iri_id,
    45                 "id-ref":content.iri_id,
    46                 "editable":"false"
    46                 "editable":"false"
    47             }
    47             }
    48         }
    48         }
    49         
    49         
    50         self.lists.append(new_list)
       
    51         
    50         
    52         for decoupage_node in ensemble_node.childNodes:
    51         for decoupage_node in ensemble_node.childNodes:
    53             if decoupage_node.nodeType != xml.dom.Node.ELEMENT_NODE or decoupage_node.tagName != "decoupage" :
    52             if decoupage_node.nodeType != xml.dom.Node.ELEMENT_NODE or decoupage_node.tagName != "decoupage" :
    54                 continue
    53                 continue
    55             
    54             
   157                             }
   156                             }
   158                         }
   157                         }
   159                         self.tags[tag_id] = new_tag
   158                         self.tags[tag_id] = new_tag
   160                     element_tags.append({"id-ref":tag_id})
   159                     element_tags.append({"id-ref":tag_id})
   161 
   160 
       
   161                 if not element_tags:
       
   162                     element_tags = None
       
   163                     
   162                 new_annotation = {
   164                 new_annotation = {
   163                     "begin": element_begin,
   165                     "begin": element_begin,
   164                     "end": int(element_begin) + int(element_duration),
   166                     "end": int(element_begin) + int(element_duration),
   165                     "id": element_id,
   167                     "id": element_id,
   166                     "media": element_media,
   168                     "media": element_media,
   173                             "src" : element_audio_src,
   175                             "src" : element_audio_src,
   174                             "mimetype": "audio/mp3",
   176                             "mimetype": "audio/mp3",
   175                             "href": element_audio_href
   177                             "href": element_audio_href
   176                         },
   178                         },
   177                     },
   179                     },
       
   180                     "tags": element_tags,
   178                     "meta": {
   181                     "meta": {
   179                         "id-ref": decoupage_id,
   182                         "id-ref": decoupage_id,
   180                         "dc:creator": decoupage_creator,
   183                         "dc:creator": decoupage_creator,
   181                         "dc:contributor": decoupage_contributor,
   184                         "dc:contributor": decoupage_contributor,
   182                         "dc:created": decoupage_created,
   185                         "dc:created": decoupage_created,
   184                     }
   187                     }
   185                 }
   188                 }
   186                 
   189                 
   187                 self.annotations.append(new_annotation)
   190                 self.annotations.append(new_annotation)
   188         
   191         
   189 
   192         if not list_items:
   190     
   193             new_list["items"] = None
       
   194         self.lists.append(new_list)
       
   195 
       
   196 
   191     def __parse_ldt(self):
   197     def __parse_ldt(self):
   192         
   198         
   193         doc = xml.dom.minidom.parseString(self.project.ldt.encode("utf-8"))
   199         doc = xml.dom.minidom.parseString(self.project.ldt.encode("utf-8"))
   194         self.ldt_doc = Ft.Xml.Domlette.ConvertDocument(doc)
   200         self.ldt_doc = Ft.Xml.Domlette.ConvertDocument(doc)
   195         con = xml.xpath.Context.Context(doc, 1, 1, None)
   201         con = xml.xpath.Context.Context(doc, 1, 1, None)
   298              'dc:title':self.project.title,
   304              'dc:title':self.project.title,
   299              'dc:description':self.project.get_description(self.ldt_doc), # get from doc, parse ldt
   305              'dc:description':self.project.get_description(self.ldt_doc), # get from doc, parse ldt
   300              'main_media': {"id-ref":project_main_media}
   306              'main_media': {"id-ref":project_main_media}
   301             }
   307             }
   302         
   308         
       
   309         if not self.medias:
       
   310             self.medias = None
       
   311                         
       
   312         if not self.annotation_types:
       
   313             self.annotation_types = None
       
   314         
       
   315         if len(self.tags) == 0:
       
   316             tags = None
       
   317         else:
       
   318             tags = self.tags.values()
       
   319             
       
   320         if not self.lists:
       
   321             self.lists = None
       
   322             
       
   323         if not self.views:
       
   324             self.views = None
       
   325             
       
   326         if not self.annotations:
       
   327             self.annotations = None
       
   328         
   303         res['medias'] =  self.medias
   329         res['medias'] =  self.medias
   304         res['annotation-types'] = self.annotation_types
   330         res['annotation-types'] = self.annotation_types
   305         res['annotations'] = self.annotations
   331         res['annotations'] = self.annotations
   306         res['lists'] = self.lists
   332         res['lists'] = self.lists
   307         res['tags'] = self.tags.values()
   333         res['tags'] = tags
   308         res['views'] = self.views # ignored for the moment
   334         res['views'] = self.views # ignored for the moment
   309         
   335         
   310         return res
   336         return res
       
   337