def test_related_links(self): """Related links value correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.sidefoot = StreamValue(landing_page.sidefoot.stream_block, [atomic.related_links], True) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'this is a related link')
def test_info_unit_group(self): """Info Unit Group correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue(landing_page.content.stream_block, [atomic.info_unit_group], True) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Info Unit Group')
def test_well(self): """Well content correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue(landing_page.content.stream_block, [atomic.well], True) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'this is well content')
def test_half_width_link_blob_group(self): """Half width link blob group correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue(landing_page.content.stream_block, [atomic.half_width_link_blob_group], True) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Half Width Link Blob Group')
def test_live_draft_page(self): """ Live draft page should not display unpublished content""" live_draft = LandingPage(title='Page Before Updates', slug='page', live=True) publish_page(child=live_draft) live_draft.live = False live_draft.title = 'Draft Page Updates' save_page(page=live_draft) www_response = django_client.get('/page/') self.assertContains(www_response, 'Page Before Updates') self.assertNotContains(www_response, 'Draft Page Updates')
def test_info_unit_group(self): """Info Unit Group correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue( landing_page.content.stream_block, [atomic.info_unit_group], True ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Info Unit Group')
def test_half_width_link_blob_group(self): """Half width link blob group correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue( landing_page.content.stream_block, [atomic.half_width_link_blob_group], True ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Half Width Link Blob Group')
def test_well(self): """Well content correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue( landing_page.content.stream_block, [atomic.well], True ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'this is well content')
def test_related_links(self): """Related links value correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.sidefoot = StreamValue( landing_page.sidefoot.stream_block, [atomic.related_links], True ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'this is a related link')
def test_sidebar_contact_info(self): """Sidebar contact info correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) contact = self.get_contact() landing_page.sidefoot = StreamValue( landing_page.sidefoot.stream_block, [atomic.sidebar_contact(contact.id)], True) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, '*****@*****.**') self.assertContains(response, '(515) 123-4567') self.assertContains(response, '123 abc street')
def test_image_text_groups(self): """Image Text Groups correctly display on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue( landing_page.content.stream_block, [atomic.image_text_50_50_group, atomic.image_text_25_75_group], True, ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Image 25 75 Group') self.assertContains(response, 'Image 50 50 Group')
def test_live_draft_page(self): """ Live draft page should not display unpublished content""" live_draft = LandingPage( title='Page Before Updates', slug='page', live=True ) publish_page(child=live_draft) live_draft.live = False live_draft.title = 'Draft Page Updates' save_page(page=live_draft) www_response = django_client.get('/page/') self.assertContains(www_response, 'Page Before Updates') self.assertNotContains(www_response, 'Draft Page Updates')
def test_live_draft_page(self): """ Live draft page should not display unpublished content""" live_draft = LandingPage( title='Page Before Updates', slug='page', live=False, ) save_new_page(live_draft).publish() live_draft.title = 'Draft Page Updates' live_draft.save_revision() www_response = django_client.get('/page/') self.assertNotContains(www_response, 'Draft Page Updates') self.assertContains(www_response, 'Page Before Updates')
def test_sidebar_contact_info(self): """Sidebar contact info correctly displays on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) contact = self.get_contact() landing_page.sidefoot = StreamValue( landing_page.sidefoot.stream_block, [atomic.sidebar_contact(contact.id)], True ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, '*****@*****.**') self.assertContains(response, '(515) 123-4567') self.assertContains(response, '123 abc street')
def test_image_text_groups(self): """Image Text Groups correctly display on a Landing Page""" landing_page = LandingPage( title='Landing Page', slug='landing', ) landing_page.content = StreamValue( landing_page.content.stream_block, [ atomic.image_text_50_50_group, atomic.image_text_25_75_group ], True, ) publish_page(child=landing_page) response = django_client.get('/landing/') self.assertContains(response, 'Image 25 75 Group') self.assertContains(response, 'Image 50 50 Group')
def test_draft_page(self): """Draft page should not load in www""" draft = LandingPage( title='Draft Page', slug='draft', live=False, ) save_new_page(child=draft) www_response = django_client.get('/draft/') self.assertEqual(www_response.status_code, 404)
def test_shared_draft_page(self): """Shared draft page should not display unshared content""" shared_draft = LandingPage( title='Page Before Updates', slug='page', live=False, shared=True, ) save_new_page(child=shared_draft) shared_draft.title = 'Draft Page Updates' shared_draft.shared = False save_page(page=shared_draft) www_response = django_client.get('/page/') self.assertEqual(www_response.status_code, 404) staging_response = django_client.get( '/page/', HTTP_HOST=os.environ.get('DJANGO_STAGING_HOSTNAME')) self.assertContains(staging_response, 'Page Before Updates') self.assertNotContains(staging_response, 'Draft Page Updates')
def test_live_page(self): """ Live page should load in www""" live_page = LandingPage( title='Live', slug='live', live=True, ) publish_page(child=live_page) www_response = django_client.get('/live/') self.assertEqual(www_response.status_code, 200)
def test_draft_page(self): """Draft page should not load in staging or www""" draft = LandingPage(title='Draft Page', slug='draft', live=False, shared=False) save_new_page(child=draft) www_response = django_client.get('/draft/') self.assertEqual(www_response.status_code, 404) staging_response = django_client.get( '/draft/', HTTP_HOST=os.environ.get('DJANGO_STAGING_HOSTNAME')) self.assertEqual(staging_response.status_code, 404)
def test_shared_draft_page(self): """Shared draft page should not display unshared content""" shared_draft = LandingPage( title='Page Before Updates', slug='page', live=False, shared=True, ) save_new_page(child=shared_draft) shared_draft.title = 'Draft Page Updates' shared_draft.shared = False save_page(page=shared_draft) www_response = django_client.get('/page/') self.assertEqual(www_response.status_code, 404) staging_response = django_client.get( '/page/', HTTP_HOST=os.environ.get('DJANGO_STAGING_HOSTNAME') ) self.assertContains(staging_response, 'Page Before Updates') self.assertNotContains(staging_response, 'Draft Page Updates')
def test_shared_page(self): """Shared page should load in staging but not www""" shared = LandingPage( title='Landing Page', slug='shared', live=False, shared=True, ) save_new_page(child=shared) www_response = django_client.get('/shared/') self.assertEqual(www_response.status_code, 404) staging_response = django_client.get( '/shared/', HTTP_HOST=os.environ.get('DJANGO_STAGING_HOSTNAME')) self.assertEqual(staging_response.status_code, 200)
def run(): print 'Running script \'scripts.initial_test_data\' ...' admin_user = User.objects.filter(username='******') if not admin_user: admin_user = User(username='******', password=make_password( os.environ.get('WAGTAIL_ADMIN_PW')), is_superuser=True, is_active=True, is_staff=True) admin_user.save() else: admin_user = admin_user[0] # # Creates a new site root `CFGov` site_root = HomePage.objects.filter(title='CFGOV') if not site_root: root = Page.objects.first() site_root = HomePage(title='CFGOV', slug='home', depth=2, owner=admin_user) site_root.live = True root.add_child(instance=site_root) latest = site_root.save_revision(user=admin_user, submitted_for_moderation=False) latest.save() else: site_root = site_root[0] # Setting new site root site = Site.objects.first() if site.root_page_id != site_root.id: site.port = 8000 site.root_page_id = site_root.id site.save() content_site = Site(hostname='content.localhost', port=8000, root_page_id=site_root.id) content_site.save() def publish_page(child=None, root=site_root): try: root.add_child(instance=child) except NodeAlreadySaved: pass revision = child.save_revision( user=admin_user, submitted_for_moderation=False, ) revision.publish() # Create each Page Type contact = Contact.objects.filter(heading='Test User') if not contact: contact = Contact(heading='Test User') else: contact = contact[0] contact.contact_info = StreamValue( contact.contact_info.stream_block, [{ "type": "email", "value": { "emails": [{ "url": "/", "text": "*****@*****.**" }] } }, { "type": "phone", "value": { "phones": [{ "tty": "", "number": "1234567890", "vanity": "" }], "fax": True } }, { "type": "address", "value": { "city": "Washington", "title": "", "label": "Address", "state": "DC", "street": "123 abc street", "zip_code": "20012" } }], True) contact.save() lap = LandingPage.objects.filter(title='Landing Page') if not lap: lap = LandingPage(title='Landing Page', slug='landing-page', owner=admin_user) else: lap = lap[0] lap.content = StreamValue(lap.content.stream_block, [{ "type": "image_text_25_75_group", "value": { "heading": "Image 25 75 Group", "image_texts": [{ "body": "", "has_rule": False, "image": { "alt": "", "upload": 84 }, "heading": "", "links": [{ "url": "/", "text": "test" }] }] } }, { "type": "image_text_50_50_group", "value": { "heading": "Image 50 50 Group", "image_texts": [{ "body": "", "links": [{ "url": "/", "text": "test" }], "image": { "alt": "", "upload": 84 }, "is_widescreen": False, "is_button": False, "heading": "" }] } }, { "type": "half_width_link_blob_group", "value": { "link_blobs": [{ "body": "", "heading": "", "links": [{ "url": "/", "text": "test" }] }], "heading": "Half Width Link Blob Group" } }], True) publish_page(lap) sp = SublandingPage.objects.filter(title='Sublanding Page') if not sp: sp = SublandingPage(title='Sublanding Page', slug='sublanding-page', owner=admin_user) else: sp = sp[0] sp.content = StreamValue(sp.content.stream_block, [{ "type": "contact", "value": { "body": "", "header": "Contact", "contact": contact.id } }], True) sp.sidefoot = StreamValue(sp.sidefoot.stream_block, [{ "type": "email_signup", "value": { "text": "", "gd_code": "", "heading": "Email Sign Up", "form_field": [{ "info": "", "type": "", "required": False, "label": "Email Sign up", "btn_text": "", "placeholder": "" }] } }, { "type": "rss_feed", "value": "blog_feed" }], True) publish_page(sp) bp = BrowsePage.objects.filter(title='Browse Page') if not bp: bp = BrowsePage(title='Browse Page', slug='browse-page', owner=admin_user) else: bp = bp[0] bp.header = StreamValue(bp.header.stream_block, [{ 'type': 'featured_content', 'value': { 'body': "<p>this is a featured content body</p>" } }], True) bp.content = StreamValue(bp.content.stream_block, [{ 'type': 'expandable', 'value': { 'label': 'this is an expandable' } }], True) publish_page(bp) # Filterable Pages bfp = BrowseFilterablePage.objects.filter(title='Browse Filterable Page') if not bfp: bfp = BrowseFilterablePage(title='Browse Filterable Page', slug='browse-filterable-page', owner=admin_user) else: bfp = bfp[0] bfp.header = StreamValue(bfp.header.stream_block, [{ 'type': 'text_introduction', 'value': { 'intro': 'this is an intro' } }], True) publish_page(bfp) sfp = SublandingFilterablePage.objects.filter( title='Sublanding Filterable Page') if not sfp: sfp = SublandingFilterablePage(title='Sublanding Filterable Page', slug='sublanding-filterable-page', owner=admin_user) else: sfp = sfp[0] sfp.header = StreamValue(sfp.header.stream_block, [{ 'type': 'hero', 'value': { 'heading': "this is a hero heading" } }], True) publish_page(sfp) eap = EventArchivePage.objects.filter(title='Event Archive Page') if not eap: eap = EventArchivePage(title='Event Archive Page', slug='event-archive-page', owner=admin_user) else: eap = eap[0] publish_page(eap) nlp = NewsroomLandingPage.objects.filter(title='Newsroom Landing Page') if not nlp: nlp = NewsroomLandingPage(title='Newsroom Landing Page', slug='newsroom-landing-page', owner=admin_user) else: nlp = nlp[0] publish_page(nlp) # Filter Pages if not EventPage.objects.filter(title='Event Page'): ep = EventPage(title='Event Page', slug='event-page', owner=admin_user) publish_page(ep, bfp) ddp = DocumentDetailPage.objects.filter(title='Document Detail Page') if not ddp: ddp = DocumentDetailPage(title='Document Detail Page', slug='document-detail-page', owner=admin_user) else: ddp = ddp[0] ddp.sidefoot = StreamValue(ddp.sidefoot.stream_block, [{ 'type': 'related_metadata', 'value': { 'content': [{ 'type': 'text', 'value': { 'heading': 'this is a related metadata heading' } }] } }], True) publish_page(ddp, bfp) lp = LearnPage.objects.filter(title='Learn Page') if not lp: lp = LearnPage(title='Learn Page', slug='learn-page', owner=admin_user) else: lp = lp[0] lp.content = StreamValue(lp.content.stream_block, [{ 'type': 'full_width_text', 'value': [{ 'type': 'quote', 'value': { 'body': 'this is a quote', 'citation': 'a citation' } }] }, { 'type': 'call_to_action', 'value': { 'paragraph_text': 'this is a call to action' } }], True) publish_page(lp, bfp) if not ActivityLogPage.objects.filter(title='Activity Log Page'): alp = ActivityLogPage(title='Activity Log Page', slug='activity-log-page', owner=admin_user) publish_page(alp) if not NewsroomPage.objects.filter(title='Newsroom Page'): np = NewsroomPage(title='Newsroom Page', slug='newsroom-page', owner=admin_user) publish_page(np, nlp) if not LegacyNewsroomPage.objects.filter(title='Legacy Newsroom Page'): lnp = LegacyNewsroomPage(title='Legacy Newsroom Page', slug='legacy-newsroom-page', owner=admin_user) publish_page(lnp, nlp) if not BlogPage.objects.filter(title='Blog Page'): bp = BlogPage(title='Blog Page', slug='blog-page', owner=admin_user) publish_page(bp, sfp) if not LegacyBlogPage.objects.filter(title='Legacy Blog Page'): lbp = LegacyBlogPage(title='Legacy Blog Page', slug='legacy-blog-page', owner=admin_user) publish_page(lbp, sfp) # Demo Page dp = DemoPage.objects.filter(title='Demo Page') if not dp: dp = DemoPage(title='Demo Page', slug='demo-page', owner=admin_user) else: dp = dp[0] dp.sidefoot = StreamValue(dp.sidefoot.stream_block, [{ 'type': 'related_links', 'value': { 'links': [{ 'url': '/url', 'text': 'this is a related link' }] } }], True) publish_page(dp) # Create and configure pages for testing page states draft = DemoPage.objects.filter(slug='draft-page') if not draft: draft = DemoPage(title='Draft Page', slug='draft-page', owner=admin_user, live=False, shared=False) site_root.add_child(instance=draft) else: draft = draft[0] draft.save_revision(user=admin_user) shared = DemoPage.objects.filter(slug='shared-page') if not shared: shared = DemoPage(title='Shared Page', slug='shared-page', owner=admin_user, live=False, shared=True) site_root.add_child(instance=shared) else: shared = shared[0] shared.save_revision(user=admin_user) shared_draft = DemoPage.objects.filter(slug='shared-draft-page') if not shared_draft: shared_draft = DemoPage(title='Shared Page', slug='shared-draft-page', owner=admin_user, live=False, shared=True) site_root.add_child(instance=shared_draft) else: shared_draft = shared_draft[0] shared_draft.save_revision(user=admin_user) shared_draft.title = 'Shared Draft Page' shared_draft.save() shared_draft.save_revision(user=admin_user) live = DemoPage.objects.filter(slug='live-page') if not live: live = DemoPage(title='Live Page', slug='live-page', owner=admin_user, live=True, shared=True) else: live = live[0] publish_page(live) livedraft = DemoPage.objects.filter(slug='live-draft-page') if not livedraft: livedraft = DemoPage(title='Live Draft Page', slug='live-draft-page', owner=admin_user, live=True, shared=True) else: livedraft = livedraft[0] publish_page(livedraft) livedraft.live = False livedraft.shared = False livedraft.title = 'Live Page' livedraft.save_revision(user=admin_user)
def run(): print 'Running script \'scripts.initial_test_data\' ...' admin_user = User.objects.filter(username='******') if not admin_user: admin_user = User(username='******', password=make_password(os.environ.get('WAGTAIL_ADMIN_PW')), is_superuser=True, is_active=True, is_staff=True) admin_user.save() else: admin_user = admin_user[0] # # Creates a new site root `CFGov` site_root = HomePage.objects.filter(title='CFGOV') if not site_root: root = Page.objects.first() site_root = HomePage(title='CFGOV', slug='home', depth=2, owner=admin_user) site_root.live = True root.add_child(instance=site_root) latest = site_root.save_revision(user=admin_user, submitted_for_moderation=False) latest.save() else: site_root = site_root[0] # Setting new site root site = Site.objects.first() if site.root_page_id != site_root.id: site.port = 8000 site.root_page_id = site_root.id site.save() content_site = Site(hostname='content.localhost', port=8000, root_page_id=site_root.id) content_site.save() def publish_page(child=None, root=site_root): try: root.add_child(instance=child) except NodeAlreadySaved: pass revision = child.save_revision( user=admin_user, submitted_for_moderation=False, ) revision.publish() # Create snippets contact = Contact.objects.filter(heading='Test User') if not contact: contact = Contact(heading='Test User') else: contact = contact[0] contact.contact_info = StreamValue(contact.contact_info.stream_block, [ atomic.contact_email, atomic.contact_phone, atomic.contact_address ], True) contact.save() # Create each Page Type lap = LandingPage.objects.filter(title='Landing Page') if not lap: lap = LandingPage(title='Landing Page', slug='landing-page', owner=admin_user) else: lap = lap[0] lap.content = StreamValue(lap.content.stream_block, [ atomic.image_text_25_75_group, atomic.image_text_50_50_group, atomic.half_width_link_blob_group, atomic.well ], True) lap.sidefoot = StreamValue(lap.sidefoot.stream_block, [ atomic.related_links, atomic.sidebar_contact(contact.id) ], True) publish_page(lap) sp = SublandingPage.objects.filter(title='Sublanding Page') if not sp: sp = SublandingPage(title='Sublanding Page', slug='sublanding-page', owner=admin_user) else: sp = sp[0] sp.content = StreamValue(sp.content.stream_block, [ atomic.main_contact_info(contact.id), atomic.reg_comment ], True) sp.sidefoot = StreamValue(sp.sidefoot.stream_block, [ atomic.email_signup, atomic.rss_feed ], True) publish_page(sp) bp = BrowsePage.objects.filter(title='Browse Page') if not bp: bp = BrowsePage(title='Browse Page', slug='browse-page', owner=admin_user) else: bp = bp[0] bp.header = StreamValue(bp.header.stream_block, [ atomic.featured_content ], True) bp.content = StreamValue(bp.content.stream_block, [ atomic.expandable, atomic.expandable_group ], True) publish_page(bp) # Filterable Pages bfp = BrowseFilterablePage.objects.filter(title='Browse Filterable Page') if not bfp: bfp = BrowseFilterablePage(title='Browse Filterable Page', slug='browse-filterable-page', owner=admin_user) else: bfp = bfp[0] bfp.header = StreamValue(bfp.header.stream_block, [atomic.text_introduction], True) publish_page(bfp) sfp = SublandingFilterablePage.objects.filter(title='Sublanding Filterable Page') if not sfp: sfp = SublandingFilterablePage(title='Sublanding Filterable Page', slug='sublanding-filterable-page', owner=admin_user) else: sfp = sfp[0] sfp.header = StreamValue(sfp.header.stream_block, [atomic.hero], True) publish_page(sfp) eap = EventArchivePage.objects.filter(title='Event Archive Page') if not eap: eap = EventArchivePage(title='Event Archive Page', slug='event-archive-page', owner=admin_user) else: eap = eap[0] publish_page(eap) nlp = NewsroomLandingPage.objects.filter(title='Newsroom Landing Page') if not nlp: nlp = NewsroomLandingPage(title='Newsroom Landing Page', slug='newsroom-landing-page', owner=admin_user) else: nlp = nlp[0] publish_page(nlp) alp = ActivityLogPage.objects.filter(title='Activity Log Page') if not alp: alp = ActivityLogPage(title='Activity Log Page', slug='activity-log-page', owner=admin_user) else: alp = alp[0] publish_page(alp) # Filter Pages if not EventPage.objects.filter(title='Event Page'): ep = EventPage(title='Event Page', slug='event-page', owner=admin_user) publish_page(ep, bfp) ddp = DocumentDetailPage.objects.filter(title='Document Detail Page') if not ddp: ddp = DocumentDetailPage(title='Document Detail Page', slug='document-detail-page', owner=admin_user) else: ddp = ddp[0] ddp.sidefoot = StreamValue(ddp.sidefoot.stream_block, [atomic.related_metadata], True) publish_page(ddp, bfp) lp = LearnPage.objects.filter(title='Learn Page') if not lp: lp = LearnPage(title='Learn Page', slug='learn-page', owner=admin_user) else: lp = lp[0] lp.header = StreamValue(lp.header.stream_block, [atomic.item_introduction], True) lp.content = StreamValue(lp.content.stream_block, [ atomic.full_width_text, atomic.call_to_action, atomic.table ], True) publish_page(lp, bfp) if not NewsroomPage.objects.filter(title='Newsroom Page'): np = NewsroomPage(title='Newsroom Page', slug='newsroom-page', owner=admin_user) publish_page(np, nlp) if not LegacyNewsroomPage.objects.filter(title='Legacy Newsroom Page'): lnp = LegacyNewsroomPage(title='Legacy Newsroom Page', slug='legacy-newsroom-page', owner=admin_user) publish_page(lnp, nlp) if not BlogPage.objects.filter(title='Blog Page'): bp = BlogPage(title='Blog Page', slug='blog-page', owner=admin_user) publish_page(bp, sfp) if not LegacyBlogPage.objects.filter(title='Legacy Blog Page'): lbp = LegacyBlogPage(title='Legacy Blog Page', slug='legacy-blog-page', owner=admin_user) publish_page(lbp, sfp) # Create and configure pages for testing page states draft = LandingPage.objects.filter(slug='draft-page') if not draft: draft = LandingPage(title='Draft Page', slug='draft-page', owner=admin_user, live=False, shared=False) site_root.add_child(instance=draft) else: draft = draft[0] draft.save_revision(user=admin_user) shared = LandingPage.objects.filter(slug='shared-page') if not shared: shared = LandingPage(title='Shared Page', slug='shared-page', owner=admin_user, live=False, shared=True) site_root.add_child(instance=shared) else: shared = shared[0] shared.save_revision(user=admin_user) shared_draft = LandingPage.objects.filter(slug='shared-draft-page') if not shared_draft: shared_draft = LandingPage(title='Shared Page', slug='shared-draft-page', owner=admin_user, live=False, shared=True) site_root.add_child(instance=shared_draft) else: shared_draft = shared_draft[0] shared_draft.save_revision(user=admin_user) shared_draft.title = 'Shared Draft Page' shared_draft.shared = False shared_draft.save() shared_draft.save_revision(user=admin_user) live = LandingPage.objects.filter(slug='live-page') if not live: live = LandingPage(title='Live Page', slug='live-page', owner=admin_user, live=True, shared=True) else: live = live[0] publish_page(live) livedraft = LandingPage.objects.filter(slug='live-draft-page') if not livedraft: livedraft = LandingPage(title='Live Draft Page', slug='live-draft-page', owner=admin_user, live=True, shared=True) else: livedraft = livedraft[0] publish_page(livedraft) livedraft.live = False livedraft.shared = False livedraft.title = 'Live Page' livedraft.save_revision(user=admin_user)