Send multiple events to web polls and fix server events
This commit is contained in:
@@ -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}
|
||||
|
Reference in New Issue
Block a user