check unique collisions to prevent those objects from being restored

This commit is contained in:
Laura Klünder 2017-07-27 15:06:46 +02:00
parent bba5fab2ec
commit cf2496b5a7
3 changed files with 30 additions and 5 deletions

View file

@ -48,8 +48,8 @@ def changeset_detail(request, pk):
changed_object.restore()
messages.success(request, _('Object has been successfully restored.'))
except PermissionError:
messages.error(request, _('You cannot restore this object, because '
'it depends on a deleted object.'))
messages.error(request, _('You cannot restore this object, because it depends on '
'a deleted object or it would violate a unique contraint.'))
else:
messages.error(request, _('You can not edit changes on this change set.'))
@ -234,6 +234,7 @@ def changeset_detail(request, pk):
changes = []
missing_dependencies = changed_object.get_missing_dependencies()
unique_collisions = changed_object.get_unique_collisions()
changed_object_data = {
'model': obj.__class__,
'model_title': obj.__class__._meta.verbose_name,
@ -244,6 +245,7 @@ def changeset_detail(request, pk):
'edit_url': edit_url,
'deleted': changed_object.deleted,
'missing_dependencies': missing_dependencies,
'unique_collisions': unique_collisions,
'order': (changed_object.deleted and changed_object.is_created, not changed_object.is_created),
}
changed_objects_data.append(changed_object_data)
@ -293,6 +295,10 @@ def changeset_detail(request, pk):
change_data.update({
'missing_dependency': field.name in missing_dependencies,
})
if name in unique_collisions:
change_data.update({
'unique_collision': field.name in unique_collisions,
})
order = 5
if name == 'slug':
order = 1