diff --git a/oml/__main__.py b/oml/__main__.py index 795f3a1..9bb7491 100644 --- a/oml/__main__.py +++ b/oml/__main__.py @@ -29,7 +29,7 @@ import server if len(sys.argv) > 1 and sys.argv[1] == 'server': server.run() -elif len(sys.argv) > 1 and sys.argv[1] == 'ui': +if len(sys.argv) > 1 and sys.argv[1] == 'ui': import ui ui.main(sys.argv[2:]) else: diff --git a/oml/item/scan.py b/oml/item/scan.py index 79c5ead..4869ac9 100644 --- a/oml/item/scan.py +++ b/oml/item/scan.py @@ -188,8 +188,6 @@ def run_scan(): file.item.added = file.item.accessed file.item.save() library_items = len(user.library.items) - if state.shutdown: - return if added: trigger_event('change', {}) logger.debug('imported %s unknown books', added) diff --git a/oml/node/server.py b/oml/node/server.py index bc2e816..65451dc 100644 --- a/oml/node/server.py +++ b/oml/node/server.py @@ -317,6 +317,7 @@ class Handler(http.server.SimpleHTTPRequestHandler): self.send_header('Content-Length', str(content_length)) self.end_headers() self.wfile.write(content) + logger.debug('%s bytes response', content_length) def chunk_size(self, content_length): return min(16*1024, content_length) diff --git a/oml/nodes.py b/oml/nodes.py index 9dda107..42f1703 100644 --- a/oml/nodes.py +++ b/oml/nodes.py @@ -486,6 +486,9 @@ class Nodes(Thread): self._q = Queue() with db.session(): for u in user.models.User.query.filter_by(peered=True): + if 'local' in u.info: + del u.info['local'] + u.save() self.queue('add', u.id) get_peer(u.id) for u in user.models.User.query.filter_by(queued=True): @@ -504,7 +507,6 @@ class Nodes(Thread): while not state.shutdown: args = self._q.get() if args: - logger.debug('processing nodes queue: next: %s, %s entries in queue', args[0], self._q.qsize()) if args[0] == 'add': self._add(*args[1:]) elif args[0] == 'pull': @@ -513,8 +515,6 @@ class Nodes(Thread): self._call(*args) def queue(self, *args): - if args: - logger.debug('add %s to queue, queue currently has %s entries', args[0], self._q.qsize()) self._q.put(list(args)) def is_online(self, id): diff --git a/oml/settings.py b/oml/settings.py index 4ef0843..23b0f35 100644 --- a/oml/settings.py +++ b/oml/settings.py @@ -95,4 +95,4 @@ FULLTEXT_SUPPORT = fulltext.platform_supported() if not FULLTEXT_SUPPORT: config['itemKeys'] = [k for k in config['itemKeys'] if k['id'] != 'fulltext'] -DB_VERSION = 15 +DB_VERSION = 14 diff --git a/oml/state.py b/oml/state.py index cc1e804..606a22b 100644 --- a/oml/state.py +++ b/oml/state.py @@ -15,6 +15,7 @@ shutdown = False websockets = [] uisockets = [] peers = {} + changelog_size = None activity = {} diff --git a/oml/update.py b/oml/update.py index 07cddb4..8dab498 100644 --- a/oml/update.py +++ b/oml/update.py @@ -371,9 +371,7 @@ class Update(Thread): db_version = migrate_12() if db_version < 13: db_version = migrate_13() - if db_version < 15: - db_version = migrate_15() - settings.server['db_version'] = db_version + settings.server['db_version'] = settings.DB_VERSION def run(self): self.status('Checking for updates...') @@ -620,14 +618,10 @@ def migrate_13(): settings.server['revision'] = revision return 13 -def migrate_15(): - from user.models import List, User +def migrate_14(): + from user.models import List with db.session(): l = List.get(':Public') if l and not len(l.items): l.remove() - for u in User.query: - if 'local' in u.info: - del u.info['local'] - u.save() - return 15 + return 14 diff --git a/oml/user/models.py b/oml/user/models.py index 3d7284a..f90cf89 100644 --- a/oml/user/models.py +++ b/oml/user/models.py @@ -57,7 +57,8 @@ class User(db.Model): user = cls(id=id, peered=False, online=False) user.info = {} if state.nodes and state.nodes.local and id in state.nodes.local: - user.info['username'] = state.nodes.local[id]['username'] + user.info['local'] = state.nodes.local[id] + user.info['username'] = user.info['local']['username'] user.update_name() user.save() return user @@ -83,8 +84,6 @@ class User(db.Model): j = {} if self.info: j.update(self.info) - if state.nodes and self.id in state.nodes.local: - j['local'] = state.nodes.local[self.id].copy() j['id'] = self.id if self.pending: j['pending'] = self.pending @@ -604,15 +603,25 @@ def update_user_peering(user_id, peered, username=None): u.update_peering(peered, username) def remove_local_info(id): - if state.nodes: - trigger_event('status', { - 'id': id, - 'online': state.nodes.is_online(id) - }) + with db.session(): + u = User.get(id, for_update=True) + if u and 'local' in u.info: + del u.info['local'] + u.save() + u.trigger_status() def add_local_info(data): - if state.nodes: - state.nodes.queue('add', data['id']) + with db.session(): + u = User.get(data['id'], for_update=True) + if u: + if u.info['username'] != data['username']: + u.info['username'] = data['username'] + u.update_name() + u.info['local'] = data + u.save() + if state.nodes: + state.nodes.queue('add', u.id) + def upload(data): delay = 60 diff --git a/static/css/oml.css b/static/css/oml.css index aae24a4..33ae71b 100644 --- a/static/css/oml.css +++ b/static/css/oml.css @@ -1,5 +1,4 @@ .OMLQuote { - padding: 8px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: Georgia, Palatino, DejaVu Serif, Book Antiqua, Palatino Linotype, Times New Roman, serif; diff --git a/static/js/annotation.js b/static/js/annotation.js index ee77fc3..aeda34a 100644 --- a/static/js/annotation.js +++ b/static/js/annotation.js @@ -1,18 +1,16 @@ 'use strict'; oml.ui.annotation = function(annotation, $iframe) { - var $quote = Ox.Element() - .addClass('OxSelectable OMLQuote') - .append( - Ox.Element().html(Ox.encodeHTMLEntities(annotation.text).replace(/\n/g, '
')) - ).on({ - click: function(event) { - that.select() - $iframe.postMessage('selectAnnotation', { - id: annotation.id - }) - } + var $quote = Ox.Element().addClass('OxSelectable OMLQuote').css({ + padding: '8px' + }).html(Ox.encodeHTMLEntities(annotation.text).replace(/\n/g, '
')).on({ + click: function(event) { + that.select() + $iframe.postMessage('selectAnnotation', { + id: annotation.id }) + } + }) var notes = annotation.notes.length ? annotation.notes.map(function(note) { note.editable = !note.user return note diff --git a/static/js/utils.js b/static/js/utils.js index f4bb2b9..3ac249e 100644 --- a/static/js/utils.js +++ b/static/js/utils.js @@ -432,6 +432,7 @@ oml.enableDragAndDrop = function($list, canMove) { ) { var targets = drag.action == 'copy' ? drag.target.id : [oml.user.ui._list, drag.target.id]; + cleanup(250); oml.doHistory(drag.action, data.ids, targets, function() { Ox.Request.clearCache('find'); oml.api.find({ @@ -454,7 +455,6 @@ oml.enableDragAndDrop = function($list, canMove) { if (drag.action == 'move') { oml.$ui.list.updateElement(); } - cleanup(250); }); } else { cleanup() @@ -492,6 +492,7 @@ oml.enableDragAndDrop = function($list, canMove) { text = Ox._('You cannot move books
out of a smart list.'); } } else if (drag.target) { + console.log(drag.target) targetText = drag.target.type == 'libraries' ? Ox._('a library') : drag.target.type == 'library' ? drag.target.user == ''