Exemple #1
0
    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][CommonAppKeys.BASIC_RV_STATS] = (
                        get_all_avail_stats_by_tagid(
                            data[tag][TagsKey.TagId]
                        )
                    )

                    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)
Exemple #2
0
    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][CommonAppKeys.BASIC_RV_STATS] = (
                            get_all_avail_stats_by_tagid(tag[TagsKey.TagId]))

                        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)
Exemple #3
0
    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("(?i)" + query)).order_by(
                            self.sort(self.sort_key)).run(conn))
            if data:
                for tag in xrange(len(data)):
                    data[tag][CommonAppKeys.BASIC_RV_STATS] = (
                        get_all_avail_stats_by_tagid(data[tag][TagsKey.TagId]))

                    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)