From 6ce76dfa9c7fb9289a9e309cb60ef17ae9d657ab Mon Sep 17 00:00:00 2001 From: j Date: Fri, 12 Feb 2016 18:05:50 +0530 Subject: [PATCH] remove peers outside of horizon --- oml/library.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/oml/library.py b/oml/library.py index 387fd44..cc67150 100644 --- a/oml/library.py +++ b/oml/library.py @@ -324,6 +324,7 @@ def sync_db(): if commit: state.db.session.commit() cleanup_lists() + cleanup_peers() def cleanup_lists(): import item.models @@ -345,3 +346,22 @@ def cleanup_lists(): item.models.Item.remove_without_user() state.db.session.commit() + +def cleanup_peers(): + import user.models + other_peers = {} + peers = [u for u in user.models.User.query.filter_by(peered=True)] + peers.sort(key=lambda u: utils.user_sort_key(u.json())) + known_peers = set() + known_peers.add(settings.USER_ID) + for u in peers: + known_peers.add(u.id) + peer = utils.get_peer(u.id) + for id in peer.info.get('peers', {}): + if id not in other_peers: + other_peers[id] = peer.info['peers'][id] + known_peers.add(id) + for u in user.models.User.query.filter(user.models.User.id.notin_(list(known_peers))): + if not 'local' in u.info and not u.pending: + state.db.session.delete(u) + state.db.session.commit()