Added API-Support for Virtual Transactions
This commit is contained in:
parent
f97a501f1c
commit
5dc8770783
|
@ -9,6 +9,7 @@ from decorators import *
|
||||||
from collections import Iterable
|
from collections import Iterable
|
||||||
from decimal import Decimal, InvalidOperation
|
from decimal import Decimal, InvalidOperation
|
||||||
from helper import *
|
from helper import *
|
||||||
|
from django.db.models import Q
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
class BuyableItemHandler(BaseHandler):
|
class BuyableItemHandler(BaseHandler):
|
||||||
|
@ -221,7 +222,7 @@ class HistoryHandler(BaseHandler):
|
||||||
- num: Number of entries to return
|
- num: Number of entries to return
|
||||||
"""
|
"""
|
||||||
num = getInt(request.GET, 'num', 0)
|
num = getInt(request.GET, 'num', 0)
|
||||||
qset = Order.objects.filter(user=request.user)
|
qset = Order.objects.filter(user=request.user).order_by("-dateTime")
|
||||||
if num > 0:
|
if num > 0:
|
||||||
return qset[:num]
|
return qset[:num]
|
||||||
return qset
|
return qset
|
||||||
|
@ -248,7 +249,7 @@ class TransactionTransactHandler(BaseHandler):
|
||||||
if num < 0:
|
if num < 0:
|
||||||
return rc.BAD_REQUEST
|
return rc.BAD_REQUEST
|
||||||
|
|
||||||
userTrans = Transaction.objects.filter(user=request.user)
|
userTrans = Transaction.objects.filter(user=request.user).order_by("-dateTime")
|
||||||
if num > 0:
|
if num > 0:
|
||||||
return userTrans[:num]
|
return userTrans[:num]
|
||||||
return userTrans
|
return userTrans
|
||||||
|
@ -291,6 +292,62 @@ class TransactionTypeHandler(BaseHandler):
|
||||||
allowed_methods = ('GET',)
|
allowed_methods = ('GET',)
|
||||||
model = TransactionType
|
model = TransactionType
|
||||||
|
|
||||||
|
class TransactionVirtualHandler(BaseHandler):
|
||||||
|
""" Handler for :class:`Virtual Transaction <transaction.models.VirtualTransaction>`
|
||||||
|
Allows to make transactions between users. """
|
||||||
|
allowed_methods = ('GET', 'POST')
|
||||||
|
model = VirtualTransaction
|
||||||
|
fields = ('id', 'amount', 'dateTime', 'comment', ('user', ('id', 'username',)), ('recipient', ('id', 'username',)))
|
||||||
|
|
||||||
|
@manglePluginPerms
|
||||||
|
def read(self, request):
|
||||||
|
"""Return the user's last virtual transactions (inbound and outbound)
|
||||||
|
|
||||||
|
- num: Number of entries to return
|
||||||
|
"""
|
||||||
|
num = getInt(request.GET, 'num', 0)
|
||||||
|
if num < 0:
|
||||||
|
return rc.BAD_REQUEST
|
||||||
|
|
||||||
|
userTrans = VirtualTransaction.objects.filter(Q(user=request.user) | Q(recipient=request.user)).order_by("-dateTime")
|
||||||
|
if num > 0:
|
||||||
|
return userTrans[:num]
|
||||||
|
return userTrans
|
||||||
|
|
||||||
|
@manglePluginPerms
|
||||||
|
def create(self, request):
|
||||||
|
""" Transact money from the users to another users account.
|
||||||
|
|
||||||
|
- amount: [req] Amount to transact
|
||||||
|
- recipient: [req] User that will get the money
|
||||||
|
- comment: [req] Comment, why the money was transacted
|
||||||
|
"""
|
||||||
|
|
||||||
|
amount = getDecimal(request.data, 'amount', Decimal(0))
|
||||||
|
|
||||||
|
if amount < Decimal("0.01"):
|
||||||
|
ret = rc.BAD_REQUEST
|
||||||
|
ret.write("\nYou can't transact negatives amount to another users account.\n")
|
||||||
|
return ret
|
||||||
|
|
||||||
|
comment = request.data.get('comment', None)
|
||||||
|
if not comment:
|
||||||
|
ret = rc.BAD_REQUEST
|
||||||
|
ret.write("\nPlease supply a comment for the transaction\n")
|
||||||
|
return ret
|
||||||
|
|
||||||
|
recipientStr = request.data.get('recipient', None)
|
||||||
|
recipient = None
|
||||||
|
try:
|
||||||
|
recipient = User.objects.get(username=recipientStr)
|
||||||
|
except User.DoesNotExist:
|
||||||
|
ret = rc.BAD_REQUEST
|
||||||
|
ret.write("\nThe recipient user does not exist.\n")
|
||||||
|
return ret
|
||||||
|
trans = VirtualTransaction(user=request.user, recipient=recipient, amount=amount, comment=comment)
|
||||||
|
trans.save()
|
||||||
|
return rc.ALL_OK
|
||||||
|
|
||||||
class AccountBalanceHandler(BaseHandler):
|
class AccountBalanceHandler(BaseHandler):
|
||||||
"""Handler for the user's account balance"""
|
"""Handler for the user's account balance"""
|
||||||
allowed_methods = ('GET',)
|
allowed_methods = ('GET',)
|
||||||
|
|
|
@ -32,6 +32,7 @@ historyRes = CsrfExemptResource(handler=HistoryHandler, **ad)
|
||||||
|
|
||||||
transactionTransactRes = CsrfExemptResource(handler=TransactionTransactHandler, **ad)
|
transactionTransactRes = CsrfExemptResource(handler=TransactionTransactHandler, **ad)
|
||||||
transactionTypeRes = CsrfExemptResource(handler=TransactionTypeHandler, **ad)
|
transactionTypeRes = CsrfExemptResource(handler=TransactionTypeHandler, **ad)
|
||||||
|
transactionVirtualRes = CsrfExemptResource(handler=TransactionVirtualHandler, **ad)
|
||||||
accountBalanceRes = CsrfExemptResource(handler=AccountBalanceHandler, **ad)
|
accountBalanceRes = CsrfExemptResource(handler=AccountBalanceHandler, **ad)
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,6 +52,7 @@ urlpatterns = patterns('',
|
||||||
url(r'account/transfers/transfer/?$', transactionTransactRes),
|
url(r'account/transfers/transfer/?$', transactionTransactRes),
|
||||||
url(r'account/transactions/types/?$', transactionTypeRes),
|
url(r'account/transactions/types/?$', transactionTypeRes),
|
||||||
url(r'account/transfers/types/?$', transactionTypeRes),
|
url(r'account/transfers/types/?$', transactionTypeRes),
|
||||||
|
url(r'account/transactions/virtual/?$', transactionVirtualRes),
|
||||||
url(r'account/balance/?$', accountBalanceRes),
|
url(r'account/balance/?$', accountBalanceRes),
|
||||||
|
|
||||||
url(r'auth/blob/?$', authBlobRes),
|
url(r'auth/blob/?$', authBlobRes),
|
||||||
|
|
|
@ -126,6 +126,26 @@ to the handler or the responsible method for more documentation or code.
|
||||||
:class:`balance/ <api2.handlers.AccountBalanceHandler>`
|
:class:`balance/ <api2.handlers.AccountBalanceHandler>`
|
||||||
:func:`GET <api2.handlers.AccountBalanceHandler.read>`
|
:func:`GET <api2.handlers.AccountBalanceHandler.read>`
|
||||||
Get user's account balance
|
Get user's account balance
|
||||||
|
:class:`virtual/ <api2.handlers.TransactionVirtualHandler>`
|
||||||
|
:func:`GET <api2.handlers.TransactionVirtualHandler.read>`
|
||||||
|
Return the user's last virtual transactions (inbound and outbound)
|
||||||
|
|
||||||
|
========= =================
|
||||||
|
Parameter Description
|
||||||
|
========= =================
|
||||||
|
num Number of entries to return
|
||||||
|
========= =================
|
||||||
|
|
||||||
|
:func:`POST <api2.handlers.TransactionVirtualHandler.create>`
|
||||||
|
Transact money from the users to another users account.
|
||||||
|
|
||||||
|
========= =================
|
||||||
|
Parameter Description
|
||||||
|
========= =================
|
||||||
|
amount [required] Amount to transact
|
||||||
|
recipient [required] User that will get the money
|
||||||
|
comment [required] Comment, why the money was transacted
|
||||||
|
========= =================
|
||||||
|
|
||||||
**auth/**
|
**auth/**
|
||||||
:class:`blob/ <api2.handlers.AuthBlobHandler>`
|
:class:`blob/ <api2.handlers.AuthBlobHandler>`
|
||||||
|
|
Loading…
Reference in New Issue