Compare commits
No commits in common. "56df24baadfa1e6cbbb46dc64cf008255b1bfb4f" and "cd18efa40db07c79559db992dc593d0a4211749f" have entirely different histories.
56df24baad
...
cd18efa40d
6 changed files with 9 additions and 45 deletions
|
|
@ -116,7 +116,7 @@ def drop_columns(table, columns):
|
||||||
}
|
}
|
||||||
create_table = get_create_table(table)
|
create_table = get_create_table(table)
|
||||||
for column in columns:
|
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 = create_table.replace('\n', '').replace(',', ',\n')
|
||||||
create_table = re.sub('\n *', '\n ', create_table).replace('( ', '(\n ')
|
create_table = re.sub('\n *', '\n ', create_table).replace('( ', '(\n ')
|
||||||
sql = [
|
sql = [
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ from sqlalchemy.sql.expression import text
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func
|
||||||
|
|
||||||
from oxtornado import actions
|
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
|
from websocket import trigger_event
|
||||||
import meta
|
import meta
|
||||||
from . import models
|
from . import models
|
||||||
|
|
|
||||||
|
|
@ -132,57 +132,21 @@ def run_scan():
|
||||||
prefix = get_prefix()
|
prefix = get_prefix()
|
||||||
books = collect_books(prefix)
|
books = collect_books(prefix)
|
||||||
remove_missing(books)
|
remove_missing(books)
|
||||||
ids = set()
|
|
||||||
|
|
||||||
added = 0
|
added = 0
|
||||||
|
|
||||||
with db.session():
|
with db.session():
|
||||||
user = state.user()
|
|
||||||
for f in ox.sorted_strings(books):
|
for f in ox.sorted_strings(books):
|
||||||
if state.shutdown:
|
if state.shutdown:
|
||||||
break
|
break
|
||||||
if os.path.exists(f):
|
if os.path.exists(f):
|
||||||
id = media.get_id(f)
|
id = media.get_id(f)
|
||||||
file = File.get(id)
|
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:
|
if not file:
|
||||||
file = add_file(id, f, prefix, f)
|
file = add_file(id, f, prefix, f)
|
||||||
added += 1
|
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:
|
if added:
|
||||||
trigger_event('change', {})
|
trigger_event('change', {})
|
||||||
logger.debug('imported %s unknown books', added)
|
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):
|
def change_path(old, new):
|
||||||
new_books = os.path.join(new, 'Books')
|
new_books = os.path.join(new, 'Books')
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ class Peer(object):
|
||||||
elif action == 'edititem':
|
elif action == 'edititem':
|
||||||
itemid, meta = args
|
itemid, meta = args
|
||||||
item = self.library.get(itemid, {})
|
item = self.library.get(itemid, {})
|
||||||
if 'meta' not in item:
|
if not 'meta' in item:
|
||||||
item['meta'] = meta
|
item['meta'] = meta
|
||||||
else:
|
else:
|
||||||
item['meta'].update(meta)
|
item['meta'].update(meta)
|
||||||
|
|
@ -111,7 +111,7 @@ class Peer(object):
|
||||||
name = args[0]
|
name = args[0]
|
||||||
if len(args) > 1:
|
if len(args) > 1:
|
||||||
query = args[1]
|
query = args[1]
|
||||||
if name not in self.info['lists']:
|
if not name in self.info['lists']:
|
||||||
self.info['lists'][name] = []
|
self.info['lists'][name] = []
|
||||||
elif action == 'editlist':
|
elif action == 'editlist':
|
||||||
name, new = args
|
name, new = args
|
||||||
|
|
@ -127,7 +127,7 @@ class Peer(object):
|
||||||
del self.info['lists'][name]
|
del self.info['lists'][name]
|
||||||
elif action == 'addlistitems':
|
elif action == 'addlistitems':
|
||||||
name, ids = args
|
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] = []
|
||||||
self.info['lists'][name] = list(set(self.info['lists'][name]) | set(ids))
|
self.info['lists'][name] = list(set(self.info['lists'][name]) | set(ids))
|
||||||
elif action == 'removelistitems':
|
elif action == 'removelistitems':
|
||||||
|
|
@ -141,14 +141,14 @@ class Peer(object):
|
||||||
# fixme, just trigger peer update here
|
# fixme, just trigger peer update here
|
||||||
from user.models import User
|
from user.models import User
|
||||||
peer = User.get_or_create(peerid)
|
peer = User.get_or_create(peerid)
|
||||||
if 'username' not in peer.info:
|
if not 'username' in peer.info:
|
||||||
peer.info['username'] = username
|
peer.info['username'] = username
|
||||||
peer.update_name()
|
peer.update_name()
|
||||||
peer.save()
|
peer.save()
|
||||||
elif action == 'editpeer':
|
elif action == 'editpeer':
|
||||||
peerid, data = args
|
peerid, data = args
|
||||||
if len(peerid) == 16:
|
if len(peerid) == 16:
|
||||||
if peerid not in self.info['peers']:
|
if not peerid in self.info['peers']:
|
||||||
self.info['peers'][peerid] = {}
|
self.info['peers'][peerid] = {}
|
||||||
for key in ('username', 'contact'):
|
for key in ('username', 'contact'):
|
||||||
if key in data:
|
if key in data:
|
||||||
|
|
|
||||||
|
|
@ -567,7 +567,7 @@ class Nodes(Thread):
|
||||||
node.join()
|
node.join()
|
||||||
if self.local:
|
if self.local:
|
||||||
self.local.close()
|
self.local.close()
|
||||||
return super().join(1)
|
return Thread.join(self)
|
||||||
|
|
||||||
def publish_node():
|
def publish_node():
|
||||||
update_online()
|
update_online()
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class pdict(dict):
|
||||||
json.dump(self, fd, indent=4, sort_keys=True, ensure_ascii=False)
|
json.dump(self, fd, indent=4, sort_keys=True, ensure_ascii=False)
|
||||||
|
|
||||||
def get(self, key, default=None):
|
def get(self, key, default=None):
|
||||||
if default is None and self._defaults:
|
if default == None and self._defaults:
|
||||||
default = self._defaults.get(key)
|
default = self._defaults.get(key)
|
||||||
return dict.get(self, key, default)
|
return dict.get(self, key, default)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue