Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

empêcher un utilisateur de supprimer une transaction rétablie #43

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions bars_transactions/migrations/0004_transaction_uncanceled.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('bars_transactions', '0003_transaction_moneyflow'),
]

operations = [
migrations.AddField(
model_name='transaction',
name='uncanceled',
field=models.BooleanField(default=False),
),
]
1 change: 1 addition & 0 deletions bars_transactions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class Meta:
type = models.CharField(max_length=25)
timestamp = models.DateTimeField(auto_now_add=True)
canceled = models.BooleanField(default=False)
uncanceled = models.BooleanField(default=False)
last_modified = models.DateTimeField(auto_now=True)
_type = VirtualField("Transaction")
moneyflow = models.FloatField(default=0)
Expand Down
2 changes: 2 additions & 0 deletions bars_transactions/tests/test_transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ def setUpTestData(self):

def setUp(self):
self.transaction.canceled = False
self.transaction.uncanceled = False
self.transaction.save()
Role.objects.get_or_create(user=self.user, bar=self.bar, name='customer')
self.user = reload(self.user)
Expand All @@ -69,6 +70,7 @@ def test_cancel_transaction(self):

def test_restore_transaction(self):
self.transaction.canceled = True
self.transaction.uncanceled = True
self.transaction.save()
self.client.force_authenticate(user=self.user)

Expand Down
3 changes: 2 additions & 1 deletion bars_transactions/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def cancel(self, request, pk=None):
except Transaction.DoesNotExist:
raise Http404()

if request.user.has_perm('bars_transactions.change_transaction', transaction):
if request.user.has_perm('bars_transactions.change_transaction', transaction) and (not transaction.uncanceled):
transaction.canceled = True
transaction.save()

Expand All @@ -100,6 +100,7 @@ def restore(self, request, pk=None):

if request.user.has_perm('bars_transactions.change_transaction', transaction):
transaction.canceled = False
transaction.uncanceled = True
transaction.save()

for aop in transaction.accountoperation_set.all():
Expand Down