bring changeset restore object feature back to life
This commit is contained in:
parent
e0b9ae0087
commit
3b50c6f9dd
2 changed files with 18 additions and 22 deletions
|
@ -91,7 +91,7 @@
|
||||||
{% trans 'Edit' %}
|
{% trans 'Edit' %}
|
||||||
</a>
|
</a>
|
||||||
{% elif obj.deleted and can_edit and not obj.missing_dependencies and not obj.unique_collisions %}
|
{% elif obj.deleted and can_edit and not obj.missing_dependencies and not obj.unique_collisions %}
|
||||||
<button type="submit" name="restore" value="{{ obj.pk }}" class="btn btn-warning btn-xs pull-right">
|
<button type="submit" name="restore" value="{{ obj.model_name }}-{{ obj.pk }}" class="btn btn-warning btn-xs pull-right">
|
||||||
{% trans 'Restore' %}
|
{% trans 'Restore' %}
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -38,26 +38,21 @@ def changeset_detail(request, pk):
|
||||||
can_delete = changeset.can_delete(request)
|
can_delete = changeset.can_delete(request)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
restore = request.POST.get('restore')
|
restore_model, restore_id = (request.POST.get('restore')+'-').split('-')[:2]
|
||||||
if restore and restore.isdigit():
|
if restore_model and restore_id and restore_id.isdigit():
|
||||||
raise NotImplementedError # todo: restore (no pun intended) this feature
|
if request.changeset.can_edit(request):
|
||||||
# if request.changeset.can_edit(request):
|
changed_object = changeset.changes.objects.get(restore_model, {}).get(restore_id)
|
||||||
# try:
|
if changed_object is None:
|
||||||
# changed_object = changeset.changed_objects_set.get(pk=restore)
|
messages.error(request, _("Can't find this changed object"))
|
||||||
# except Exception:
|
elif not changed_object.deleted:
|
||||||
# pass
|
messages.error(request, _("Can't restore this object because it wasn't deleted"))
|
||||||
# else:
|
else:
|
||||||
# try:
|
changed_object.deleted = False
|
||||||
# changed_object.restore()
|
messages.success(request, _('Object has been successfully restored.'))
|
||||||
# messages.success(request, _('Object has been successfully restored.'))
|
else:
|
||||||
# except PermissionError:
|
messages.error(request, _('You can not edit changes on this change set.'))
|
||||||
# messages.error(request, _('You cannot restore this object, because it depends on '
|
|
||||||
# 'a deleted object or it would violate a unique contraint.'))
|
return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
||||||
#
|
|
||||||
# else:
|
|
||||||
# messages.error(request, _('You can not edit changes on this change set.'))
|
|
||||||
#
|
|
||||||
# return redirect(reverse('editor.changesets.detail', kwargs={'pk': changeset.pk}))
|
|
||||||
|
|
||||||
elif request.POST.get('activate') == '1':
|
elif request.POST.get('activate') == '1':
|
||||||
with changeset.lock_to_edit(request) as changeset:
|
with changeset.lock_to_edit(request) as changeset:
|
||||||
|
@ -72,7 +67,7 @@ def changeset_detail(request, pk):
|
||||||
elif request.POST.get('propose') == '1':
|
elif request.POST.get('propose') == '1':
|
||||||
if not request.user.is_authenticated:
|
if not request.user.is_authenticated:
|
||||||
messages.info(request, _('You need to log in to propose changes.'))
|
messages.info(request, _('You need to log in to propose changes.'))
|
||||||
return redirect(reverse('editor.login')+'?r='+request.path)
|
return redirect(reverse('editor.login') + '?r=' + request.path)
|
||||||
|
|
||||||
with changeset.lock_to_edit(request) as changeset:
|
with changeset.lock_to_edit(request) as changeset:
|
||||||
if not changeset.title or not changeset.description:
|
if not changeset.title or not changeset.description:
|
||||||
|
@ -242,6 +237,7 @@ def changeset_detail(request, pk):
|
||||||
|
|
||||||
changed_object_data = {
|
changed_object_data = {
|
||||||
'model': model,
|
'model': model,
|
||||||
|
'model_name': model._meta.model_name,
|
||||||
'model_title': model._meta.verbose_name,
|
'model_title': model._meta.verbose_name,
|
||||||
'pk': changed_object.obj.id,
|
'pk': changed_object.obj.id,
|
||||||
'desc': format_lazy(_('{model} #{id}'), model=model._meta.verbose_name, id=changed_object.obj.id),
|
'desc': format_lazy(_('{model} #{id}'), model=model._meta.verbose_name, id=changed_object.obj.id),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue