Compare commits
5 commits
cd18efa40d
...
56df24baad
| Author | SHA1 | Date | |
|---|---|---|---|
| 56df24baad | |||
| 7a000bf199 | |||
| 07300f83f3 | |||
| 0169f5bf57 | |||
| dcc5e859a5 |
6 changed files with 45 additions and 9 deletions
|
|
@ -116,7 +116,7 @@ def drop_columns(table, columns):
|
|||
}
|
||||
create_table = get_create_table(table)
|
||||
for column in columns:
|
||||
create_table = re.sub('(%s .*?,)'%column, '', create_table)
|
||||
create_table = re.sub('(%s .*?,)' % column, '', create_table)
|
||||
create_table = create_table.replace('\n', '').replace(',', ',\n')
|
||||
create_table = re.sub('\n *', '\n ', create_table).replace('( ', '(\n ')
|
||||
sql = [
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from sqlalchemy.sql.expression import text
|
|||
from sqlalchemy import func
|
||||
|
||||
from oxtornado import actions
|
||||
import utils #utils must be imported before websocket to avoid loop
|
||||
import utils # utils must be imported before websocket to avoid loop
|
||||
from websocket import trigger_event
|
||||
import meta
|
||||
from . import models
|
||||
|
|
|
|||
|
|
@ -132,21 +132,57 @@ 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')
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ class Peer(object):
|
|||
elif action == 'edititem':
|
||||
itemid, meta = args
|
||||
item = self.library.get(itemid, {})
|
||||
if not 'meta' in item:
|
||||
if 'meta' not 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 not name in self.info['lists']:
|
||||
if name not 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 not name in self.info['lists']:
|
||||
if name not 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 not 'username' in peer.info:
|
||||
if 'username' not in peer.info:
|
||||
peer.info['username'] = username
|
||||
peer.update_name()
|
||||
peer.save()
|
||||
elif action == 'editpeer':
|
||||
peerid, data = args
|
||||
if len(peerid) == 16:
|
||||
if not peerid in self.info['peers']:
|
||||
if peerid not in self.info['peers']:
|
||||
self.info['peers'][peerid] = {}
|
||||
for key in ('username', 'contact'):
|
||||
if key in data:
|
||||
|
|
|
|||
|
|
@ -567,7 +567,7 @@ class Nodes(Thread):
|
|||
node.join()
|
||||
if self.local:
|
||||
self.local.close()
|
||||
return Thread.join(self)
|
||||
return super().join(1)
|
||||
|
||||
def publish_node():
|
||||
update_online()
|
||||
|
|
|
|||
|
|
@ -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 == None and self._defaults:
|
||||
if default is None and self._defaults:
|
||||
default = self._defaults.get(key)
|
||||
return dict.get(self, key, default)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue