Add support for purging trash can items, improve redirection after restoring, improve navigation
This commit is contained in:
@@ -8,13 +8,13 @@ from navigation.api import bind_links
|
||||
from project_tools.api import register_tool
|
||||
|
||||
from .api import make_trashable
|
||||
from .links import trash_can_list, trash_can_items, trash_can_item_restore
|
||||
from .links import trash_can_list, trash_can_items, trash_can_item_restore, trash_can_item_delete
|
||||
from .models import TrashCan, TrashCanItem
|
||||
|
||||
register_tool(trash_can_list)
|
||||
bind_links(['trash_can_list', TrashCan, TrashCanItem], trash_can_list, menu_name='secondary_menu')
|
||||
bind_links(['trash_can_list', TrashCan], trash_can_list, menu_name='secondary_menu')
|
||||
bind_links([TrashCan], trash_can_items)
|
||||
bind_links([TrashCanItem], trash_can_item_restore)
|
||||
bind_links([TrashCanItem], [trash_can_item_restore, trash_can_item_delete])
|
||||
|
||||
@transaction.commit_on_success
|
||||
def create_trash_cans():
|
||||
|
||||
@@ -6,5 +6,6 @@ from navigation.api import Link
|
||||
|
||||
|
||||
trash_can_list = Link(text=_(u'trash cans'), view='trash_can_list', sprite='bin_closed', icon='bin_closed.png')
|
||||
trash_can_items = Link(text=_(u'items'), view='trash_can_items', args='object.pk', sprite='bin')
|
||||
trash_can_item_restore = Link(text=_(u'restore'), view='trash_can_item_restore', args='object.pk', sprite='bin_empty')
|
||||
trash_can_items = Link(text=_(u'items'), view='trash_can_items', args='trash_can.pk', sprite='bin')
|
||||
trash_can_item_restore = Link(text=_(u'restore'), view='trash_can_item_restore', args='trash_can_item.pk', sprite='bin_empty')
|
||||
trash_can_item_delete = Link(text=_(u'delete'), view='trash_can_item_delete', args='trash_can_item.pk', sprite='delete')
|
||||
|
||||
@@ -10,7 +10,6 @@ from common.managers import CustomizableQuerySetManager
|
||||
|
||||
class TrashCanManager(models.Manager):
|
||||
def get_or_create(self, *args, **kwargs):
|
||||
#job_queue_labels[kwargs.get('name')] = kwargs.get('defaults', {}).get('label')
|
||||
instance, created = super(TrashCanManager, self).get_or_create(*args, **kwargs)
|
||||
instance.label = kwargs.get('defaults', {}).get('label')
|
||||
instance.save()
|
||||
@@ -85,6 +84,10 @@ class TrashCanItem(models.Model):
|
||||
|
||||
def restore(self):
|
||||
self.delete()
|
||||
|
||||
def purge(self):
|
||||
self.content_object.delete(trash=False)
|
||||
self.delete()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.pk:
|
||||
|
||||
@@ -4,4 +4,5 @@ urlpatterns = patterns('trash.views',
|
||||
url(r'^list/$', 'trash_can_list', (), 'trash_can_list'),
|
||||
url(r'^trash_can/(?P<trash_can_pk>\d+)/items/$', 'trash_can_items', (), 'trash_can_items'),
|
||||
url(r'^trash_can/item/(?P<trash_can_item_pk>\d+)/restore/$', 'trash_can_item_restore', (), 'trash_can_item_restore'),
|
||||
url(r'^trash_can/item/(?P<trash_can_item_pk>\d+)/delete/$', 'trash_can_item_delete', (), 'trash_can_item_delete'),
|
||||
)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.contrib import messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
@@ -18,6 +20,7 @@ def trash_can_list(request):
|
||||
|
||||
context = {
|
||||
'object_list': TrashCan.objects.all(),
|
||||
'list_object_variable_name': 'trash_can',
|
||||
'title': _(u'trash cans'),
|
||||
'extra_columns': [
|
||||
{
|
||||
@@ -47,7 +50,9 @@ def trash_can_items(request, trash_can_pk):
|
||||
|
||||
context = {
|
||||
'object_list': trash_can.items.all(),
|
||||
'object': trash_can,
|
||||
'trash_can': trash_can,
|
||||
'list_object_variable_name': 'trash_can_item',
|
||||
'navigation_object_name': 'trash_can',
|
||||
'title': _(u'items in trash can: %s') % trash_can,
|
||||
'extra_columns': [
|
||||
{
|
||||
@@ -65,7 +70,6 @@ def trash_can_items(request, trash_can_pk):
|
||||
def trash_can_item_restore(request, trash_can_item_pk):
|
||||
#Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE])
|
||||
|
||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None)))
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
|
||||
trash_can_item = get_object_or_404(TrashCanItem, pk=trash_can_item_pk)
|
||||
@@ -74,16 +78,50 @@ def trash_can_item_restore(request, trash_can_item_pk):
|
||||
try:
|
||||
trash_can_item.restore()
|
||||
except Exception, exc:
|
||||
messages.warning(request, _(u'Error restoring item; %s') % exc)
|
||||
messages.warning(request, _(u'Error restoring trash can item; %s') % exc)
|
||||
return HttpResponseRedirect(previous)
|
||||
else:
|
||||
messages.success(request, _(u'Item restored successfully.'))
|
||||
return HttpResponseRedirect(next)
|
||||
messages.success(request, _(u'Trash can item "%s" restored successfully.') % trash_can_item)
|
||||
return HttpResponseRedirect(reverse('trash_can_items', args=[trash_can_item.trash_can.pk]))
|
||||
|
||||
return render_to_response('generic_confirm.html', {
|
||||
'object': trash_can_item,
|
||||
'trash_can': trash_can_item.trash_can,
|
||||
'trash_can_item': trash_can_item,
|
||||
'navigation_object_list': [
|
||||
{'object': 'trash_can', 'name': _(u'trash can')},
|
||||
{'object': 'trash_can_item', 'name': _(u'trash can item')},
|
||||
],
|
||||
'title': _(u'Are you sure you wish to restore trash can item: %s?') % trash_can_item,
|
||||
'next': next,
|
||||
'previous': previous,
|
||||
'form_icon': 'bin_empty.png',
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def trash_can_item_delete(request, trash_can_item_pk):
|
||||
#Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE])
|
||||
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
|
||||
trash_can_item = get_object_or_404(TrashCanItem, pk=trash_can_item_pk)
|
||||
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
trash_can_item.purge()
|
||||
except Exception, exc:
|
||||
messages.warning(request, _(u'Error deleting trash can item; %s') % exc)
|
||||
return HttpResponseRedirect(previous)
|
||||
else:
|
||||
messages.success(request, _(u'Trash can item deleted successfully.') % trash_can_item)
|
||||
return HttpResponseRedirect(reverse('trash_can_items', args=[trash_can_item.trash_can.pk]))
|
||||
|
||||
return render_to_response('generic_confirm.html', {
|
||||
'trash_can': trash_can_item.trash_can,
|
||||
'trash_can_item': trash_can_item,
|
||||
'navigation_object_list': [
|
||||
{'object': 'trash_can', 'name': _(u'trash can')},
|
||||
{'object': 'trash_can_item', 'name': _(u'trash can item')},
|
||||
],
|
||||
'title': _(u'Are you sure you wish to delete trash can item: %s?') % trash_can_item,
|
||||
'previous': previous,
|
||||
'form_icon': 'delete.png',
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
Reference in New Issue
Block a user