Ejemplo n.º 1
0
    def test_news_video_param(self):
        """
        The video kwargs should set is_video to True
        """

        news = NewsFactory.create(video=True)

        self.assertEqual(news.is_video, True)
Ejemplo n.º 2
0
    def test_news_has_expiry_param(self):
        """
        The has_expiry kwarg should set the expires date to sometime in the future
        """

        news = NewsFactory.create(has_expiry=True)

        self.assertGreater(news.expires, datetime.now(tz=timezone.utc))
Ejemplo n.º 3
0
    def test_news_expired_param(self):
        """
        The expired kwarg should set the expires date to sometime in the past
        """

        news = NewsFactory.create(expired=True)

        self.assertLess(news.expires, datetime.now(tz=timezone.utc))
Ejemplo n.º 4
0
    def test_news_unpublished_param(self):
        """
        The unpublished kwargs should set publish_after date to sometime in the future
        """

        news = NewsFactory.create(unpublished=True)

        self.assertGreater(news.publish_after, datetime.now(tz=timezone.utc))
Ejemplo n.º 5
0
    def test_news_return_value(self):
        """
        NewsFactory should return an instance of News
        """

        news = NewsFactory.create()

        self.assertIsInstance(news, News)
    def test_news_is_featured_param(self):
        """
        The is_featured kwargs should set featured to True
        """

        news = NewsFactory.create(is_featured=True)

        self.assertEqual(news.featured, True)
    def setUp(self):
        """
        Create some news
        """

        self.factory = APIRequestFactory()

        # Generate default news
        [NewsFactory.create() for i in range(4)]

        # Generate news with different traits
        NewsFactory.create(has_expiry=True)
        NewsFactory.create(has_expiry=True, unpublished=True)
        NewsFactory.create(unpublished=True)
        NewsFactory.create(expired=True)
    def test_view_expired_news(self):
        """
        Make sure that an expired news isn't accessible
        """

        pk = NewsFactory.create(expired=True).id

        request = self.factory.get('/api/news/{}'.format(pk))
        response = NewsView.as_view()(request, pk=pk)

        self.assertEqual(response.status_code, 404)
    def test_view_one_news(self):
        """
        Make sure single news view returns a 200 status code
        """

        pk = NewsFactory.create().id

        request = self.factory.get('/api/news/{}'.format(pk))
        response = NewsView.as_view()(request, pk=pk)

        self.assertEqual(response.status_code, 200)
def generate(seed):
    print('Generating Homepage Highlights and News')

    home_page = get_homepage()

    reseed(seed)

    featured_highlights = [HighlightFactory.create() for i in range(6)]
    featured_news = [NewsFactory.create() for i in range(6)]

    home_page.featured_highlights = [
        HomepageFeaturedHighlightsFactory.build(
            highlight=featured_highlights[i]) for i in range(6)
    ]
    home_page.featured_news = [
        HomepageFeaturedNewsFactory.build(news=featured_news[i])
        for i in range(6)
    ]

    home_page.save()
Ejemplo n.º 11
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!'))
Ejemplo n.º 12
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']
        else:
            seed = randint(0, 5000000)

        self.stdout.write('Seeding Faker with: {}'.format(seed))
        faker = factory.faker.Faker._get_faker(locale='en-US')
        faker.random.seed(seed)

        self.stdout.write('Generating LandingPage objects')
        opportunity = LandingPageFactory.create(
            title='Opportunity', content='A placeholder, this is.')
        [LandingPageFactory.create(parent=opportunity) for i in range(5)]

        self.stdout.write('Generating LandingPage objects with Signup CTAs')
        [
            LandingPageFactory.create(parent=opportunity,
                                      signup=SignupFactory.create())
            for i in range(5)
        ]

        self.stdout.write('Generating CampaignPage objects')
        campaigns = LandingPageFactory.create(title='Campaigns',
                                              content='Placeholder page')
        [CampaignFactory.create(parent=campaigns) for i in range(3)]

        self.stdout.write('Generating Homepage')
        homepage = HomepageFactory.create()

        self.stdout.write(
            'Generating HomepageNews, HomepageHighlights, and HomepageLeaders objects'
        )
        [HomepageNewsFactory.create(homepage=homepage) for i in range(4)]
        [HomepageHighlightsFactory.create(homepage=homepage) for i in range(4)]
        [HomepageLeadersFactory.create(homepage=homepage) for i in range(4)]

        self.stdout.write('Generating Highlight objects')
        [HighlightFactory.create() for i in range(10)]

        self.stdout.write('Generating Milestone objects')
        [MilestoneFactory.create() for i in range(10)]

        self.stdout.write('Generating News objects')
        [NewsFactory.create() for i in range(10)]

        self.stdout.write('Generating five InternetHealthIssue objects')
        issue_objects = []
        for issue in internet_health_issues:
            issue_objects.append(InternetHealthIssueFactory(name=issue))

        self.stdout.write('Generating Person and Affiliation objects')
        for i in range(10):
            person = PersonFactory.create(internet_health_issues=issue_objects)

            for j in range(3):
                AffiliationFactory.create(person=person)

        self.stdout.write(
            'Generating unpublished, expired, and expiring highlights')
        [HighlightFactory.create(unpublished=True) for i in range(4)]
        [HighlightFactory.create(expired=True) for i in range(4)]
        [HighlightFactory.create(has_expiry=True) for i in range(4)]

        self.stdout.write('Generating unpublished, expired, and expiring News')
        [NewsFactory.create(unpublished=True) for i in range(4)]
        [NewsFactory.create(expired=True) for i in range(4)]
        [NewsFactory.create(has_expiry=True) for i in range(4)]
        [NewsFactory.create(is_video=True) for i in range(4)]

        self.stdout.write(
            'Generating featured, unpublished, expired, and expiring People')
        [PersonFactory.create(is_featured=True) for i in range(4)]
        [PersonFactory.create(unpublished=True) for i in range(4)]
        [PersonFactory.create(has_expiry=True) for i in range(4)]
        [PersonFactory.create(expired=True) for i in range(4)]

        self.stdout.write(self.style.SUCCESS('Done!'))
Ejemplo n.º 13
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!'))
Ejemplo n.º 14
0
    def test_news_creation(self):
        """
        NewsFactory should not raise an exception
        """

        NewsFactory.create()
Ejemplo n.º 15
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']
        else:
            seed = randint(0, 5000000)

        print('Seeding Faker with: {}'.format(seed))
        faker = factory.faker.Faker._get_faker(locale='en-US')
        faker.random.seed(seed)

        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 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 ObjectDoesNotExist:
            print('Generating a Homepage')
            site_root = WagtailPage.objects.get(title='Root')
            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')
        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)
            default_site.root_page = home_page
            default_site.save()
            print('Updated the default Site')
        except ObjectDoesNotExist:
            print('Generating a default Site')
            WagtailSite.objects.create(hostname='localhost',
                                       port=8000,
                                       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 ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            print('Generating a Styleguide Page')
            StyleguideFactory.create(parent=home_page)

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

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

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

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

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

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

        try:
            wagtailpages_models.CampaignPage.objects.get(title='single-page')
            print('single-page CampaignPage already exists')
        except ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            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 ObjectDoesNotExist:
            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(self.style.SUCCESS('Done!'))