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', }