def add_relationship(rel): # this condition is already tested for, but is so bad if it happens # that there is an extra check here just in case. if rel.originid == rel.relatedid: return [ ] origin = PenName.get_by_id(rel.originid) #intransaction if not origin: logging.warn("add_relationship origin pen not found: " +\ str(rel.originid)) return [ ] related = PenName.get_by_id(rel.relatedid) #intransaction if not related: logging.warn("add_relationship related pen not found: " +\ str(rel.relatedid)) return [ ] if not origin.following: origin.following = 0 if not related.followers: related.followers = 0 origin.following += 1 related.followers += 1 cached_put(origin) cached_put(related) cached_put(rel) return [ origin, related, rel ]
def delete_relationship(rel): origin = PenName.get_by_id(rel.originid) #intransaction origin.following -= 1 related = PenName.get_by_id(rel.relatedid) #intransaction related.followers -= 1 cached_put(origin) cached_put(related) cached_delete(rel.key().id(), Relationship) return [ origin, related ]