Author: jmorliaguet Date: Sun Apr 9 13:48:23 2006 New Revision: 2795 Modified: cpsskins/branches/jmo-perspectives/setup/utils.py cpsskins/branches/jmo-perspectives/ui/panels/io_section.pt cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py Log:
- added a TAR extractor - added the prototype of a TAR archive uploader for importing a site. Modified: cpsskins/branches/jmo-perspectives/setup/utils.py ============================================================================== --- cpsskins/branches/jmo-perspectives/setup/utils.py (original) +++ cpsskins/branches/jmo-perspectives/setup/utils.py Sun Apr 9 13:48:23 2006 @@ -35,17 +35,26 @@ class TarArchive: - def __init__(self, filename=u''): - self.stream = StringIO() - self.archive = TarFile.open(str(filename), 'w:gz', self.stream) + def __init__(self, filename=u'dummy.tgz', mode='r', data=''): + self.mode = mode + self.stream = StringIO(data) + self.archive = TarFile.open(str(filename), '%s:gz' % mode, self.stream) def __setitem__(self, k, v): + if self.mode == 'r': + raise TypeError("This tar archive is read-only.") stream = StringIO(v) info = TarInfo(k) info.size = len(v) info.mtime = time.time() self.archive.addfile(info, stream) + def __getitem__(self, k): + if self.mode == 'w': + raise TypeError("This tar archive is write-only.") + file = self.archive.extractfile(k) + return file.read() + def __call__(self): self.archive.close() return self.stream.getvalue() Modified: cpsskins/branches/jmo-perspectives/ui/panels/io_section.pt ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/panels/io_section.pt (original) +++ cpsskins/branches/jmo-perspectives/ui/panels/io_section.pt Sun Apr 9 13:48:23 2006 @@ -8,7 +8,7 @@ <div tal:condition="python: section == 'import'"> <h3>Import site</h3> - <form action="@@importSite" method="post"> + <form action="@@importSite" method="post" enctype="multipart/form-data"> <label for="snapshot">Snapshot</label> <input id="snapshot" type="file" name="file" /> <button type="submit">Upload</button> Modified: cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py ============================================================================== --- cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py (original) +++ cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py Sun Apr 9 13:48:23 2006 @@ -129,7 +129,7 @@ response.setHeader('Content-disposition', 'attachment; filename=%s' % filename) - archive = TarArchive('site.tgz') + archive = TarArchive(filename='site.tgz', mode='w') archive[u'themes.xml'] = self.exportThemes() archive[u'settings.xml'] = self.exportSettings() @@ -142,8 +142,17 @@ def importSite(self, file=None): mgr = getThemeManager() - print file + archive = TarArchive(mode='r', data=file.read()) + + themes = archive[u'themes.xml'] + settings = archive[u'settings.xml'] + formats = archive[u'formats.xml'] + displays = archive[u'displays.xml'] + portlets = archive[u'portlets.xml'] + relations = archive[u'relations.xml'] + + # TODO ################################################################### # Storage -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins