0001-manager-take-snapshots-after-page-import-51475.patch
combo/data/models.py | ||
---|---|---|
515 | 515 |
@classmethod |
516 | 516 |
def load_serialized_pages(cls, json_site, request=None): |
517 | 517 |
cells = [] |
518 |
pages = [] |
|
518 | 519 |
for json_page in json_site: |
519 |
cls.load_serialized_page(json_page, request=request)
|
|
520 |
pages.append(cls.load_serialized_page(json_page, request=request))
|
|
520 | 521 |
cells.extend(json_page.get('cells')) |
521 | 522 |
cls.load_serialized_cells(cells) |
523 |
return pages |
|
522 | 524 | |
523 | 525 |
@classmethod |
524 | 526 |
def export_all_for_json(cls): |
combo/data/utils.py | ||
---|---|---|
120 | 120 |
try: |
121 | 121 |
MapLayer.load_serialized_objects(data.get('map-layers') or []) |
122 | 122 |
Asset.load_serialized_objects(data.get('assets') or []) |
123 |
Page.load_serialized_pages(data.get('pages') or [], request=request) |
|
123 |
pages = Page.load_serialized_pages(data.get('pages') or [], request=request)
|
|
124 | 124 | |
125 | 125 |
if data.get('pwa'): |
126 | 126 |
PwaSettings.load_serialized_settings(data['pwa'].get('settings')) |
... | ... | |
137 | 137 |
except IndexError: |
138 | 138 |
raise ImportSiteError(message) |
139 | 139 |
raise ImportSiteError(_('Unknown page "%s".') % page_slug) |
140 |
else: |
|
141 |
return pages |
|
140 | 142 | |
141 | 143 | |
142 | 144 |
def export_site_tar(fd, export_kwargs=None): |
... | ... | |
164 | 166 |
json_site = tar.extractfile(tarinfo).read() |
165 | 167 |
data = json.loads(json_site.decode('utf-8')) |
166 | 168 |
data.update(untar_assets_files(tar, overwrite=overwrite)) |
167 |
import_site(data, if_empty=if_empty, clean=clean, request=request) |
|
169 |
pages = import_site(data, if_empty=if_empty, clean=clean, request=request)
|
|
168 | 170 |
tar.close() |
171 |
return pages |
combo/manager/views.py | ||
---|---|---|
129 | 129 |
fd.seek(0) |
130 | 130 |
try: |
131 | 131 |
if format == 'json': |
132 |
import_site(json_site, request=self.request) |
|
132 |
pages = import_site(json_site, request=self.request)
|
|
133 | 133 |
else: |
134 |
import_site_tar(fd, request=self.request) |
|
134 |
pages = import_site_tar(fd, request=self.request)
|
|
135 | 135 |
except ImportSiteError as e: |
136 | 136 |
form.add_error('site_file', force_text(e)) |
137 | 137 |
return self.form_invalid(form) |
138 |
else: |
|
139 |
for page in pages: |
|
140 |
PageSnapshot.take(page, request=self.request, comment=_('imported')) |
|
138 | 141 | |
139 | 142 |
return super(SiteImportView, self).form_valid(form) |
140 | 143 |
tests/test_manager.py | ||
---|---|---|
833 | 833 |
assert resp.headers['content-type'] == 'application/json' |
834 | 834 |
site_export = resp.body |
835 | 835 | |
836 |
resp = app.get('/manage/') |
|
837 |
resp = resp.click('Import Site') |
|
838 |
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json') |
|
839 |
resp = resp.form.submit() |
|
840 |
assert Page.objects.count() == 4 |
|
841 |
assert PageSnapshot.objects.all().count() == 4 |
|
842 | ||
836 | 843 |
Page.objects.all().delete() |
837 | 844 |
assert LinkCell.objects.count() == 0 |
838 |
app = login(app) |
|
839 | 845 |
resp = app.get('/manage/') |
840 | 846 |
resp = resp.click('Import Site') |
841 | 847 |
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json') |
... | ... | |
844 | 850 |
assert LinkCell.objects.count() == 2 |
845 | 851 |
assert LinkCell.objects.get(page__slug='one').link_page.slug == 'two' |
846 | 852 |
assert LinkCell.objects.get(page__slug='two').link_page.slug == 'one' |
853 |
assert PageSnapshot.objects.all().count() == 8 |
|
847 | 854 | |
848 | 855 |
resp = app.get('/manage/') |
849 | 856 |
resp = resp.click('Export Site') |
... | ... | |
899 | 906 |
resp.form['site_file'] = Upload('site-export.json', site_export, 'application/json') |
900 | 907 |
resp = resp.form.submit() |
901 | 908 |
assert Page.objects.count() == 1 |
909 |
assert PageSnapshot.objects.all().count() == 1 |
|
902 | 910 |
assert TextCell.objects.count() == 1 |
903 | 911 |
assert Asset.objects.filter(key='collectivity:banner').count() == 1 |
904 | 912 |
assert open('%s/assets/test.png' % path, 'r').read() == 'foo' |
905 |
- |