0006-data-snapshot-restore-performances-51472.patch
combo/data/models.py | ||
---|---|---|
232 | 232 |
return os.path.splitext(self.picture.name)[-1] |
233 | 233 | |
234 | 234 |
def save(self, *args, **kwargs): |
235 |
if 'update_fields' in kwargs: |
|
236 |
return super().save(*args, **kwargs) |
|
237 | ||
235 | 238 |
if not self.id: |
236 | 239 |
self.related_cells = {'cell_types': []} |
237 | 240 |
if self.order is None: |
... | ... | |
493 | 496 |
cell['fields']['groups'] = [ |
494 | 497 |
[x] for x in cell['fields']['groups'] if isinstance(x, six.string_types) |
495 | 498 |
] |
496 |
if snapshot: |
|
497 |
cell['fields']['page'] = page.object.id |
|
498 |
else: |
|
499 |
cell['fields']['page'] = page.object.natural_key() |
|
499 |
cell['fields']['page'] = page.object.id |
|
500 | 500 | |
501 | 501 |
# if there were cells, remove them |
502 | 502 |
# if page was created, do nothing |
503 | 503 |
if created is False: |
504 |
for cell in CellBase.get_cells(page_id=page.object.id): |
|
505 |
cell.delete() |
|
504 |
for klass in get_cell_classes(): |
|
505 |
if klass is None: |
|
506 |
continue |
|
507 |
klass.objects.filter(page=page.object).delete() |
|
506 | 508 |
return page.object # get page out of deserialization object |
507 | 509 | |
508 | 510 |
@classmethod |
... | ... | |
615 | 617 |
def load_page(self, json_page, snapshot=None): |
616 | 618 |
try: |
617 | 619 |
post_save.disconnect(cell_maintain_page_cell_cache) |
620 |
post_delete.disconnect(cell_maintain_page_cell_cache) |
|
621 | ||
618 | 622 |
page = Page.load_serialized_page(json_page, snapshot=snapshot) |
619 | 623 |
page.load_serialized_cells(json_page['cells']) |
620 | 624 |
finally: |
621 | 625 |
post_save.connect(cell_maintain_page_cell_cache) |
626 |
post_delete.connect(cell_maintain_page_cell_cache) |
|
627 | ||
622 | 628 |
page.build_cell_cache() |
623 | 629 |
return page |
624 | 630 | |
... | ... | |
1990 | 1996 |
def create_redirects(sender, instance, raw, **kwargs): |
1991 | 1997 |
if raw or not instance.id or instance.snapshot_id: |
1992 | 1998 |
return |
1999 |
if kwargs.get('update_fields') and kwargs['update_fields'] == frozenset({'related_cells'}): |
|
2000 |
return |
|
1993 | 2001 |
try: |
1994 | 2002 |
old_page = Page.objects.get(id=instance.id) |
1995 | 2003 |
except Page.DoesNotExist: |
tests/test_manager.py | ||
---|---|---|
832 | 832 |
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json') |
833 | 833 |
with CaptureQueriesContext(connection) as ctx: |
834 | 834 |
resp = resp.form.submit() |
835 |
assert len(ctx.captured_queries) in [853, 854]
|
|
835 |
assert len(ctx.captured_queries) in [823, 824]
|
|
836 | 836 | |
837 | 837 |
Page.objects.all().delete() |
838 | 838 |
assert LinkCell.objects.count() == 0 |
... | ... | |
841 | 841 |
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json') |
842 | 842 |
with CaptureQueriesContext(connection) as ctx: |
843 | 843 |
resp = resp.form.submit() |
844 |
assert len(ctx.captured_queries) == 378
|
|
844 |
assert len(ctx.captured_queries) == 364
|
|
845 | 845 |
assert set(Page.objects.get(slug='one').related_cells['cell_types']) == set( |
846 | 846 |
['data_textcell', 'data_linkcell'] |
847 | 847 |
) |
... | ... | |
2187 | 2187 |
resp = resp.click('restore', index=6) |
2188 | 2188 |
with CaptureQueriesContext(connection) as ctx: |
2189 | 2189 |
resp = resp.form.submit().follow() |
2190 |
assert len(ctx.captured_queries) == 327
|
|
2190 |
assert len(ctx.captured_queries) == 143
|
|
2191 | 2191 | |
2192 | 2192 |
resp2 = resp.click('See online') |
2193 | 2193 |
assert resp2.text.index('Foobar1') < resp2.text.index('Foobar2') < resp2.text.index('Foobar3') |
2194 |
- |