From 67e4d3e8d8f030790d1b64b3eee66c86c2cc4251 Mon Sep 17 00:00:00 2001 From: predatell Date: Wed, 5 Sep 2012 21:19:23 +0300 Subject: [PATCH 1/3] add new permissions for delete action --- src/ets/models.py | 3 +++ src/ets/templatetags/extra_tags.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ets/models.py b/src/ets/models.py index 70fbb028..b3a95f8f 100644 --- a/src/ets/models.py +++ b/src/ets/models.py @@ -1018,6 +1018,9 @@ def has_receive_permission(self, user): def has_dispatch_permission(self, user): return (not hasattr(user, 'person') or user.person.dispatch) and Waybill.dispatches(user).filter(pk=self.pk).exists() + + def has_delete_permission(self, user): + return user.pk == self.dispatcher_person.pk or user.compases.exists() class LoadingDetail(models.Model): diff --git a/src/ets/templatetags/extra_tags.py b/src/ets/templatetags/extra_tags.py index 91e8c9b5..8830a03f 100644 --- a/src/ets/templatetags/extra_tags.py +++ b/src/ets/templatetags/extra_tags.py @@ -85,7 +85,7 @@ def waybill_delete(waybill, user, text=_("Delete"), redirect_to=''): return { 'text': text, 'url': "%s?%s" % (reverse('waybill_delete', kwargs={'waybill_pk': waybill.pk}), urlencode({'redirect_to': redirect_to})), - 'success': waybill.has_dispatch_permission(user), + 'success': waybill.has_delete_permission(user), 'dialog_question': _("Are you sure you want to delete this waybill?"), } From 7b8ceb4e6dab253220153f38ecf349ea3c2c3187 Mon Sep 17 00:00:00 2001 From: predatell Date: Thu, 6 Sep 2012 10:02:13 +0300 Subject: [PATCH 2/3] transport date must be null --- src/ets/models.py | 3 ++- src/ets/views.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ets/models.py b/src/ets/models.py index b3a95f8f..60e292bd 100644 --- a/src/ets/models.py +++ b/src/ets/models.py @@ -1020,7 +1020,8 @@ def has_dispatch_permission(self, user): return (not hasattr(user, 'person') or user.person.dispatch) and Waybill.dispatches(user).filter(pk=self.pk).exists() def has_delete_permission(self, user): - return user.pk == self.dispatcher_person.pk or user.compases.exists() + return (user.pk == self.dispatcher_person.pk or user in self.order.warehouse.compas.officers.all()) \ + and not self.transport_dispach_signed_date class LoadingDetail(models.Model): diff --git a/src/ets/views.py b/src/ets/views.py index 833dff76..0d1096a4 100644 --- a/src/ets/views.py +++ b/src/ets/views.py @@ -210,7 +210,7 @@ def table_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering "%s/%s" % (item.sent_compas and "D" or "-", item.receipt_sent_compas and "R" or "-", ), fill_link(reverse('waybill_delete', kwargs={'waybill_pk': item.pk}) \ - if item.has_dispatch_permission(request.user) else '', + if item.has_delete_permission(request.user) else '', _("Delete"), "delete_waybill"), ]) From d66b612e91816cf2bcfba4b30572f7cab78add5c Mon Sep 17 00:00:00 2001 From: predatell Date: Thu, 6 Sep 2012 11:23:55 +0300 Subject: [PATCH 3/3] fix has_delete --- src/ets/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ets/models.py b/src/ets/models.py index 60e292bd..a9b99333 100644 --- a/src/ets/models.py +++ b/src/ets/models.py @@ -1020,7 +1020,7 @@ def has_dispatch_permission(self, user): return (not hasattr(user, 'person') or user.person.dispatch) and Waybill.dispatches(user).filter(pk=self.pk).exists() def has_delete_permission(self, user): - return (user.pk == self.dispatcher_person.pk or user in self.order.warehouse.compas.officers.all()) \ + return (user.pk == self.dispatcher_person.pk or self.order.warehouse.compas.officers.filter(pk=user.pk).exists()) \ and not self.transport_dispach_signed_date