def get_posts_with_tag(tag_name): """ Returns all the posts with the provided tag name. Pagination is used. """ posts = [] if tag_name != None and len(tag_name) > 0: for post_id in db.smembers(tag_name + APPEND_TAG_NAME_POSTS): posts.append(get_post(post_id)) return posts
def get_sensors(node_id): """ Returns the list of sensors of a node.""" sensors = [] for sensor_id in db.smembers(KEY_LIST_SENSORS_IN_NODE + str(node_id)): sensor = get_sensor(sensor_id) if sensor[S_ID] == 0: sensor = None if sensor != None: sensors.append(sensor) return sensors
def delete_node(id): """ Deletes a node from the db as well as all the sensors related to the node. """ debug(CODE, "DELETE NODE: (id): " + str(id)) id = str(id) sensors = set(db.smembers(KEY_LIST_SENSORS_IN_NODE + id)) for id_sensor in sensors: delete_sensor_from_node(id, id_sensor) db.delete(KEY_LIST_SENSORS_IN_NODE + id) db.delete(KEY_NODES + id)
def get_post_tags(post_id): # OK """ Returns the tags of a post given its integer-id. An empty array is returned if there aren't tags for the given post. """ tags = db.smembers(str(post_id) + APPEND_KEY_TAG) ensure_array = [] for tag in tags: ensure_array.append(tag) debug("\t TAGS FROM POST #: " + str(post_id) + '\n' + str(ensure_array)) return ensure_array
def get_user_tags(username): """ Gets the tags of a user. """ debug("GET TAGS of: " + username) if _is_user_created(username): array = [] vals = db.smembers(username + APPEND_KEY_TAG) debug("\t returning:" + str(vals)) for val in vals: array.append(val) return array else: return None
def get_favourites(username): """ Returns a list of posts favourited by the given user. """ if _is_user_created(username): ret = [] to_delete = [] for post_id in db.smembers(username + APPEND_KEY_FAVS): post = get_post(post_id) if post == None: # Delete from the favourite set to_delete.append(post_id) else: ret.append(post) if len(to_delete) > 0: for item in to_delete: db.srem(username + APPEND_KEY_FAVS, item) return ret else: return None
def _vote(post_id, voting_user, positive): #OK """ Private method for handling postivite and negative votes. """ post_id = str(post_id) debug("VOTE POSITIVE. user:"******", post:" + post_id) if _is_post_created(post_id) and _is_user_created(voting_user): debug("\t CURRENT VOTES of USER.") debug("\t\t-user: "******"\t\t-voted to: " + str(db.smembers(voting_user + APPEND_KEY_HAS_VOTED))) # Check if the user can vote if db.sismember(voting_user + APPEND_KEY_HAS_VOTED, post_id) == 0: vote_id = db.hget(post_id + APPEND_KEY_POSTS, KEY_VOTES) debug("\t vote_id: " + str(vote_id)) pipe = db.pipeline() if positive: pipe.incr(vote_id + APPEND_KEY_VOTE) else: pipe.decr(vote_id + APPEND_KEY_VOTE) pipe.sadd(voting_user + APPEND_KEY_HAS_VOTED, post_id) pipe.execute() return True else: return False else: return None
def sendNogrids(obj, func, **kwargs): for uid in db.smembers("nogrid"): if uid not in obj.clients: db.srem("nogrid", uid) else: obj.clients[uid].call(func, **kwargs)
def get_index_letter_tag(): """ Returns the contents of the index of letter-tags. """ return list(db.smembers(GLOBAL_INDEX_LETTER_TAG))