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
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