src/ldt/ldt/ldt_utils/models.py
changeset 225 691a394a7afd
parent 223 31cb29055591
child 262 1105a5ed9f8f
equal deleted inserted replaced
223:31cb29055591 225:691a394a7afd
   382             return True
   382             return True
   383         else:
   383         else:
   384             return False
   384             return False
   385         
   385         
   386     def save(self):
   386     def save(self):
   387         doc = lxml.etree.fromstring(self.ldt)
   387         if self.ldt:
   388         self.contents.clear()
   388             doc = lxml.etree.fromstring(self.ldt)
   389         medias = doc.xpath('/iri/medias/media')
   389             new_contents = []
   390                         
   390             contents = doc.xpath("/iri/medias/media")
   391         description = self.get_description(doc)
   391             for elem in contents:
   392         new_desc = clean_description(description)
   392                 id = elem.get("id")
   393         
   393                 new_contents.append(id)
   394         if new_desc:        
   394     
   395             desc_node = doc.xpath('/iri/project')[0]
   395             for c in self.contents.all():
   396             desc_node.set('abstract', new_desc)
   396                 if not c.iri_id in new_contents:
   397             self.ldt = lxml.etree.tostring(doc, pretty_print=True)          
   397                     self.contents.remove(c)
   398         
   398             
   399         for media in medias:
   399             contents_id = [c.id for c in self.contents.all()]
   400             iri_id = media.get('id')
   400             for c in new_contents:
   401             c = Content.objects.get(iri_id=iri_id)
   401                 if c not in contents_id:
   402             self.contents.add(c)
   402                     content = Content.objects.get(iri_id=c)
       
   403                     self.contents.add(content)
       
   404                                 
       
   405             description = self.get_description(doc)
       
   406             new_desc = clean_description(description)
       
   407             
       
   408             if new_desc:        
       
   409                 desc_node = doc.xpath('/iri/project')[0]
       
   410                 desc_node.set('abstract', new_desc)
       
   411                 self.ldt = lxml.etree.tostring(doc, pretty_print=True)          
   403             
   412             
   404         super(Project, self).save()
   413         super(Project, self).save()
   405 
   414 
   406 class Segment(models.Model):
   415 class Segment(models.Model):
   407     
   416