def create_presence(role_id, place_id): ''' create a Presence for a Role in a Place ''' profile = _get_my_profile() if is_present(role_id, place_id): raise ActionException('Role is already present') role = _get_role(role_id) place = _get_place(place_id) pkey = db.Key(Profile, profile.key.id(), Place, place.key.id(), Presence, role.name) presence = pkey.get() if presence is None: presence = Presence(id=role.name, parent=place.key) presence.role = role.key presence.put() return presence.key.urlsafe()
def delete_role(role_id): ''' delete a Role as long as it is not Present in a Place ''' if len(Presence.query(Presence.role == db.Key(urlsafe=role_id)).fetch()) > 0: raise ActionException('Role still has presence') db.Key(urlsafe=role_id).delete()
def _get_presences(place_id): place = db.Key(urlsafe=place_id) return [presence for presence in Presence.query(ancestor=place).fetch()]