Compare commits
No commits in common. "9344b84d86e9eebd1e65bc0191aff57d786cd2c4" and "02c61c63500930eda78dbf7215c79d422ce35aa8" have entirely different histories.
9344b84d86
...
02c61c6350
6 changed files with 34 additions and 29 deletions
|
|
@ -44,11 +44,6 @@ class Peer(object):
|
||||||
self.info['peers'] = {}
|
self.info['peers'] = {}
|
||||||
if 'lists' not in self.info:
|
if 'lists' not in self.info:
|
||||||
self.info['lists'] = {}
|
self.info['lists'] = {}
|
||||||
for name in self.info['lists']:
|
|
||||||
if 'listorder' not in self.info:
|
|
||||||
self.info['listorder'] = []
|
|
||||||
if name not in self.info['listorder']:
|
|
||||||
self.info['listorder'].append(name)
|
|
||||||
|
|
||||||
def apply_log(self):
|
def apply_log(self):
|
||||||
changes = []
|
changes = []
|
||||||
|
|
@ -118,10 +113,6 @@ class Peer(object):
|
||||||
query = args[1]
|
query = args[1]
|
||||||
if name not in self.info['lists']:
|
if name not in self.info['lists']:
|
||||||
self.info['lists'][name] = []
|
self.info['lists'][name] = []
|
||||||
if 'listorder' not in self.info:
|
|
||||||
self.info['listorder'] = []
|
|
||||||
if name not in self.info['listorder']:
|
|
||||||
self.info['listorder'].append(name)
|
|
||||||
elif action == 'editlist':
|
elif action == 'editlist':
|
||||||
name, new = args
|
name, new = args
|
||||||
if name in self.info['lists']:
|
if name in self.info['lists']:
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ def api_upload(user_id, items):
|
||||||
if peer:
|
if peer:
|
||||||
l = List.get_or_create(':Public')
|
l = List.get_or_create(':Public')
|
||||||
if l:
|
if l:
|
||||||
logger.debug('%s added items to public folder: %s', user_id, items)
|
|
||||||
l.add_items(items)
|
l.add_items(items)
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -462,7 +462,6 @@ class Node(Thread):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def upload(self, items):
|
def upload(self, items):
|
||||||
logger.debug('add items to %s\'s public folder: %s', self.id, items)
|
|
||||||
r = self.request('upload', items)
|
r = self.request('upload', items)
|
||||||
return bool(r)
|
return bool(r)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,16 +107,33 @@ class Parser(object):
|
||||||
vk = getattr(self._sort, k)
|
vk = getattr(self._sort, k)
|
||||||
q = operators.eq(vk, v)
|
q = operators.eq(vk, v)
|
||||||
ids = self._model.query.join(self._sort).filter(q).options(load_only('id'))
|
ids = self._model.query.join(self._sort).filter(q).options(load_only('id'))
|
||||||
return self.in_ids(ids, exclude)
|
if not ids:
|
||||||
|
q = operators.eq(self._model.id, '')
|
||||||
|
if exclude:
|
||||||
|
q = ~q
|
||||||
|
else:
|
||||||
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
return q
|
||||||
elif k == 'id':
|
elif k == 'id':
|
||||||
if op == '&':
|
if op == '&':
|
||||||
ids = v
|
ids = v
|
||||||
else:
|
else:
|
||||||
ids = [v]
|
ids = [v]
|
||||||
return self.in_ids(ids, exclude)
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
return q
|
||||||
elif k == 'fulltext':
|
elif k == 'fulltext':
|
||||||
ids = find_fulltext(v)
|
ids = find_fulltext(v)
|
||||||
return self.in_ids(ids, exclude)
|
if ids:
|
||||||
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
else:
|
||||||
|
# nothing
|
||||||
|
q = operators.eq(self._model.id, -1)
|
||||||
|
if exclude:
|
||||||
|
q = ~q
|
||||||
|
return q
|
||||||
|
|
||||||
elif key_type in ("string", "text"):
|
elif key_type in ("string", "text"):
|
||||||
if isinstance(v, str):
|
if isinstance(v, str):
|
||||||
|
|
@ -125,7 +142,9 @@ class Parser(object):
|
||||||
if k != '*':
|
if k != '*':
|
||||||
q &= (self._find.key == k)
|
q &= (self._find.key == k)
|
||||||
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
||||||
return self.in_ids(ids, exclude)
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
return q
|
||||||
elif k == 'list':
|
elif k == 'list':
|
||||||
nickname, name = v.split(':', 1)
|
nickname, name = v.split(':', 1)
|
||||||
if nickname:
|
if nickname:
|
||||||
|
|
@ -156,7 +175,9 @@ class Parser(object):
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
ids = l.get_items().options(load_only('id'))
|
ids = l.get_items().options(load_only('id'))
|
||||||
return self.in_ids(ids, exclude)
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
return q
|
||||||
elif key_type == 'date':
|
elif key_type == 'date':
|
||||||
def parse_date(d):
|
def parse_date(d):
|
||||||
while len(d) < 3:
|
while len(d) < 3:
|
||||||
|
|
@ -167,18 +188,12 @@ class Parser(object):
|
||||||
vk = getattr(self._sort, k)
|
vk = getattr(self._sort, k)
|
||||||
q = get_operator(op, 'int')(vk, v)
|
q = get_operator(op, 'int')(vk, v)
|
||||||
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
||||||
return self.in_ids(ids, exclude)
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
|
q = in_op(self._model.id, ids)
|
||||||
|
return q
|
||||||
else: #integer, float, time
|
else: #integer, float, time
|
||||||
q = get_operator(op, 'int')(getattr(self._sort, k), v)
|
q = get_operator(op, 'int')(getattr(self._sort, k), v)
|
||||||
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
ids = self._model.query.join(self._find).filter(q).options(load_only('id'))
|
||||||
return self.in_ids(ids, exclude)
|
|
||||||
|
|
||||||
def in_ids(self, ids, exclude):
|
|
||||||
if isinstance(ids, list) and not ids:
|
|
||||||
q = operators.eq(self._model.id, '')
|
|
||||||
if exclude:
|
|
||||||
q = ~q
|
|
||||||
else:
|
|
||||||
in_op = operators.notin_op if exclude else operators.in_op
|
in_op = operators.notin_op if exclude else operators.in_op
|
||||||
q = in_op(self._model.id, ids)
|
q = in_op(self._model.id, ids)
|
||||||
return q
|
return q
|
||||||
|
|
|
||||||
|
|
@ -97,8 +97,6 @@ def setPreferences(data):
|
||||||
u.save()
|
u.save()
|
||||||
if change_username:
|
if change_username:
|
||||||
add_record('editusername', data['username'])
|
add_record('editusername', data['username'])
|
||||||
if state.nodes and state.nodes.local:
|
|
||||||
state.nodes.local._update_if_ip_changed()
|
|
||||||
if change_contact:
|
if change_contact:
|
||||||
add_record('editcontact', data['contact'])
|
add_record('editcontact', data['contact'])
|
||||||
if change_path:
|
if change_path:
|
||||||
|
|
|
||||||
|
|
@ -154,12 +154,15 @@ class User(db.Model):
|
||||||
if username:
|
if username:
|
||||||
self.info['username'] = username
|
self.info['username'] = username
|
||||||
self.update_name()
|
self.update_name()
|
||||||
|
# FIXME: need to set peered to False to not trigger changelog event
|
||||||
|
# before other side receives acceptPeering request
|
||||||
|
self.peered = False
|
||||||
|
self.save()
|
||||||
if not was_peering:
|
if not was_peering:
|
||||||
add_record('addpeer', self.id, self.nickname)
|
add_record('addpeer', self.id, self.nickname)
|
||||||
if 'index' not in self.info:
|
if 'index' not in self.info:
|
||||||
self.info['index'] = max([
|
self.info['index'] = max([
|
||||||
u.info.get('index', -1) for u in User.query.filter_by(peered=True)
|
u.info.get('index', -1) for u in User.query.filter_by(peered=True)
|
||||||
if u.id != self.id
|
|
||||||
] + [0]) + 1
|
] + [0]) + 1
|
||||||
self.peered = True
|
self.peered = True
|
||||||
self.save()
|
self.save()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue