You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.3 KiB
95 lines
2.3 KiB
from piston.handler import BaseHandler
|
|
from piston.utils import rc
|
|
from k4ever.buyable.models import *
|
|
from k4ever.transaction.models import *
|
|
from decorators import changeUserOnPlugin
|
|
|
|
class BuyableItemHandler(BaseHandler):
|
|
allowed_methods = ('GET', 'POST')
|
|
#fields = ('id', 'description')
|
|
model = Buyable
|
|
exclude = ('_*',)
|
|
|
|
def read(self, request, itemId=None):
|
|
if itemId == None:
|
|
if request.GET.has_key('type'):
|
|
obj = Buyable.objects.filter(buyableType__name=request.GET['type'])
|
|
else:
|
|
obj = Buyable.objects.all()
|
|
return obj
|
|
try:
|
|
return Buyable.objects.get(id=itemId)
|
|
except Buyable.DoesNotExist:
|
|
error = rc.NOT_FOUND
|
|
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
|
|
item = None
|
|
try:
|
|
item = Buyable.objects.get(id=itemId)
|
|
except Buyable.DoesNotExist:
|
|
return rc.NOT_FOUND
|
|
|
|
# parse post data
|
|
data = request.POST
|
|
deposit = self.getInt(data, 'deposit', 0)
|
|
amount = self.getInt(data, 'amount', 1)
|
|
if amount < 1:
|
|
return rc.BAD_REQUEST
|
|
if item.hasDeposit() and deposit > 0:
|
|
return rc.BAD_REQUEST # this is just the user being plain stupid
|
|
order = Order()
|
|
order.create(request.user)
|
|
order.save()
|
|
|
|
for i in range(amount):
|
|
p = Purchase.create(order, item, isDeposit=False)
|
|
p.save()
|
|
if deposit > 0:
|
|
p = Purchase.create(order, item, isDeposit=True)
|
|
p.save()
|
|
order.updatePrice(commit=True)
|
|
order.save()
|
|
|
|
return rc.ALL_OK
|
|
|
|
class BuyableTypeHandler(BaseHandler):
|
|
allowed_methods = ('GET',)
|
|
model = BuyableType
|
|
|
|
class TransactionTransactHandler(BaseHandler):
|
|
allowed_methods = ('GET', 'POST')
|
|
model = Transaction
|
|
|
|
class TransactionTypeHandler(BaseHandler):
|
|
allowed_methods = ('GET',)
|
|
model = TransactionType
|
|
|
|
class AccountBalance(BaseHandler):
|
|
allowed_methods = ('GET',)
|
|
def read(self, request):
|
|
pass
|
|
|
|
class AuthBlobHandler(BaseHandler):
|
|
# allowed_methods = ('GET', 'POST')
|
|
# model =
|
|
pass
|
|
|
|
class ConfigHandler(BaseHandler):
|
|
allowed_methods = ('GET',)
|
|
|
|
def read(self, request):
|
|
return {
|
|
'version': '0.1',
|
|
'mediaurl': 'http://devcat.someserver.de:13805/media',
|
|
}
|