def get_all(self, conn=None): try: count = ( r .table(TagsCollection) .get_all(self.customer_name, index=TagsIndexes.CustomerName) .count() .run(conn) ) data = list( r .table(TagsCollection) .get_all(self.customer_name, index=TagsIndexes.CustomerName) .order_by(self.sort(self.sort_key)) .skip(self.qoffset) .limit(self.qcount) .run(conn) ) if data: for tag in xrange(len(data)): data[tag][BASIC_RV_STATS] = ( get_all_avail_stats_by_tagid( self.username, self.customer_name, self.uri, self.method, data[tag][TagsKey.TagId] )['data'] ) agents_in_tag = list( r .table(TagsPerAgentCollection) .get_all(data[tag][TagsPerAgentKey.TagId], index=TagsPerAgentIndexes.TagId) .eq_join(TagsPerAgentKey.AgentId, r.table(AgentsCollection)) .zip() .pluck( TagsPerAgentKey.AgentId, AgentKey.ComputerName, AgentKey.DisplayName) .run(conn) ) data[tag]['agents'] = agents_in_tag status = ( GenericResults( self.username, self.uri, self.method ).information_retrieved(data, count) ) logger.info(status['message']) except Exception as e: status = ( GenericResults( self.username, self.uri, self.method ).something_broke('get_all_tags', 'tags', e) ) logger.exception(status['message']) return(status)
def filter_by(self, fkey, fval, conn=None): try: if fkey in self.list_of_valid_keys: count = (r.table(TagsCollection).filter({ fkey: fval, TagsKey.CustomerName: self.customer_name }).count().run(conn)) data = list( r.table(TagsCollection).filter({ fkey: fval, TagsKey.CustomerName: self.customer_name }).order_by(self.sort(self.sort_key)).skip( self.qoffset).limit(self.qcount).run(conn)) if data: for tag in xrange(len(data)): data[tag][BASIC_RV_STATS] = ( get_all_avail_stats_by_tagid( self.username, self.customer_name, self.uri, self.method, tag[TagsKey.TagId])['data']) agents_in_tag = list( r.table(TagsPerAgentCollection).get_all( data[tag][TagsPerAgentKey.Id], index=TagsPerAgentIndexes.TagId).eq_join( TagsPerAgentKey.AgentId, r.table(AgentsCollection)).zip().pluck( TagsPerAgentKey.AgentId, AgentKey.ComputerName, AgentKey.DisplayName).run(conn)) data[tag]['agents'] = agents_in_tag status = (GenericResults(self.username, self.uri, self.method).information_retrieved( data, count)) logger.info(status['message']) else: status = (GenericResults(self.username, self.uri, self.method).incorrect_arguments( data, count)) logger.info(status['message']) except Exception as e: status = (GenericResults(self.username, self.uri, self.method).something_broke( 'search_tags_by_filter', 'tags', e)) logger.exception(status['message']) return (status)
def search_by_name(self, query, conn=None): try: data = list( r.table(TagsCollection).get_all( self.customer_name, index=TagsIndexes.CustomerName).filter( lambda x: x[self.sort_key].match(query)).order_by( self.sort(self.sort_key)).run(conn)) if data: for tag in xrange(len(data)): data[tag][BASIC_RV_STATS] = (get_all_avail_stats_by_tagid( self.username, self.customer_name, self.uri, self.method, data[tag][TagsKey.TagId])['data']) agents_in_tag = list( r.table(TagsPerAgentCollection).get_all( data[tag][TagsPerAgentKey.TagId], index=TagsPerAgentIndexes.TagId).eq_join( TagsPerAgentKey.AgentId, r.table(AgentsCollection)).zip().pluck( TagsPerAgentKey.AgentId, AgentKey.ComputerName, AgentKey.DisplayName).run(conn)) data[tag]['agents'] = agents_in_tag count = len(data) status = (GenericResults(self.username, self.uri, self.method).information_retrieved( data, count)) logger.info(status['message']) except Exception as e: status = (GenericResults(self.username, self.uri, self.method).something_broke( 'search_by_tags', 'tags', e)) logger.exception(status['message']) return (status)