diff --git a/src/c3nav/editor/forms.py b/src/c3nav/editor/forms.py index 9058a8d9..163ccbab 100644 --- a/src/c3nav/editor/forms.py +++ b/src/c3nav/editor/forms.py @@ -93,11 +93,6 @@ class MapitemFormMixin(ModelForm): if not self.cleaned_data.get('geometry'): raise ValidationError('Missing geometry.') - if hasattr(self.instance, 'titles') and not any(self.titles.values()): - raise ValidationError( - _('You have to select a title in at least one language.') - ) - super().clean() diff --git a/src/c3nav/editor/models/changeset.py b/src/c3nav/editor/models/changeset.py index 5251f6fd..d03ac3c2 100644 --- a/src/c3nav/editor/models/changeset.py +++ b/src/c3nav/editor/models/changeset.py @@ -279,7 +279,8 @@ class ChangeSet(models.Model): objects[model] = {pk: model(pk=pk) for pk in pks} slug_submodels = tuple(model for model in object_pks.keys() if issubclass(model, LocationSlug)) - object_pks[LocationSlug] = reduce(operator.or_, (object_pks[model] for model in slug_submodels)) + if slug_submodels: + object_pks[LocationSlug] = reduce(operator.or_, (object_pks[model] for model in slug_submodels)) for model in slug_submodels: object_pks.pop(model) diff --git a/src/c3nav/mapdata/models/locations.py b/src/c3nav/mapdata/models/locations.py index ecddc052..1f793666 100644 --- a/src/c3nav/mapdata/models/locations.py +++ b/src/c3nav/mapdata/models/locations.py @@ -28,7 +28,7 @@ class LocationSlug(SerializableMixin, models.Model): 'LocationGroup': 'g' } LOCATION_TYPE_BY_CODE = {code: model_name for model_name, code in LOCATION_TYPE_CODES.items()} - slug = models.SlugField(_('Slug'), unique=True, null=True, max_length=50) + slug = models.SlugField(_('Slug'), unique=True, null=True, blank=True, max_length=50) objects = LocationSlugManager()