''' takes { name string sortanme string } ''' response = {} person = Person.get(data['name']) person.sortname = unicodedata.normalize('NFKD', data['sortname']) person.save() response['name'] = person.name response['sortname'] = person.sortname return response actions.register(editName) def findNames(data): ''' takes { query { conditions [{}] operator string } keys [string] sort [{}] range [int, int] } ''' response = {}
query: string, } returns { items: [{ key: value }] } key is one of the supported identifiers: isbn, olid... ''' response = {} logger.debug('findMetadata %s', data) response['items'] = meta.find(data['query']) return response actions.register(findMetadata) def getMetadata(data): ''' takes { key: value includeEdits: boolean } key can be one of the supported identifiers: isbn, oclc, olid,... ''' logger.debug('getMetadata %s', data) if 'includeEdits' in data: include_edits = data.pop('includeEdits') else: include_edits = False
def selectFolder(data): ''' returns { path } ''' cmd = ['./ctl', 'ui', 'folder'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True) stdout, stderr = p.communicate() path = stdout.decode('utf-8').strip() return {'path': path} actions.register(selectFolder, cache=False) def selectFile(data): ''' returns { path } ''' cmd = ['./ctl', 'ui', 'file'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) stdout, stderr = p.communicate() path = stdout.decode('utf-8').strip() return {'path': path}
elif 'position' in data: ids = [i.id for i in q['qs'].options(load_only('id'))] response['position'] = utils.get_positions(ids, [data['qs'][0].id])[0] elif 'positions' in data: ids = [i.id for i in q['qs'].options(load_only('id'))] response['positions'] = utils.get_positions(ids, data['positions']) elif 'keys' in data: response['items'] = [ i.json(data['keys']) for i in q['qs'][q['range'][0]:q['range'][1]] ] else: size = [i.info.get('size', 0) for i in q['qs'].options(load_only('id', 'info'))] response['items'] = len(size) response['size'] = sum(size) return response actions.register(find) def get(data): ''' takes { id keys } ''' response = {} item = models.Item.get(data['id']) if item: response = item.json(data['keys'] if 'keys' in data else None) return response actions.register(get)
with open(settings.oml_config_path) as fd: config = json.load(fd) else: config = {} response['config'] = config response['user'] = deepcopy(config['user']) if settings.preferences: response['user']['preferences'] = settings.preferences response['user']['id'] = settings.USER_ID response['user']['online'] = state.online if settings.ui: response['user']['ui'] = settings.ui return response actions.register(init) def setPreferences(data): ''' takes { key: value, 'sub.key': value } ''' update_dict(settings.preferences, data) if 'username' in data: u = state.user() u.update_name() u.save() return settings.preferences
def editName(data): ''' takes { name string sortanme string } ''' response = {} person = Person.get(data['name']) person.sortname = unicodedata.normalize('NFKD', data['sortname']) person.save() response['name'] = person.name response['sortname'] = person.sortname return response actions.register(editName) def findNames(data): ''' takes { query { conditions [{}] operator string } keys [string] sort [{}] range [int, int] } ''' response = {} q = parse(data, Person)
new = stdout.strip()[:40] response['update'] = len(new) == 40 and current != new ''' response['update'] = False else: get_latest_release() if not os.path.exists(os.path.join(settings.updates_path, 'release.json')): return response if not os.path.exists(os.path.join(settings.config_path, 'release.json')): return response with open(os.path.join(settings.updates_path, 'release.json')) as fd: release = json.load(fd) current = current_version('openmedialibrary') response['current'] = current new = release['modules']['openmedialibrary']['version'] response['new'] = new response['update'] = current < new return response actions.register(getVersion, cache=False) def restart(data): ''' restart (and upgrade if upgrades are available) ''' if data.get('update'): download() subprocess.Popen([os.path.join(settings.base_dir, 'ctl'), 'restart'], close_fds=True, start_new_session=True) return {} actions.register(restart, cache=False)
response['positions'] = utils.get_positions(ids, data['positions']) elif 'keys' in data: response['items'] = [ i.json(data['keys']) for i in q['qs'][q['range'][0]:q['range'][1]] ] else: size = [ i.info.get('size', 0) for i in q['qs'].options(load_only('id', 'info')) ] response['items'] = len(size) response['size'] = sum(size) return response actions.register(find) def get(data): ''' takes { id keys } ''' response = {} item = models.Item.get(data['id']) if item: response = item.json(data['keys'] if 'keys' in data else None) return response
''' takes { query: string, } returns { items: [{ key: value }] } key is one of the supported identifiers: isbn, olid... ''' response = {} logger.debug('findMetadata %s', data) response['items'] = meta.find(data['query']) return response actions.register(findMetadata) def getMetadata(data): ''' takes { key: value includeEdits: boolean } key can be one of the supported identifiers: isbn, oclc, olid,... ''' logger.debug('getMetadata %s', data) if 'includeEdits' in data: include_edits = data.pop('includeEdits') else: include_edits = False key, value = next(iter(data.items()))
''' takes { id string sortname string } ''' response = {} ''' item = models.Item.get(data['id']) item.sortname = unicodedata.normalize('NFKD', data['sortname']) item.save() response['name'] = item.name response['sortname'] = item.sortname ''' return response actions.register(editTitle) def findTitles(data): ''' takes { query { conditions [{}] operator string } keys [string] sort [{}] range [int, int] } ''' response = {} #q = query.parse(data)
id string sortname string } ''' response = {} ''' item = models.Item.get(data['id']) item.sortname = unicodedata.normalize('NFKD', data['sortname']) item.save() response['name'] = item.name response['sortname'] = item.sortname ''' return response actions.register(editTitle) def findTitles(data): ''' takes { query { conditions [{}] operator string } keys [string] sort [{}] range [int, int] } ''' response = {}
def selectFolder(data): ''' returns { path } ''' cmd = ['./ctl', 'ui', 'folder'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True) stdout, stderr = p.communicate() path = stdout.decode('utf-8').strip() return { 'path': path } actions.register(selectFolder, cache=False) def selectFile(data): ''' returns { path } ''' cmd = ['./ctl', 'ui', 'file'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) stdout, stderr = p.communicate() path = stdout.decode('utf-8').strip() return { 'path': path }
with open(settings.oml_config_path) as fd: config = json.load(fd) else: config = {} response["config"] = config response["user"] = deepcopy(config["user"]) if settings.preferences: response["user"]["preferences"] = settings.preferences response["user"]["id"] = settings.USER_ID response["user"]["online"] = state.online if settings.ui: response["user"]["ui"] = settings.ui return response actions.register(init) def setPreferences(data): """ takes { key: value, 'sub.key': value } """ update_dict(settings.preferences, data) if "username" in data: u = state.user() u.update_name() u.save() return settings.preferences