Compare commits

..

No commits in common. "56df24baadfa1e6cbbb46dc64cf008255b1bfb4f" and "cd18efa40db07c79559db992dc593d0a4211749f" have entirely different histories.

6 changed files with 9 additions and 45 deletions

View file

@ -132,57 +132,21 @@ def run_scan():
prefix = get_prefix()
books = collect_books(prefix)
remove_missing(books)
ids = set()
added = 0
with db.session():
user = state.user()
for f in ox.sorted_strings(books):
if state.shutdown:
break
if os.path.exists(f):
id = media.get_id(f)
file = File.get(id)
if id in ids:
logger.debug('file exists in multiple locations %s', id)
if file:
f1 = file.fullpath()
f2 = os.path.join(prefix, f)
if f1 != f2 and os.path.exists(f1) and os.path.exists(f2):
logger.debug('"%s" vs "%s"', f1, f2)
else:
ids.add(id)
if not file:
file = add_file(id, f, prefix, f)
added += 1
elif user not in file.item.users:
item = file.item
item.add_user(user)
logger.debug('add %s to local user', id)
add_record('additem', item.id, file.info)
add_record('edititem', item.id, item.meta)
item.update()
added += 1
library_items = len(user.library.items)
if added:
trigger_event('change', {})
logger.debug('imported %s unknown books', added)
if len(ids) != len(books):
logger.debug('number of books %s vs number of ids %s', len(books), len(ids))
if library_items != len(books):
logger.debug('number of books %s vs number of items in library %s', len(books), library_items)
library_items = set([str(i) for i in user.library.items])
gone = library_items - ids
if gone:
logger.debug('cleaning up %s deleted records', len(gone))
for id in gone:
i = Item.get(id)
i.remove_file()
missing = ids - library_items
if missing:
logger.debug('%s items in library without a record', len(missing))
def change_path(old, new):
new_books = os.path.join(new, 'Books')

View file

@ -93,7 +93,7 @@ class Peer(object):
elif action == 'edititem':
itemid, meta = args
item = self.library.get(itemid, {})
if 'meta' not in item:
if not 'meta' in item:
item['meta'] = meta
else:
item['meta'].update(meta)
@ -111,7 +111,7 @@ class Peer(object):
name = args[0]
if len(args) > 1:
query = args[1]
if name not in self.info['lists']:
if not name in self.info['lists']:
self.info['lists'][name] = []
elif action == 'editlist':
name, new = args
@ -127,7 +127,7 @@ class Peer(object):
del self.info['lists'][name]
elif action == 'addlistitems':
name, ids = args
if name not in self.info['lists']:
if not name in self.info['lists']:
self.info['lists'][name] = []
self.info['lists'][name] = list(set(self.info['lists'][name]) | set(ids))
elif action == 'removelistitems':
@ -141,14 +141,14 @@ class Peer(object):
# fixme, just trigger peer update here
from user.models import User
peer = User.get_or_create(peerid)
if 'username' not in peer.info:
if not 'username' in peer.info:
peer.info['username'] = username
peer.update_name()
peer.save()
elif action == 'editpeer':
peerid, data = args
if len(peerid) == 16:
if peerid not in self.info['peers']:
if not peerid in self.info['peers']:
self.info['peers'][peerid] = {}
for key in ('username', 'contact'):
if key in data:

View file

@ -567,7 +567,7 @@ class Nodes(Thread):
node.join()
if self.local:
self.local.close()
return super().join(1)
return Thread.join(self)
def publish_node():
update_online()

View file

@ -21,7 +21,7 @@ class pdict(dict):
json.dump(self, fd, indent=4, sort_keys=True, ensure_ascii=False)
def get(self, key, default=None):
if default is None and self._defaults:
if default == None and self._defaults:
default = self._defaults.get(key)
return dict.get(self, key, default)