# HG changeset patch # User verrierj # Date 1321977929 -3600 # Node ID 3661b2741f3fa729171e393b03f528cccd9b5c0a # Parent 691a394a7afdc4a1f2ea4df610e8201bb46f7c5e# Parent a79a94e14d4dd310aa878234a4b6284fd602a719 Merge with a79a94e14d4dd310aa878234a4b6284fd602a719 diff -r a79a94e14d4d -r 3661b2741f3f src/ldt/ldt/ldt_utils/forms.py --- a/src/ldt/ldt/ldt_utils/forms.py Mon Nov 14 18:11:13 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/forms.py Tue Nov 22 17:05:29 2011 +0100 @@ -10,7 +10,7 @@ flatten = forms.BooleanField(required=False, initial=True) class LdtAddForm(forms.ModelForm): - title = forms.CharField() + title = forms.CharField(required=True) contents = forms.ModelMultipleChoiceField(Content.objects.all()) #@UndefinedVariable description = forms.CharField(widget=forms.Textarea, required=False) # owner = forms.ModelChoiceField(Author.objects.all()) diff -r a79a94e14d4d -r 3661b2741f3f src/ldt/ldt/ldt_utils/models.py --- a/src/ldt/ldt/ldt_utils/models.py Mon Nov 14 18:11:13 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/models.py Tue Nov 22 17:05:29 2011 +0100 @@ -384,22 +384,31 @@ return False def save(self): - doc = lxml.etree.fromstring(self.ldt) - self.contents.clear() - medias = doc.xpath('/iri/medias/media') - - description = self.get_description(doc) - new_desc = clean_description(description) - - if new_desc: - desc_node = doc.xpath('/iri/project')[0] - desc_node.set('abstract', new_desc) - self.ldt = lxml.etree.tostring(doc, pretty_print=True) - - for media in medias: - iri_id = media.get('id') - c = Content.objects.get(iri_id=iri_id) - self.contents.add(c) + if self.ldt: + doc = lxml.etree.fromstring(self.ldt) + new_contents = [] + contents = doc.xpath("/iri/medias/media") + for elem in contents: + id = elem.get("id") + new_contents.append(id) + + for c in self.contents.all(): + if not c.iri_id in new_contents: + self.contents.remove(c) + + contents_id = [c.id for c in self.contents.all()] + for c in new_contents: + if c not in contents_id: + content = Content.objects.get(iri_id=c) + self.contents.add(content) + + description = self.get_description(doc) + new_desc = clean_description(description) + + if new_desc: + desc_node = doc.xpath('/iri/project')[0] + desc_node.set('abstract', new_desc) + self.ldt = lxml.etree.tostring(doc, pretty_print=True) super(Project, self).save() diff -r a79a94e14d4d -r 3661b2741f3f src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Mon Nov 14 18:11:13 2011 +0100 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Tue Nov 22 17:05:29 2011 +0100 @@ -29,11 +29,18 @@ {{ block.super }}