queue peering requests and send again

This commit is contained in:
j 2014-05-18 05:01:24 +02:00
commit e4ca454c41
11 changed files with 157 additions and 97 deletions

View file

@ -191,9 +191,13 @@ def requestPeering(request):
if len(data.get('id', '')) != 43:
logger.debug('invalid user id')
return {}
p = models.User.get_or_create(data['id'])
state.nodes.queue('add', p.id)
state.nodes.queue(p.id, 'requestPeering', data.get('message', ''))
u = models.User.get_or_create(data['id'])
u.pending = 'sent'
u.queued = True
u.info['message'] = data.get('message', '')
u.save()
state.nodes.queue('add', u.id)
state.nodes.queue(u.id, 'peering', 'requestPeering')
return {}
actions.register(requestPeering, cache=False)
@ -204,9 +208,11 @@ def acceptPeering(request):
logger.debug('invalid user id')
return {}
logger.debug('acceptPeering... %s', data)
p = models.User.get_or_create(data['id'])
state.nodes.queue('add', p.id)
state.nodes.queue(p.id, 'acceptPeering', data.get('message', ''))
u = models.User.get_or_create(data['id'])
u.info['message'] = data.get('message', '')
u.update_peering(True)
state.nodes.queue('add', u.id)
state.nodes.queue(u.id, 'peering', 'acceptPeering')
return {}
actions.register(acceptPeering, cache=False)
@ -216,9 +222,11 @@ def rejectPeering(request):
if len(data.get('id', '')) != 43:
logger.debug('invalid user id')
return {}
p = models.User.get_or_create(data['id'])
state.nodes.queue('add', p.id)
state.nodes.queue(p.id, 'rejectPeering', data.get('message', ''))
u = models.User.get_or_create(data['id'])
u.info['message'] = data.get('message', '')
u.update_peering(False)
state.nodes.queue('add', u.id)
state.nodes.queue(u.id, 'peering', 'rejectPeering')
return {}
actions.register(rejectPeering, cache=False)
@ -229,8 +237,10 @@ def removePeering(request):
logger.debug('invalid user id')
return {}
u = models.User.get_or_create(data['id'])
u.info['message'] = data.get('message', '')
u.update_peering(False)
state.nodes.queue('add', u.id)
state.nodes.queue(u.id, 'removePeering', data.get('message', ''))
state.nodes.queue(u.id, 'peering', 'removePeering')
return {}
actions.register(removePeering, cache=False)
@ -240,9 +250,11 @@ def cancelPeering(request):
if len(data.get('id', '')) != 43:
logger.debug('invalid user id')
return {}
p = models.User.get_or_create(data['id'])
state.nodes.queue('add', p.id)
state.nodes.queue(p.id, 'cancelPeering', data.get('message', ''))
u = models.User.get_or_create(data['id'])
u.info['message'] = data.get('message', '')
u.update_peering(False)
state.nodes.queue('add', u.id)
state.nodes.queue(u.id, 'peering', 'cancelPeering')
return {}
actions.register(cancelPeering, cache=False)

View file

@ -26,6 +26,7 @@ class User(db.Model):
nickname = db.Column(db.String(256))
pending = db.Column(db.String(64)) # sent|received
queued = db.Column(db.Boolean())
peered = db.Column(db.Boolean())
online = db.Column(db.Boolean())
@ -69,6 +70,7 @@ class User(db.Model):
def update_peering(self, peered, username=None):
was_peering = self.peered
self.queued = True
if peered:
self.pending = ''
if username:
@ -175,16 +177,18 @@ class List(db.Model):
from item.models import Item
for item_id in items:
i = Item.get(item_id)
self.items.append(i)
if self.user_id == settings.USER_ID:
i.queue_download()
i.update()
if i:
self.items.append(i)
if self.user_id == settings.USER_ID:
i.queue_download()
i.update()
db.session.add(self)
db.session.commit()
for item_id in items:
i = Item.get(item_id)
i.update_lists()
db.session.add(i)
if i:
i.update_lists()
db.session.add(i)
db.session.commit()
if self.user_id == settings.USER_ID:
Changelog.record(self.user, 'addlistitems', self.name, items)