예제 #1
0
    def test_mix_random_limit_sources_1(self):
        moxer = mox.Mox()
        
        moxer.StubOutWithMock(ArtifactSource, "all")
        moxer.StubOutWithMock(ArtifactContent, "all")

        ArtifactSource.all().AndReturn(MockQuery(xrange(4), create_call=_source))
        ArtifactContent.all().AndReturn(MockQuery(xrange(12), create_call=_content))
        
        moxer.ReplayAll()
        sources, text = new_default_mixer().mix_random_limit_sources(1)
        self.assertEquals(len(sources), 1)
        moxer.VerifyAll()
예제 #2
0
    def test_mix_random_limit_sources_1(self):
        moxer = mox.Mox()

        moxer.StubOutWithMock(ArtifactSource, "all")
        moxer.StubOutWithMock(ArtifactContent, "all")

        ArtifactSource.all().AndReturn(
            MockQuery(xrange(4), create_call=_source))
        ArtifactContent.all().AndReturn(
            MockQuery(xrange(12), create_call=_content))

        moxer.ReplayAll()
        sources, text = new_default_mixer().mix_random_limit_sources(1)
        self.assertEquals(len(sources), 1)
        moxer.VerifyAll()
예제 #3
0
    def post(self, **kw):
        helper = RequestHelper(self)
        results = {}
        source_q = ArtifactSource.all()
        for s in source_q:
            artifact_q = ArtifactInfo.find_by_source(s)
            count = len([a for a in artifact_q])
            counter = Counters.source_counter(s.name)
            old_count = counter.count()
            counter.set(count)

            source_result = {'old': old_count}

            # if source is linked to a feed, I can't delete it
            feed = Feed.get_by_source(s, return_none=True)
            if feed:
                source_result['feed'] = feed.url

            if not count and not feed:
                s.delete()
                source_result['deleted'] = True

            if count:
                source_result['new'] = count

            results[s.name] = source_result
        helper.write_json(results)
예제 #4
0
    def post(self, **kw):
        helper = RequestHelper(self)
        results = {}
        source_q = ArtifactSource.all()
        for s in source_q:
            artifact_q = ArtifactInfo.find_by_source(s)
            count = len([a for a in artifact_q])
            counter = Counters.source_counter(s.name)
            old_count = counter.count()
            counter.set(count)
            
            source_result = { 'old': old_count }
            
            # if source is linked to a feed, I can't delete it
            feed = Feed.get_by_source(s, return_none=True)
            if feed:
                source_result['feed'] = feed.url

            if not count and not feed:
                s.delete()
                source_result['deleted'] = True
            
            if count:
                source_result['new'] = count
                
            results[s.name] = source_result
        helper.write_json(results)
예제 #5
0
 def find_artifact_counts(cls, **kw):
     counts = {}
     for src in ArtifactSource.all():
         c = Counters.source_counter(src.name)
         counts[src.name] = dict(counter=c.count(),
                                 info=cls.count_infos(src),
                                 content=cls.count_content(src))
     return counts
예제 #6
0
        def test_words(words, text_call):
            for i in xrange(len(words)):
                moxer = mox.Mox()
        
                moxer.StubOutWithMock(ArtifactSource, "all")
                moxer.StubOutWithMock(ArtifactContent, "all")

                ArtifactSource.all().AndReturn(MockQuery(xrange(4), create_call=_source))
            
                word = words[i]
                source_content = _content(word) 
                source_text = source_content.body
                ArtifactContent.all().AndReturn(MockQuery(xrange(1), create_call=lambda id: source_content))
        
                moxer.ReplayAll()
                mixer = new_default_mixer()
                sources, mixed_text = mixer.mix_random_limit_sources(1)
                print "('%s') '%s' -> '%s'" % (word, source_text, mixed_text)
                text_call(word, source_text, mixed_text)
                moxer.VerifyAll()
예제 #7
0
        def test_words(words, text_call):
            for i in xrange(len(words)):
                moxer = mox.Mox()

                moxer.StubOutWithMock(ArtifactSource, "all")
                moxer.StubOutWithMock(ArtifactContent, "all")

                ArtifactSource.all().AndReturn(
                    MockQuery(xrange(4), create_call=_source))

                word = words[i]
                source_content = _content(word)
                source_text = source_content.body
                ArtifactContent.all().AndReturn(
                    MockQuery(xrange(1),
                              create_call=lambda id: source_content))

                moxer.ReplayAll()
                mixer = new_default_mixer()
                sources, mixed_text = mixer.mix_random_limit_sources(1)
                print "('%s') '%s' -> '%s'" % (word, source_text, mixed_text)
                text_call(word, source_text, mixed_text)
                moxer.VerifyAll()
예제 #8
0
파일: mixer.py 프로젝트: mhawthorne/antonym
 def mix_random_limit_sources(self, source_count, degrade=False):
     """
     params:
         source_count - number of sources to mix
         degrade - if True, mix even if source_count sources cannot be found
     returns:
         ((sources), mixed_content)
     """
     # choose random sources
     source_q = ArtifactSource.all()
     q_count = source_q.count()
     if (q_count < source_count):
         if degrade:
             logging.debug("mix_random_limit_sources requested %d sources; degrading to %d" % (source_count, q_count))
             source_count = q_count
         else:
             raise MissingDataException("insufficient ArtifactSources found (%d < %d)" % \
                 (q_count, source_count))
     sources = random_query_results(source_q, source_count)
     return self.__random_content_for_sources(sources)
예제 #9
0
 def mix_random_limit_sources(self, source_count, degrade=False):
     """
     params:
         source_count - number of sources to mix
         degrade - if True, mix even if source_count sources cannot be found
     returns:
         ((sources), mixed_content)
     """
     # choose random sources
     source_q = ArtifactSource.all()
     q_count = source_q.count()
     if (q_count < source_count):
         if degrade:
             logging.debug(
                 "mix_random_limit_sources requested %d sources; degrading to %d"
                 % (source_count, q_count))
             source_count = q_count
         else:
             raise MissingDataException("insufficient ArtifactSources found (%d < %d)" % \
                 (q_count, source_count))
     sources = random_query_results(source_q, source_count)
     return self.__random_content_for_sources(sources)
예제 #10
0
 def get(self, **kw):
     helper = RequestHelper(self)
     results = []
     for s in ArtifactSource.all().fetch(100, 0):
         results.append(source_hash(s))
     helper.write_json(results)
예제 #11
0
 def get(self, **kw):
     helper = RequestHelper(self)
     results = []
     for s in ArtifactSource.all().fetch(100, 0):
         results.append(source_hash(s))
     helper.write_json(results)
예제 #12
0
 def find_artifact_counts(cls, **kw):
     counts = {}
     for src in ArtifactSource.all():
         c = Counters.source_counter(src.name)
         counts[src.name] = dict(counter=c.count(), info=cls.count_infos(src), content=cls.count_content(src))
     return counts