diff options
| -rw-r--r-- | chimere/forms.py | 8 | ||||
| -rw-r--r-- | chimere/models.py | 9 |
2 files changed, 5 insertions, 12 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index fb71057..84ae27b 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -280,6 +280,7 @@ class BaseFileForm(forms.ModelForm): if not hasattr(self, '_related_name') or not self._related_name: raise ImproperlyConfigured super(BaseFileForm, self).__init__(*args, **kwargs) + self.fields.pop('marker') def save(self, associated_marker): if not hasattr(self, 'cleaned_data') or not self.cleaned_data: @@ -287,11 +288,8 @@ class BaseFileForm(forms.ModelForm): instance = None if self.cleaned_data.get('id'): try: - # marker must be equal to none because the link has just be - # removed - this condition is necessary to prevent modification - # of already validated items by a forged request instance = self._meta.model.objects.get( - pk=self.cleaned_data['id'], marker=None) + pk=self.cleaned_data['id']) except: pass self.cleaned_data.pop('id') @@ -300,13 +298,13 @@ class BaseFileForm(forms.ModelForm): instance.delete() return self.cleaned_data.pop('DELETE') + self.cleaned_data['marker'] = associated_marker if instance: for k in self.cleaned_data: setattr(instance, k, self.cleaned_data[k]) instance.save() else: instance = self._meta.model.objects.create(**self.cleaned_data) - getattr(associated_marker, self._related_name).add(instance) class MultimediaFileForm(BaseFileForm): """ diff --git a/chimere/models.py b/chimere/models.py index 295de1c..b9e9fb4 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -289,11 +289,6 @@ class Marker(GeographicItem): null=True) route = models.ForeignKey(u"Route", blank=True, null=True, related_name='associated_marker') - #pictures = models.ManyToManyField(u"PictureFile", verbose_name='Pictures', - # blank=True, null=True, related_name='marker') - #multimedia_files = models.ManyToManyField(u"MultimediaFile", - # verbose_name='Multimedia files', blank=True, null=True, - # related_name='marker')#, edit_inline=models.STACKED) description = models.TextField(_(u"Description"), blank=True, null=True) objects = BaseGeoManager() @@ -474,7 +469,7 @@ class MultimediaFile(models.Model): multimedia_type = models.ForeignKey(MultimediaType) miniature = models.BooleanField(_(u"Display inside the description?"), default=settings.CHIMERE_MINIATURE_BY_DEFAULT) - marker = models.ForeignKey(Marker) + marker = models.ForeignKey(Marker, related_name='multimedia_files') def __unicode__(self): return self.name or u"" @@ -502,7 +497,7 @@ class PictureFile(models.Model): miniature = models.BooleanField(_(u"Display inside the description?"), default=settings.CHIMERE_MINIATURE_BY_DEFAULT) order = models.IntegerField(_(u"Order"), default=1) - marker = models.ForeignKey(Marker) + marker = models.ForeignKey(Marker, related_name='pictures') def __unicode__(self): return self.name or u"" |
