Browse Source

Credit change is now atomic

master
Niklas Brachmann 10 years ago
parent
commit
1be8333eb6
  1. 13
      cash/models.py

13
cash/models.py

@ -1,4 +1,3 @@ @@ -1,4 +1,3 @@
from django.conf import settings
from django.db import models
from django.core.files import File
@ -9,6 +8,7 @@ from django.dispatch import receiver @@ -9,6 +8,7 @@ from django.dispatch import receiver
from django_auth_ldap.backend import populate_user
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext_noop
from django.db import transaction
import PIL
import StringIO
@ -43,13 +43,16 @@ class Account(models.Model): @@ -43,13 +43,16 @@ class Account(models.Model):
instance.ldap_user.attrs['employeenumber'][0]
instance.account.save()
@transaction.atomic
def change_credit(self, amount, subject, desc):
self.credit += amount
# For atomicity fetch current value first
cur = Account.objects.filter(pk=self.pk)[0]
self.credit = cur.credit + amount
self.save()
transaction = Transaction(account=self, subject=subject,
amount=amount, description=desc)
transaction.save()
trans = Transaction(account=self, subject=subject,
amount=amount, description=desc)
trans.save()
def buy_products(self, products):
# TODO place it somewhere else

Loading…
Cancel
Save