コード例 #1
0
    def handle(self, *args, **options):

        faker = factory.faker.Faker._get_faker(locale='en-US')

        # Seed Faker with the provided seed value or a pseudorandom int between 0 and five million
        if options['seed']:
            seed = options['seed']
        elif settings.RANDOM_SEED is not None:
            seed = settings.RANDOM_SEED
        else:
            seed = random.randint(0, 5000000)

        self.stdout.write(f'Seeding random numbers with: {seed}')

        reseed(seed)

        self.stdout.write('Generating Images')
        for i in range(20):
            ImageFactory.create(file__width=1080,
                                file__height=720,
                                file__color=faker.safe_color_name())

        factories = [
            core_factory,
        ]
        for app_factory in factories:
            app_factory.generate(seed)

        self.stdout.write(self.style.SUCCESS('Done!'))
コード例 #2
0
    def test_that_text_get_described(self):
        with mock.patch.object(
                Cognitive,
                "describe",
                return_value=DescriptionResult(description="A title",
                                               tags=["blue", "green",
                                                     "white"]),
        ) as mock_method:
            image = ImageFactory(title=get_test_image_file().name,
                                 file=get_test_image_file())
            image.refresh_from_db()

        mock_method.assert_called_with(image)

        self.assertEqual(image.title, "A title")
        self.assertEqual(image.tags.all().count(), 3)
        self.assertTrue(image.tags.filter(slug__in=["blue"]).exists())
コード例 #3
0
 def test_past_event_image_resolves(self, client):
     """Test that image resolves."""
     event_listing = EventIndexPageFactory(parent=self.home_page)
     feed_image = ImageFactory(file__filename='event_test.jpg')
     past_event = EventPageFactory.create(parent=event_listing,
                                          starts_in_past=True,
                                          feed_image=feed_image)
     response = generate_image_url(past_event.feed_image, 'original')
     image_via_url = client.get(response, follow=True)
     assert image_via_url.status_code == 200
コード例 #4
0
    def test_that_text_gets_translated(self):
        with mock.patch.object(
                Cognitive,
                "describe",
                return_value=DescriptionResult(description="A title",
                                               tags=["blue", "green",
                                                     "white"]),
        ):
            with mock.patch.object(
                    GoogleTranslate,
                    "translate",
                    return_value=["En titel", "blå", "grön", "vit"],
            ):
                image = ImageFactory(title=get_test_image_file().name,
                                     file=get_test_image_file())
                image.refresh_from_db()

        self.assertEqual(image.title, "En titel")
        self.assertEqual(image.tags.all().count(), 3)
        self.assertTrue(image.tags.filter(slug__in=["vit"]).exists())
コード例 #5
0
def test_image_version_url(settings, full_url):
    """image_version_url should produce an image URL with the file hash set as the file version in the querystring"""
    settings.SITE_BASE_URL = BASE_URL
    view_name = "wagtailimages_serve"
    image_id = 1
    file_hash = "abcdefg"
    image_filter = "fill-75x75"
    image = ImageFactory.build(id=image_id, file_hash=file_hash)
    expected_signature = generate_signature(image_id, image_filter, key=None)
    result_url = image_version_url(
        image, image_filter, full_url=full_url, viewname=view_name
    )
    relative_url = (
        f"/images/{expected_signature}/{image_id}/{image_filter}/?v={file_hash}"
    )
    expected_result_url = (
        relative_url if full_url is False else urljoin(BASE_URL, relative_url)
    )
    assert result_url == expected_result_url
コード例 #6
0
    def handle(self, *args, **options):

        if options['delete']:
            call_command('flush_models')

        faker = factory.faker.Faker._get_faker(locale='en-US')

        # Seed Faker with the provided seed value or a pseudorandom int between 0 and five million
        if options['seed']:
            seed = options['seed']
        elif settings.RANDOM_SEED is not None:
            seed = settings.RANDOM_SEED
        else:
            seed = random.randint(0, 5000000)

        print(f'Seeding random numbers with: {seed}')

        reseed(seed)

        print('Generating Images')
        [
            ImageFactory.create(file__width=1080,
                                file__height=720,
                                file__color=faker.safe_color_name())
            for i in range(20)
        ]

        [
            app_factory.generate(seed) for app_factory in [
                milestones_factory, news_factory, highlights_factory,
                people_factory, wagtailpages_factory, buyersguide_factory,
                mozfest_factory
            ]
        ]

        print(self.style.SUCCESS('Done!'))
