Projet

Général

Profil

0001-manager-take-snapshots-after-page-import-51475.patch

Lauréline Guérin, 08 mars 2021 09:18

Télécharger (5,05 ko)

Voir les différences:

Subject: [PATCH] manager: take snapshots after page import (#51475)

 combo/data/models.py   |  4 +++-
 combo/data/utils.py    |  7 +++++--
 combo/manager/views.py |  7 +++++--
 tests/test_manager.py  | 10 +++++++++-
 4 files changed, 22 insertions(+), 6 deletions(-)
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
-