def edit_host(user_id, host_id, hostname, servs): """Edits the given host.""" user_id = str(user_id) host_id = str(host_id) if host_id in red.smembers(_KEY_USER_HOSTS.format(user_id)): pip = red.pipeline() pip.hset(_KEY_HOST.format(host_id), _ATTR_HOST_NAME, hostname) saved_servs = red.smembers(_KEY_HOST_SET_SERVS.format(host_id)) # Remove all pip.delete(_KEY_HOST_SET_SERVS.format(host_id)) for serv in saved_servs: if red.scard(_KEY_SERVNAME_HOSTS.format(serv)) == 1: pip.delete(_KEY_SERVNAME_HOSTS.format(serv)) pip.srem(_KEY_SERVS, serv) else: pip.srem(_KEY_SERVNAME_HOSTS.format(serv), host_id) # create new associated servs for serv in servs: pip.sadd(_KEY_HOST_SET_SERVS.format(host_id), serv) pip.sadd(_KEY_SERVNAME_HOSTS.format(serv), host_id) pip.sadd(_KEY_SERVS, serv) pip.execute() return (True, 'Everything went fine!') else: return (False, 'Unknown host for the given user.')
def delete_network(user_id, net_id): """Deletes a network.""" pip = red.pipeline() user_id = str(user_id) net_id = str(net_id) pip.delete(_KEY_NET.format(net_id)) pip.srem(_KEY_NETS_USER.format(user_id), net_id) # Delete associated events events = get_user_events_network(user_id, net_id) for event in events: pip.lrem(_KEY_EVENTS_USER_DATE.format(user_id, event['date']), 0, event['id']) pip.delete(_KEY_EVENT_USER.format(event['id'], user_id)) pip.delete(_KEY_EVENTS_USER_NET.format(user_id, net_id)) # user-network # Delete associated entries on wb lists for entry in get_entries_network(net_id): # delete network from the entry, if it has one network delete entry if red.scard(_KEY_ENTRY_SET_NETS.format(entry['id'])) == 1: pip.delete(_KEY_ENTRY.format(entry['id'])) # delete from w or b list of entries if entry['type'] == 'B': pip.srem(_KEY_ENTRY_BLACK_USER.format(user_id), entry['id']) else: pip.srem(_KEY_ENTRY_WHITE_USER.format(user_id), entry['id']) pip.srem(_KEY_ENTRY_SET_NETS.format(entry['id']), 0, net_id) pip.execute() # Search for associated api keys to this network apik_ids = red.smembers(_KEY_APIKS_USER.format(user_id)) for apik in apik_ids: tmp = red.hgetall(_KEY_APIK.format(apik)) if tmp and tmp['network'] == net_id: _delete_api_key(user_id, apik)
def delete_host(user_id, host_id): """Deletes a host""" user_id = str(user_id) host_id = str(host_id) pip = red.pipeline() pip.srem(_KEY_USER_HOSTS.format(user_id), host_id) pip.delete(_KEY_HOST.format(host_id)) servs = red.smembers(_KEY_HOST_SET_SERVS.format(host_id)) for serv in servs: if red.scard(_KEY_SERVNAME_HOSTS.format(serv)) == 1: pip.delete(_KEY_SERVNAME_HOSTS.format(serv)) pip.srem(_KEY_SERVS, serv) else: pip.srem(_KEY_SERVNAME_HOSTS.format(serv), host_id) red.delete(_KEY_HOST_SET_SERVS.format(host_id)) pip.execute()
def get_count_user_networks(user_id): """Returns the number of nets. a user has.""" length = red.scard(_KEY_NETS_USER.format(str(user_id))) return length if length is not None else 0