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 |