コード例 #7
0
    def handle(self, *args, **options):

        if options['delete']:
            call_command('flush_models')

        # Seed Faker with the provided seed value or a pseudorandom int between 0 and five million
        if options['seed']:
            seed = options['seed']
        elif settings.RANDOM_SEED is not None:
            seed = settings.RANDOM_SEED
        else:
            seed = random.randint(0, 5000000)

        print(f'Seeding random numbers with: {seed}')
        random.seed(seed)

        faker = factory.faker.Faker._get_faker(locale='en-US')
        faker.random.seed(seed)

        print('Generating Images')
        [
            ImageFactory.create(
                file__width=1080,
                file__height=720,
                file__color=faker.safe_color_name()
            ) for i in range(20)
        ]

        print('Generating Milestones')
        [MilestoneFactory.create() for i in range(10)]

        print('Generating five InternetHealthIssue')
        [InternetHealthIssue.objects.get_or_create(name=e) for e in internet_health_issues]

        print('Generating Fake News')
        generate_fake_data(NewsFactory, 10)

        print('Generating highlights')
        generate_fake_data(HighlightFactory, 4)

        print('Generating People')
        generate_fake_data(PersonFactory, 10)

        print('Generating People with affiliation')
        generate_fake_data(AffiliationFactory, 10)

        print('Generating blank Homepage')
        try:
            home_page = wagtailpages_models.Homepage.objects.get(title='Homepage')
            print('Homepage already exists')
        except wagtailpages_models.Homepage.DoesNotExist:
            print('Generating a Homepage')
            site_root = WagtailPage.objects.get(id=1)
            home_page = WagtailHomepageFactory.create(
                parent=site_root,
                title='Homepage',
                slug=None,
                hero_image__file__width=1080,
                hero_image__file__height=720
            )

        print('Generating Homepage Highlights and News')
        if home_page is not None:
            featured_news = [NewsFactory.create() for i in range(6)]
            featured_highlights = [HighlightFactory.create() for i in range(6)]
            home_page.featured_news = [
                HomepageFeaturedNewsFactory.build(news=featured_news[i]) for i in range(6)
            ]
            home_page.featured_highlights = [
                HomepageFeaturedHighlightsFactory.build(highlight=featured_highlights[i]) for i in range(6)
            ]
            home_page.save()

        try:
            default_site = WagtailSite.objects.get(is_default_site=True)
            if settings.HEROKU_APP_NAME:
                default_site.hostname = REVIEW_APP_HOSTNAME
            default_site.root_page = home_page
            default_site.save()
            print('Updated the default Site')
        except WagtailSite.DoesNotExist:
            print('Generating a default Site')
            if settings.HEROKU_APP_NAME:
                hostname = REVIEW_APP_HOSTNAME
                port = 80
            else:
                hostname = 'localhost'
                port = 8000

            WagtailSite.objects.create(
                hostname=hostname,
                port=port,
                root_page=home_page,
                site_name='Foundation Home Page',
                is_default_site=True
            )

        try:
            about_page = WagtailPage.objects.get(title='about')
            print('about page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an about Page (PrimaryPage)')
            about_page = PrimaryPageFactory.create(parent=home_page, title='about')

        print('Generating child pages for about page')
        [PrimaryPageFactory.create(parent=about_page) for i in range(5)]

        try:
            WagtailPage.objects.get(title='styleguide')
            print('styleguide page exists')
        except WagtailPage.DoesNotExist:
            print('Generating a Styleguide Page')
            StyleguideFactory.create(parent=home_page)

        try:
            WagtailPage.objects.get(title='people')
            print('people page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty People Page')
            PeoplePageFactory.create(parent=home_page)

        try:
            WagtailPage.objects.get(title='news')
            print('news page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty News Page')
            NewsPageFactory.create(parent=home_page)

        try:
            WagtailPage.objects.get(title='initiatives')
            print('initiatives page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty Initiatives Page')
            InitiativesPageFactory.create(parent=home_page)

        try:
            participate_page = WagtailPage.objects.get(title='participate')
            print('participate page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty Participate Page')
            participate_page = ParticipatePage2Factory.create(parent=home_page)

        print('Generating Participate Highlights')
        if participate_page is not None:
            featured_highlights = [HighlightFactory.create() for i in range(3)]
            participate_page.featured_highlights = [
                ParticipatePage2FeaturedHighlightsFactory.build(highlight=featured_highlights[i]) for i in range(3)
            ]
            featured_highlights2 = [HighlightFactory.create() for i in range(6)]
            participate_page.featured_highlights2 = [
                ParticipatePage2FeaturedHighlights2Factory.build(highlight=featured_highlights2[i]) for i in range(6)
            ]
            participate_page.save()

        try:
            campaign_namespace = WagtailPage.objects.get(title='campaigns')
            print('campaigns namespace exists')
        except WagtailPage.DoesNotExist:
            print('Generating a campaigns namespace')
            campaign_namespace = MiniSiteNameSpaceFactory.create(parent=home_page, title='campaigns', live=False)

        print('Generating Campaign Pages under namespace')
        campaigns = [CampaignPageFactory.create(parent=campaign_namespace) for i in range(5)]

        print('Generating Donation Modals for Campaign Pages')
        [DonationModalsFactory.create(page=campaign) for campaign in campaigns]

        try:
            wagtailpages_models.CampaignPage.objects.get(title='single-page')
            print('single-page CampaignPage already exists')
        except wagtailpages_models.CampaignPage.DoesNotExist:
            print('Generating single-page CampaignPage')
            CampaignPageFactory.create(parent=campaign_namespace, title='single-page')

        try:
            wagtailpages_models.CampaignPage.objects.get(title='multi-page')
            print('multi-page CampaignPage already exists.')
        except wagtailpages_models.CampaignPage.DoesNotExist:
            print('Generating multi-page CampaignPage')
            multi_page_campaign = CampaignPageFactory(parent=campaign_namespace, title='multi-page')
            [CampaignPageFactory(parent=multi_page_campaign, no_cta=True) for k in range(3)]

        try:
            opportunity_namespace = WagtailPage.objects.get(title='opportunity')
            print('opportunity namespace exists')
        except WagtailPage.DoesNotExist:
            print('Generating an opportunity namespace')
            opportunity_namespace = MiniSiteNameSpaceFactory.create(parent=home_page, title='opportunity', live=False)

        print('Generating Opportunity Pages under namespace')
        [OpportunityPageFactory.create(parent=opportunity_namespace) for i in range(5)]

        try:
            wagtailpages_models.OpportunityPage.objects.get(title='Global Sprint')
            print('Global Sprint OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating Global Sprint OpportunityPage')
            OpportunityPageFactory.create(parent=opportunity_namespace, title='Global Sprint', no_cta=True)

        try:
            wagtailpages_models.OpportunityPage.objects.get(title='single-page')
            print('single-page OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating single-page OpportunityPage')
            OpportunityPageFactory.create(parent=opportunity_namespace, title='single-page')

        try:
            wagtailpages_models.OpportunityPage.objects.get(title='multi-page')
            print('multi-page OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating multi-page OpportunityPage')
            multi_page_opportunity = OpportunityPageFactory(parent=opportunity_namespace, title='multi-page')
            [OpportunityPageFactory(parent=multi_page_opportunity, no_cta=True) for k in range(3)]

        print('Generating Buyer\'s Guide Products')
        generate_fake_data(ProductFactory, 70)

        print('Generating Randomised Buyer\'s Guide Products Votes')
        for p in Product.objects.all():
            for _ in range(1, 15):
                value = random.randint(1, 100)
                RangeVote.objects.create(
                    product=p,
                    attribute='creepiness',
                    value=value
                )

                value = random.randint(1, 100) < 50
                BooleanVote.objects.create(
                    product=p,
                    attribute='confidence',
                    value=value
                )

        print('Aggregating Buyer\'s Guide Product votes')
        call_command('aggregate_product_votes')

        print(self.style.SUCCESS('Done!'))
