Ejemplo n.º 1
0
def put(slug, value, update=True):
    slug = to_slug(slug)
    if ':' in slug:
        left, _, right = slug.partition(':')
        if left == 'type':
            return put_type(right, value)
    elif slug == 'type':
        raise RuntimeError("Unnable to alter 'type'.  That's hard coded.")
    
    type = get_type(value['type']) or get_default_type()
    try:
        value = fields.process(type['fields'], value)
    except TypeError:
        raise FormError(type['fields'])
    
    value['type'] = type['slug'].split(':', 1)[1]
    value['slug'] = slug
    if update:
        value['updated'] = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
    relations = set()
    for k, content in value.items():
        if isinstance(content, basestring):
            relations.update(get_relations_from_text(content))
    set_relations(slug, relations)
    redis.set('n:' + slug, json.dumps(value))
    search.index_node(value)
    return value
Ejemplo n.º 2
0
def put_type(slug, value):
    supertype = get_type_type()
    try:
        value = fields.process(supertype['fields'], value)
    except TypeError:
        raise FormError(supertype['fields'])
    value['slug'] = 'type:' + slug
    value['type'] = 'type'
    value['updated'] = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")
    redis.sadd("types", slug)
    redis.set('n:type:' + slug, json.dumps(value))
    set_type_template(slug, 'details', value.get('details'))
    set_type_template(slug, 'summary', value.get('summary'))
    return value