Beispiel #1
0
def category(label):
    ''' list of entries for a label
    :param label: the type of data to list out
    :return: rendered list page
    '''
    label = helpers.sanitize(label)
    if not graph.validate_label(label):
        labels = graph.get_labels()
        return render_template(request.url, '404.html', labels=labels)

    filtered = None
    try:
        item1 = helpers.sanitize(request.values['i'])
    except KeyError:
        data = graph.get_all(label)
    else:
        try:
            item2 = helpers.sanitize(request.values['j'])
            operator = helpers.sanitize(request.values['op'])
            if operator not in ['and', 'not']:
                raise BadRequestKeyError
        except (KeyError, BadRequestKeyError):
            data = graph.get_filtered(label, item1)
            filtered = {
                'item1': graph.get_node(item1)['nodes'][0],
            }
        else:
            data = graph.get_filtered(label, item1, item2, operator)
            filtered = {
                'operator': operator,
                'item1': graph.get_node(item1)['nodes'][0],
                'item2': graph.get_node(item2)['nodes'][0]
            }

    items = data['nodes']

    template = 'list.html'
    title = 'List of %s' % helpers.capitalize_filter(helpers.pluralize(label))

    grimoires = []
    if label in entities:
        template = 'entity-list.html'
        grimoires = graph.get_all('grimoire',
                                  with_connection_label=label)['nodes']
        if len(grimoires) < 2:
            grimoires = None

    return render_template(request.url,
                           template,
                           items=items,
                           title=title,
                           label=label,
                           grimoires=grimoires,
                           filtered=filtered)
Beispiel #2
0
def category(label):
    ''' list of entries for a label
    :param label: the type of data to list out
    :return: rendered list page
    '''
    label = helpers.sanitize(label)
    if not graph.validate_label(label):
        labels = graph.get_labels()
        return render_template(request.url, 'label-404.html', labels=labels)

    filtered = None
    try:
        item1 = helpers.sanitize(request.values['i'])
    except KeyError:
        data = graph.get_all(label)
    else:
        try:
            item2 = helpers.sanitize(request.values['j'])
            operator = helpers.sanitize(request.values['op'])
            if operator not in ['and', 'not']:
                raise BadRequestKeyError
        except (KeyError, BadRequestKeyError):
            data = graph.get_filtered(label, item1)
            filtered = {
                'item1': graph.get_node(item1)['nodes'][0],
            }
        else:
            data = graph.get_filtered(label, item1, item2, operator)
            filtered = {
                'operator': operator,
                'item1': graph.get_node(item1)['nodes'][0],
                'item2': graph.get_node(item2)['nodes'][0]
            }

    items = data['nodes']

    template = 'list.html'
    title = 'List of %s' % helpers.capitalize_filter(helpers.pluralize(label))

    grimoires = []
    if label in entities:
        template = 'entity-list.html'
        grimoires = graph.get_all('grimoire',
                                  with_connection_label=label)['nodes']
        if len(grimoires) < 2:
            grimoires = None

    return render_template(request.url, template, items=items,
                           title=title, label=label,
                           grimoires=grimoires, filtered=filtered)
Beispiel #3
0
def get_node(uid):
    ''' get a node or return an error '''
    logging.info('loading %s', uid)
    uid = sanitize(uid)
    result = graph.get_node(uid)

    if 'nodes' not in result or not result['nodes']:
        logging.error('Invalid uid %s', uid)
        raise NameError('node not found')

    return {
        'node': result['nodes'][0],
        'rels': result['rels']
    }
Beispiel #4
0
def get_node(uid):
    ''' get a node or return an error '''
    logging.info('loading %s', uid)
    uid = sanitize(uid)
    result = graph.get_node(uid)

    if 'nodes' not in result or not result['nodes']:
        logging.error('Invalid uid %s', uid)
        raise NameError('node not found')

    return {
        'node': result['nodes'][0],
        'rels': result['rels']
    }
def redirect_excerpts(uid):
    ''' Re-route anyone who lands on an excerpt page to the proper node
    :param uid: the excerpt's identifier
    :return: a redirect to the linked content node
    '''

    data = graph.get_node(uid)
    source = extract_rel_list_by_type(data['rels'], 'event', 'start') + \
             extract_rel_list_by_type(data['rels'], 'excerpt', 'start') + \
             extract_rel_list_by_type(data['rels'], 'image', 'start')
    try:
        source = source[0]
    except IndexError:
        return render_template(request.url, 'label-404.html',
                               labels=graph.get_labels())

    return redirect(source['link'])
def redirect_excerpts(uid):
    ''' Re-route anyone who lands on an excerpt page to the proper node
    :param uid: the excerpt's identifier
    :return: a redirect to the linked content node
    '''

    data = graph.get_node(uid)
    source = extract_rel_list_by_type(data['rels'], 'event', 'start') + \
             extract_rel_list_by_type(data['rels'], 'excerpt', 'start') + \
             extract_rel_list_by_type(data['rels'], 'image', 'start')
    try:
        source = source[0]
    except IndexError:
        return render_template(request.url,
                               '404.html',
                               labels=graph.get_labels())

    return redirect(source['link'])