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

Reply via email to