Ejemplo n.º 1
0
    '''
        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 = {}
Ejemplo n.º 2
0
            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
Ejemplo n.º 3
0

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}

Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
        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
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
        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)
Ejemplo n.º 8
0
        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
Ejemplo n.º 9
0
    '''
        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()))
Ejemplo n.º 10
0
    '''
        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)
Ejemplo n.º 11
0
            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 = {}
Ejemplo n.º 12
0

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
    }
Ejemplo n.º 13
0
        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