Send multiple events to web polls and fix server events

This commit is contained in:
Trever Fischer
2012-11-18 09:20:04 -05:00
parent 018b360f61
commit 3dea38f51d

View File

@@ -5,7 +5,7 @@ from django.conf import settings
import appversion
from minecraft.models import MinecraftProfile
from local.models import Quote
from minecraft.models import MOTD, Server, PlayerSession
from minecraft.models import MOTD, Server, PlayerSession, Item
from django.db.models import F
from django.http import HttpResponse
from urllib2 import urlopen
@@ -160,10 +160,10 @@ class PollHandler(BaseHandler):
elif settings.CAMINUS_USE_BEANSTALKD:
eventQueue = web_queue(timestamp)
event = eventQueue.reserve(timeout=30)
if event:
eventData = json.loads(event.body)
pollData['events'].append(eventData['event'])
while event:
pollData['events'].append(json.loads(event.body))
event.delete()
event = eventQueue.reserve(timeout=0)
return pollData
class VaultHandler(BaseHandler):
@@ -173,9 +173,17 @@ class VaultHandler(BaseHandler):
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,
'position': slot.position})
data = {}
data['quantity'] = slot.quantity
data['position'] = slot.position
data['item'] = None
data['damage'] = 0
data['data'] = 0
if slot.item:
data['data'] = slot.item.data
data['item'] = slot.item.material
data['damage'] = slot.item.damage
items.append(data)
return {'items': items}
def update(self, request, playername):
@@ -186,18 +194,13 @@ class VaultHandler(BaseHandler):
updated = False
slot,created = VaultSlot.objects.get_or_create(player=player,
position=stack['position'])
if slot.item != stack['item']:
slot.item = stack['item']
item = Item.get(stack['item'], stack['damage'], stack['data'])
if slot.item != item:
slot.item = item
updated = True
if slot.quantity != stack['quantity']:
slot.quantity = stack['quantity']
updated = True
if slot.damage != stack['damage']:
slot.damage = stack['damage']
updated = True
if slot.data != stack['data']:
slot.data = stack['data']
updated = True
if updated:
slot.save()
return {'success': True}