data: disconnect signals during snapshot loading (#51472)
This commit is contained in:
parent
d1fe947574
commit
bf3cb40c5c
|
@ -598,9 +598,7 @@ class PageSnapshot(models.Model):
|
|||
# try reusing existing page
|
||||
return Page.snapshots.get(snapshot=self)
|
||||
except Page.DoesNotExist:
|
||||
page = Page.load_serialized_page(self.serialization, snapshot=self)
|
||||
page.load_serialized_cells(self.serialization['cells'])
|
||||
return page
|
||||
return self.load_page(self.serialization, snapshot=self)
|
||||
|
||||
def restore(self):
|
||||
json_page = self.serialization
|
||||
|
@ -612,8 +610,16 @@ class PageSnapshot(models.Model):
|
|||
json_page['fields']['exclude_from_navigation'] = self.page.exclude_from_navigation
|
||||
# restore snapshot
|
||||
with transaction.atomic():
|
||||
page = Page.load_serialized_page(json_page)
|
||||
return self.load_page(json_page)
|
||||
|
||||
def load_page(self, json_page, snapshot=None):
|
||||
try:
|
||||
post_save.disconnect(cell_maintain_page_cell_cache)
|
||||
page = Page.load_serialized_page(json_page, snapshot=snapshot)
|
||||
page.load_serialized_cells(json_page['cells'])
|
||||
finally:
|
||||
post_save.connect(cell_maintain_page_cell_cache)
|
||||
page.build_cell_cache()
|
||||
return page
|
||||
|
||||
|
||||
|
@ -1364,7 +1370,7 @@ class LinkCell(CellBase):
|
|||
return []
|
||||
|
||||
def check_validity(self):
|
||||
if self.link_page:
|
||||
if self.link_page_id:
|
||||
self.mark_as_valid()
|
||||
return
|
||||
if not self.url:
|
||||
|
|
|
@ -832,7 +832,7 @@ def test_site_export_import_json(app, admin_user):
|
|||
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json')
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
resp = resp.form.submit()
|
||||
assert len(ctx.captured_queries) in [1142, 1143]
|
||||
assert len(ctx.captured_queries) in [1140, 1141]
|
||||
|
||||
Page.objects.all().delete()
|
||||
assert LinkCell.objects.count() == 0
|
||||
|
@ -841,7 +841,7 @@ def test_site_export_import_json(app, admin_user):
|
|||
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json')
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
resp = resp.form.submit()
|
||||
assert len(ctx.captured_queries) == 667
|
||||
assert len(ctx.captured_queries) == 665
|
||||
assert set(Page.objects.get(slug='one').related_cells['cell_types']) == set(
|
||||
['data_textcell', 'data_linkcell']
|
||||
)
|
||||
|
@ -2092,8 +2092,6 @@ def test_page_versionning(app, admin_user):
|
|||
cell3 = TextCell(page=page, placeholder='content', text='Foobar3', order=2)
|
||||
cell3.save()
|
||||
|
||||
anonymous_app = app
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/pages/%s/' % page.id, status=200)
|
||||
|
||||
|
@ -2128,7 +2126,7 @@ def test_page_versionning(app, admin_user):
|
|||
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
resp2 = resp.click('view', index=1)
|
||||
assert len(ctx.captured_queries) == 319
|
||||
assert len(ctx.captured_queries) == 71
|
||||
assert Page.snapshots.latest('pk').related_cells == {'cell_types': ['data_textcell']}
|
||||
assert resp2.text.index('Hello world') < resp2.text.index('Foobar3')
|
||||
|
||||
|
@ -2189,7 +2187,7 @@ def test_page_versionning(app, admin_user):
|
|||
resp = resp.click('restore', index=6)
|
||||
with CaptureQueriesContext(connection) as ctx:
|
||||
resp = resp.form.submit().follow()
|
||||
assert len(ctx.captured_queries) == 575
|
||||
assert len(ctx.captured_queries) == 327
|
||||
|
||||
resp2 = resp.click('See online')
|
||||
assert resp2.text.index('Foobar1') < resp2.text.index('Foobar2') < resp2.text.index('Foobar3')
|
||||
|
|
Loading…
Reference in New Issue