コード例 #8
0
 def image_name(self, create, extracted, **kwargs):
     self.image = ImageFactory()
コード例 #9
0
    def handle(self, *args, **options):

        if options['delete']:
            call_command('flush_models')

        # Seed Faker with the provided seed value or a pseudorandom int between 0 and five million
        if options['seed']:
            seed = options['seed']
        elif settings.RANDOM_SEED is not None:
            seed = settings.RANDOM_SEED
        else:
            seed = random.randint(0, 5000000)

        faker = factory.faker.Faker._get_faker(locale='en-US')

        def reseed():
            random.seed(seed)
            faker.random.seed(seed)

        print(f'Seeding random numbers with: {seed}')

        reseed()

        print('Generating Images')
        [
            ImageFactory.create(file__width=1080,
                                file__height=720,
                                file__color=faker.safe_color_name())
            for i in range(20)
        ]

        reseed()

        print('Generating Milestones')
        [MilestoneFactory.create() for i in range(10)]

        reseed()

        print('Generating five InternetHealthIssue')
        [
            InternetHealthIssue.objects.get_or_create(name=e)
            for e in internet_health_issues
        ]

        reseed()

        print('Generating Fake News')
        generate_fake_data(NewsFactory, 10)

        reseed()

        print('Generating highlights')
        generate_fake_data(HighlightFactory, 4)

        reseed()

        print('Generating People')
        generate_fake_data(PersonFactory, 10)

        reseed()

        print('Generating People with affiliation')
        generate_fake_data(AffiliationFactory, 10)

        reseed()

        print('Generating blank Homepage')
        try:
            home_page = wagtailpages_models.Homepage.objects.get(
                title='Homepage')
            print('Homepage already exists')
        except wagtailpages_models.Homepage.DoesNotExist:
            print('Generating a Homepage')
            site_root = WagtailPage.objects.get(id=1)
            home_page = WagtailHomepageFactory.create(
                parent=site_root,
                title='Homepage',
                slug=None,
                hero_image__file__width=1080,
                hero_image__file__height=720)

        reseed()

        print('Generating Homepage Highlights and News')
        if home_page is not None:
            featured_news = [NewsFactory.create() for i in range(6)]
            featured_highlights = [HighlightFactory.create() for i in range(6)]
            home_page.featured_news = [
                HomepageFeaturedNewsFactory.build(news=featured_news[i])
                for i in range(6)
            ]
            home_page.featured_highlights = [
                HomepageFeaturedHighlightsFactory.build(
                    highlight=featured_highlights[i]) for i in range(6)
            ]
            home_page.save()

        reseed()

        try:
            default_site = WagtailSite.objects.get(is_default_site=True)
            if settings.HEROKU_APP_NAME:
                default_site.hostname = REVIEW_APP_HOSTNAME
            default_site.root_page = home_page
            default_site.save()
            print('Updated the default Site')
        except WagtailSite.DoesNotExist:
            print('Generating a default Site')
            if settings.HEROKU_APP_NAME:
                hostname = REVIEW_APP_HOSTNAME
                port = 80
            else:
                hostname = 'localhost'
                port = 8000

            WagtailSite.objects.create(hostname=hostname,
                                       port=port,
                                       root_page=home_page,
                                       site_name='Foundation Home Page',
                                       is_default_site=True)

        reseed()

        try:
            about_page = WagtailPage.objects.get(title='about')
            print('about page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an about Page (PrimaryPage)')
            about_page = PrimaryPageFactory.create(parent=home_page,
                                                   title='about')

        reseed()

        print('Generating child pages for about page')
        [PrimaryPageFactory.create(parent=about_page) for i in range(5)]

        reseed()

        try:
            WagtailPage.objects.get(title='styleguide')
            print('styleguide page exists')
        except WagtailPage.DoesNotExist:
            print('Generating a Styleguide Page')
            StyleguideFactory.create(parent=home_page)

        reseed()

        try:
            WagtailPage.objects.get(title='people')
            print('people page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty People Page')
            PeoplePageFactory.create(parent=home_page)

        reseed()

        try:
            WagtailPage.objects.get(title='news')
            print('news page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty News Page')
            NewsPageFactory.create(parent=home_page)

        reseed()

        try:
            WagtailPage.objects.get(title='initiatives')
            print('initiatives page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty Initiatives Page')
            InitiativesPageFactory.create(parent=home_page)

        reseed()

        try:
            participate_page = WagtailPage.objects.get(title='participate')
            print('participate page exists')
        except WagtailPage.DoesNotExist:
            print('Generating an empty Participate Page')
            participate_page = ParticipatePage2Factory.create(parent=home_page)

        reseed()

        print('Generating Participate Highlights')
        if participate_page is not None:
            featured_highlights = [HighlightFactory.create() for i in range(3)]
            participate_page.featured_highlights = [
                ParticipatePage2FeaturedHighlightsFactory.build(
                    highlight=featured_highlights[i]) for i in range(3)
            ]
            featured_highlights2 = [
                HighlightFactory.create() for i in range(6)
            ]
            participate_page.featured_highlights2 = [
                ParticipatePage2FeaturedHighlights2Factory.build(
                    highlight=featured_highlights2[i]) for i in range(6)
            ]
            participate_page.save()

        reseed()

        try:
            campaign_namespace = WagtailPage.objects.get(title='campaigns')
            print('campaigns namespace exists')
        except WagtailPage.DoesNotExist:
            print('Generating a campaigns namespace')
            campaign_namespace = MiniSiteNameSpaceFactory.create(
                parent=home_page, title='campaigns', live=False)

        reseed()

        print('Generating Campaign Pages under namespace')
        campaigns = [
            CampaignPageFactory.create(parent=campaign_namespace)
            for i in range(5)
        ]

        reseed()

        print('Generating Donation Modals for Campaign Pages')
        [DonationModalsFactory.create(page=campaign) for campaign in campaigns]

        reseed()

        try:
            wagtailpages_models.CampaignPage.objects.get(title='single-page')
            print('single-page CampaignPage already exists')
        except wagtailpages_models.CampaignPage.DoesNotExist:
            print('Generating single-page CampaignPage')
            CampaignPageFactory.create(parent=campaign_namespace,
                                       title='single-page')

        reseed()

        try:
            wagtailpages_models.CampaignPage.objects.get(title='multi-page')
            print('multi-page CampaignPage already exists.')
        except wagtailpages_models.CampaignPage.DoesNotExist:
            print('Generating multi-page CampaignPage')
            multi_page_campaign = CampaignPageFactory(
                parent=campaign_namespace, title='multi-page')
            [CampaignPageFactory(parent=multi_page_campaign) for k in range(3)]

        reseed()

        try:
            opportunity_namespace = WagtailPage.objects.get(
                title='opportunity')
            print('opportunity namespace exists')
        except WagtailPage.DoesNotExist:
            print('Generating an opportunity namespace')
            opportunity_namespace = MiniSiteNameSpaceFactory.create(
                parent=home_page, title='opportunity', live=False)

        reseed()

        print('Generating Opportunity Pages under namespace')
        [
            OpportunityPageFactory.create(parent=opportunity_namespace)
            for i in range(5)
        ]

        reseed()

        try:
            wagtailpages_models.OpportunityPage.objects.get(
                title='Global Sprint')
            print('Global Sprint OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating Global Sprint OpportunityPage')
            OpportunityPageFactory.create(parent=opportunity_namespace,
                                          title='Global Sprint')

        reseed()

        try:
            wagtailpages_models.OpportunityPage.objects.get(
                title='single-page')
            print('single-page OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating single-page OpportunityPage')
            OpportunityPageFactory.create(parent=opportunity_namespace,
                                          title='single-page')

        reseed()

        try:
            wagtailpages_models.OpportunityPage.objects.get(title='multi-page')
            print('multi-page OpportunityPage exists')
        except wagtailpages_models.OpportunityPage.DoesNotExist:
            print('Generating multi-page OpportunityPage')
            multi_page_opportunity = OpportunityPageFactory(
                parent=opportunity_namespace, title='multi-page')
            [
                OpportunityPageFactory(parent=multi_page_opportunity)
                for k in range(3)
            ]

        reseed()

        print(
            'Generating fixed Buyer\'s Guide Product for visual regression testing'
        )
        ProductFactory.create(
            product_words=['Percy', 'Cypress'],
            name='percy cypress',
            draft=False,
            adult_content=False,
            company='Percy',
            blurb='Visual Regression Testing',
            url='https://vrt.example.com',
            price=350,
            camera_app=True,
            meets_minimum_security_standards=True,
            camera_device=False,
            microphone_app=True,
            microphone_device=False,
            location_app=True,
            location_device=False,
            uses_encryption=True,
            privacy_policy_reading_level_url='https://vrt.example.com/pprl',
            privacy_policy_reading_level='7',
            share_data=False,
            must_change_default_password=False,
            security_updates=False,
            delete_data=True,
            child_rules=False,
            manage_security=True,
            phone_number='1-555-555-5555',
            live_chat=True,
            email='*****@*****.**',
            worst_case='Duplicate work that burns through screenshots',
        )

        reseed()

        print('Generating Buyer\'s Guide Products')
        generate_fake_data(ProductFactory, 70)

        reseed()

        print('Generating Randomised Buyer\'s Guide Products Votes')
        for p in Product.objects.all():
            for _ in range(1, 15):
                value = random.randint(1, 100)
                RangeVote.objects.create(product=p,
                                         attribute='creepiness',
                                         value=value)

                value = random.randint(1, 100) < 50
                BooleanVote.objects.create(product=p,
                                           attribute='confidence',
                                           value=value)

        reseed()

        print('Aggregating Buyer\'s Guide Product votes')
        call_command('aggregate_product_votes')

        print(self.style.SUCCESS('Done!'))
コード例 #10
0
 def toc_thumbnail_image(self, create, extracted, **kwargs):
     if random() < 0.5:
         self.toc_thumbnail_image = ImageFactory()