예제 #1
0
def load_resources(handler, topic_ids):
    if not isinstance(topic_ids, list):
	topic_keys = models.get_key(topic_ids)
    else: 
	topic_keys = map(models.get_key, topic_ids)
    resources = models._get_resources(topic_keys)
    resources = [r.to_dict() for r in resources]
    
    return { "resources" : resources }
예제 #2
0
def get_topic_tree(handler, topic_id=None):

    data = memcache.get("data2")
    if data:
        output = data["root"]
        location = data["location"]
	if not topic_id:
            return output
	elif location:
	    locs = location[models.get_key(topic_id).name()] 
	    return _topic_lookup(output, locs)
	    

    location = {}
    output = { 
	       "name"        : "ROOT",
	       "description" : "",
	       "subtopics"   : []
	     }
    topics = models._get_topics()
    for topic in topics:
	topic_dict = topic.to_dict()
        locstr = topic.key().name() 
	if (locstr == "Bookmark"):
            continue
        loc_nodes = locstr.split(".")
	parent_locstr = ".".join(loc_nodes[0:len(loc_nodes)-1])
	if parent_locstr:
	    parent = _topic_lookup(output, location[parent_locstr])
	    location[locstr] = location[parent_locstr] + [len(parent["subtopics"])]
	    parent["subtopics"].append(topic_dict)
	else:
	    location[locstr] = [ len(output["subtopics"]) ]
	    output["subtopics"].append(topic_dict)

    if not topic_id:
	data = {"root" : output, "location" : location }
        memcache.set("data", data)
        return output
    else:
	locs = location[models.get_key(topic_id).name()] 
	return _topic_lookup(output, locs)
예제 #3
0
def create_topic(handler, name, description, parent_id=None):
    if not parent_id:
        raise ValueError("Parent topic is required.")
    else:
        parent_key = models.get_key(parent_id)	
	parent = models.Topic.get(parent_key)
    
    topic = models._create_topic(name, description, parent)
    _update_cached_tree(topic, parent_key.name())

    return { "topic_id" : topic.key().__str__() }
예제 #4
0
def update(handler, obj_id, **kwargs):
    obj_key = models.get_key(obj_id)
    if obj_key.kind() == "Topic":
	topic = models.db.get(obj_key)
	topic.name = kwargs["name"]
	topic.description = kwargs["description"]
	topic.put()
	return { "updated":obj_id, "type": "Topic" }

    elif obj_key.kind() == "Resource":
        resource = models.db.get(obj_key)
        resource.title = kwargs["title"]
        resource.note = kwargs["note"]
        resource.link = kwargs["link"]
        resource.type = kwargs["type"]
	resource.topic = models.get_key(kwargs["topic_id"])
	resource.put()
	return { "updated":obj_id, "type":"Resource" }

    else: 
	return {"updated":""}
예제 #5
0
def delete(handler, obj_id):
    obj_key = models.get_key(obj_id)
    if obj_key.kind() == "Topic":
	topic = models.db.get(obj_key)
        topics = models._get_topics(topic) 
	for t in topics:
	    t.delete()

        memecache.set("data", None)	
	return {"deleted":obj_id}
    elif obj_key.kind() == "Resource":
        resource = models.Resource.get(obj_key)
	resource.delete()
	return {"deleted":obj_id}
    else: 
	return {"deleted":""}
예제 #6
0
def create_resource(handler,title,link,note,parent_id=None,type='webpage'):
    topic_key = models.get_key(parent_id, "Topic") if parent_id else models.get_key("Bookmark", kind="Topic", encoded=False)	
    resource = models._create_resource(title,link,note,topic_key,type)

    return { "resource_id" : resource.key().__str__() }