示例#1
0
文件: __init__.py 项目: FND/sivoc
def list_concepts(environ, start_response):
    concepts = STORE.retrieve('concepts')

    content_type = environ['wsgi.accepted_type']

    response_headers = [('Content-Type', content_type)]
    start_response(HTTP['200'], response_headers)

    return _serializer(content_type).list_concepts(concepts)
示例#2
0
文件: __init__.py 项目: FND/sivoc
def list_labels(environ, start_response):
    labels = [] # XXX: inefficient; laziness (i.e. a generator) would be preferable here
    for concept in STORE.retrieve('concepts', None, { 'labels': 1 }):
        labels.extend(concept.pref_labels + concept.alt_labels) # TODO: eliminate duplicates

    content_type = environ['wsgi.accepted_type']

    response_headers = [('Content-Type', content_type)]
    start_response(HTTP['200'], response_headers)

    return _serializer(content_type).list_labels(labels)
示例#3
0
文件: __init__.py 项目: FND/sivoc
def get_concept(environ, start_response):
    _id = environ['wsgiorg.routing_args'][1]['id']

    concepts = STORE.retrieve('concepts', { '_id': ObjectId(_id) })
    concept = list(concepts)[0] # XXX: not particularly elegant

    if not concept:
        raise HTTP404('no such concept')

    content_type = environ['wsgi.accepted_type']

    response_headers = [('Content-Type', content_type)]
    start_response(HTTP['200'], response_headers)

    return _serializer(content_type).show_concept(concept)
示例#4
0
def post_creator(environ, start_response):
    content_type = environ.get('CONTENT_TYPE', '')
    if not content_type == 'application/x-www-form-urlencoded':  # XXX: TiddlyWeb uses startswith here!?
        raise HTTP415

    # TODO: this might be encapsulated in middleware (cf. tiddlyweb.web.query)
    content_length = int(environ['CONTENT_LENGTH'] or 0)
    content = environ['wsgi.input'].read(content_length)
    data = parse_qs(content, keep_blank_values=True)

    concept = Concept()
    # TODO: label language (input/selection currently missing from HTML template)
    for label_type in ['pref', 'alt']:
        key = '%s_labels' % label_type
        for name in data[key]:
            if name:
                label = Label(name, lang=None)
                getattr(concept, key).append(label)

    _id = STORE.add(concept)

    response_headers = [('Location', '/concepts/%s' % concept._id)]
    start_response(HTTP['302'], response_headers)
    return ['']
示例#5
0
def post_creator(environ, start_response):
    content_type = environ.get('CONTENT_TYPE', '')
    if not content_type == 'application/x-www-form-urlencoded': # XXX: TiddlyWeb uses startswith here!?
        raise HTTP415

    # TODO: this might be encapsulated in middleware (cf. tiddlyweb.web.query)
    content_length = int(environ['CONTENT_LENGTH'] or 0)
    content = environ['wsgi.input'].read(content_length)
    data = parse_qs(content, keep_blank_values=True)

    concept = Concept()
    # TODO: label language (input/selection currently missing from HTML template)
    for label_type in ['pref', 'alt']:
        key = '%s_labels' % label_type
        for name in data[key]:
            if name:
                label = Label(name, lang=None)
                getattr(concept, key).append(label)

    _id = STORE.add(concept)

    response_headers = [('Location', '/concepts/%s' % concept._id)]
    start_response(HTTP['302'], response_headers)
    return ['']