Implement the item vault API

This commit is contained in:
Trever Fischer
2012-11-09 07:55:44 -05:00
parent a2895f400c
commit e3296b029a
11 changed files with 144 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ from datetime import datetime
from models import cachePlayerList
from events import server_queue, web_queue, chat, server_broadcast, send_web_event, QuitEvent, JoinEvent, PlayerDeathEvent
from bounty.models import Bounty
from vault.models import VaultSlot
class MOTDHandler(AnonymousBaseHandler):
allowed_methods = ('GET',)
@@ -156,3 +157,27 @@ class PollHandler(BaseHandler):
pollData['events'].append(eventData['event'])
event.delete()
return pollData
class VaultHandler(BaseHandler):
allowed_methods = ('PUT','GET')
def read(self, request, playername):
player = MinecraftProfile.objects.get(mc_username__exact=playername)
items = []
for slot in player.vault_slots.all():
items.append({'item': slot.item, 'quantity':
slot.quantity, 'damage': slot.damage, 'data': slot.data})
return {'items': items}
def update(self, request, playername):
player = MinecraftProfile.objects.get(mc_username__exact=playername)
vaultContents = json.loads(request.POST['contents'])['items']
stacks = player.vault_slots.all()
for stack in stacks:
stack.delete()
for item in vaultContents:
if item['item'] > 0:
VaultSlot.objects.create(player=player, item=item['item'],
quantity=item['quantity'], damage=item['damage'],
data=item['data'])
return {'success': True}

View File

@@ -47,6 +47,7 @@ urlpatterns = patterns('api',
url(r'^motd/(?P<username>.*)$', motdHandler),
url(r'^server/whoami$', ServerResource(handlers.ServerPingHandler)),
url(r'^server/events$', ServerResource(handlers.ServerEventHandler)),
url(r'^server/vault/(?P<playername>.*)$', ServerResource(handlers.VaultHandler)),
url(r'^server/economy/(?P<playername>.*)$', ServerResource(handlers.EconomyHandler)),
url(r'^server/session/(?P<playername>.*)/new$', ServerResource(handlers.NewPlayerSessionHandler)),
url(r'^server/session/(?P<playername>.*)/close$', ServerResource(handlers.ClosePlayerSessionHandler)),