|
|
|
@ -3,6 +3,21 @@ from piston.utils import rc
|
|
|
|
|
from k4ever.buyable.models import *
|
|
|
|
|
from k4ever.transaction.models import *
|
|
|
|
|
from decorators import changeUserOnPlugin
|
|
|
|
|
from decimal import Decimal, InvalidOperation
|
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getInt(d, key, default):
|
|
|
|
|
try:
|
|
|
|
|
return int(d.get(key, default))
|
|
|
|
|
except ValueError:
|
|
|
|
|
return default
|
|
|
|
|
|
|
|
|
|
def getDecimal(d, key, default):
|
|
|
|
|
try:
|
|
|
|
|
return Decimal(d.get(key, default))
|
|
|
|
|
except InvalidOperation:
|
|
|
|
|
return default
|
|
|
|
|
|
|
|
|
|
class BuyableItemHandler(BaseHandler):
|
|
|
|
|
allowed_methods = ('GET', 'POST')
|
|
|
|
@ -24,12 +39,6 @@ class BuyableItemHandler(BaseHandler):
|
|
|
|
|
error.write("This buyable does not exist in our database")
|
|
|
|
|
return error
|
|
|
|
|
|
|
|
|
|
def getInt(self, d, key, default):
|
|
|
|
|
try:
|
|
|
|
|
return int(d.get(key, default))
|
|
|
|
|
except ValueError:
|
|
|
|
|
return default
|
|
|
|
|
|
|
|
|
|
def create(self, request, itemId=None):
|
|
|
|
|
if not itemId:
|
|
|
|
|
return rc.BAD_REQUEST
|
|
|
|
@ -41,8 +50,8 @@ class BuyableItemHandler(BaseHandler):
|
|
|
|
|
|
|
|
|
|
# parse post data
|
|
|
|
|
data = request.POST
|
|
|
|
|
deposit = self.getInt(data, 'deposit', 0)
|
|
|
|
|
amount = self.getInt(data, 'amount', 1)
|
|
|
|
|
deposit = getInt(data, 'deposit', 0)
|
|
|
|
|
amount = getInt(data, 'amount', 1)
|
|
|
|
|
if amount < 1:
|
|
|
|
|
return rc.BAD_REQUEST
|
|
|
|
|
if item.hasDeposit() and deposit > 0:
|
|
|
|
@ -59,7 +68,7 @@ class BuyableItemHandler(BaseHandler):
|
|
|
|
|
p.save()
|
|
|
|
|
order.updatePrice(commit=True)
|
|
|
|
|
order.save()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return rc.ALL_OK
|
|
|
|
|
|
|
|
|
|
class BuyableTypeHandler(BaseHandler):
|
|
|
|
@ -69,12 +78,47 @@ class BuyableTypeHandler(BaseHandler):
|
|
|
|
|
class TransactionTransactHandler(BaseHandler):
|
|
|
|
|
allowed_methods = ('GET', 'POST')
|
|
|
|
|
model = Transaction
|
|
|
|
|
fields = ('amount', 'dateTime', 'checked', ('transactionType', ('id', 'name')))
|
|
|
|
|
|
|
|
|
|
def read(self, request):
|
|
|
|
|
num = getInt(request.GET, 'num', 0)
|
|
|
|
|
if num < 0:
|
|
|
|
|
return rc.BAD_REQUEST
|
|
|
|
|
|
|
|
|
|
userTrans = Transaction.objects.filter(user=request.user)
|
|
|
|
|
if num > 0:
|
|
|
|
|
return userTrans[:num]
|
|
|
|
|
return userTrans
|
|
|
|
|
|
|
|
|
|
def create(self, request):
|
|
|
|
|
amount = getDecimal(request.POST, 'amount', Decimal(0))
|
|
|
|
|
tTypeId = getInt(request.POST, 'type', -1)
|
|
|
|
|
|
|
|
|
|
if amount <= 0:
|
|
|
|
|
ret = rc.BAD_REQUEST
|
|
|
|
|
rc.write("\nA negative amount is not supported right now (there has not been put enough thought into the 'lending money' process\n")
|
|
|
|
|
return ret
|
|
|
|
|
tType = None
|
|
|
|
|
try:
|
|
|
|
|
tType = TransactionType.objects.get(id=tTypeId)
|
|
|
|
|
except TransactionType.DoesNotExist:
|
|
|
|
|
ret = rc.BAD_REQUEST
|
|
|
|
|
ret.write("\nYour TransactionType could not be found\n")
|
|
|
|
|
return ret
|
|
|
|
|
trans = Transaction()
|
|
|
|
|
trans.user = request.user
|
|
|
|
|
trans.transactionType = tType
|
|
|
|
|
trans.dateTime = datetime.datetime.now()
|
|
|
|
|
trans.amount = amount
|
|
|
|
|
|
|
|
|
|
trans.save()
|
|
|
|
|
return rc.ALL_OK
|
|
|
|
|
|
|
|
|
|
class TransactionTypeHandler(BaseHandler):
|
|
|
|
|
allowed_methods = ('GET',)
|
|
|
|
|
model = TransactionType
|
|
|
|
|
|
|
|
|
|
class AccountBalance(BaseHandler):
|
|
|
|
|
class AccountBalanceHandler(BaseHandler):
|
|
|
|
|
allowed_methods = ('GET',)
|
|
|
|
|
def read(self, request):
|
|
|
|
|
pass
|
|
|
|
|