Author: jmorliaguet
Date: Tue Apr 11 20:05:34 2006
New Revision: 2816

Modified:
   cpsskins/branches/jmo-perspectives/setup/snapshot.py
   cpsskins/branches/jmo-perspectives/ui/panels/io_section.pt
   cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml
   cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py
Log:

- saving working in progress: XML importers are being converted to views.



Modified: cpsskins/branches/jmo-perspectives/setup/snapshot.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/snapshot.py        (original)
+++ cpsskins/branches/jmo-perspectives/setup/snapshot.py        Tue Apr 11 
20:05:34 2006
@@ -39,3 +39,5 @@
         self.filename = 'site-%4d-%02d-%02d-%02d:%02d:%02d.tgz' % \
                          time.gmtime()[:6]
 
+    def read(self):
+        return self.data

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  Tue Apr 11 
20:05:34 2006
@@ -19,15 +19,16 @@
 
       <h4>Upload a snapshot</h4>
       <form action="@@importSite" method="post" enctype="multipart/form-data">
-        <input id="snapshot" type="file" name="file" />
+        <input type="file" name="file" />
         <button type="submit">Upload</button>
       </form>
 
       <h4>Load an existing snapshot</h4>
-      <form>
-        <select name="snapshot">
+      <form action="@@importSnapshot" method="post"
+            enctype="multipart/form-data">
+        <select name="filename">
           <option tal:repeat="snapshot view/@@listSnapshots"
-            tal:content="snapshot/title" />
+            tal:content="snapshot" />
         </select>
         <button type="submit">Load</button>
       </form>

Modified: 
cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml    
(original)
+++ cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml    
Tue Apr 11 20:05:34 2006
@@ -82,6 +82,11 @@
         attribute="downloadSnapshot"
     />
 
+    <page
+        name="importSnapshot"
+        attribute="importSnapshot"
+    />
+
   </pages>
 
 </configure>

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  Tue Apr 
11 20:05:34 2006
@@ -26,7 +26,7 @@
 from cpsskins import minjson as json
 from cpsskins.elements.interfaces import IType
 from cpsskins.setup.interfaces import ISettings, ISetting, IGlobalSetting
-from cpsskins.setup.interfaces import IGlobalSetting, IDataExporter
+from cpsskins.setup.interfaces import IDataExporter, IDataImporter
 from cpsskins.setup.interfaces import IResourceType, IResourceManager, 
IResource
 from cpsskins.setup.registration import reloadSetting, refreshSettings
 from cpsskins.setup.utils import TarArchive
@@ -144,26 +144,34 @@
 
     def importSite(self, file=None):
 
+        archive = TarArchive(mode='r', data=file.read())
+
+        themes_data = archive[u'themes.xml']
+        settings_data = archive[u'settings.xml']
+        formats_data = archive[u'formats.xml']
+        displays_data = archive[u'displays.xml']
+        portlets_data = archive[u'portlets.xml']
+        relations_data = archive[u'relations.xml']
+
         mgr = getThemeManager()
+        relations = mgr[u'relations']
+        relations.purge()
 
-        archive = TarArchive(mode='r', data=file.read())
+        self.importStorage(u'relations', relations_data)
 
-        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']
+        return relations_data
 
     ###################################################################
     # Snapshots
     ###################################################################
 
+    def getSnapshotStorage(self):
+        return getThemeManager().getSnapshotStorage()
+
     def createSnapshot(self):
-        snapshots = getThemeManager().getSnapshotStorage()
+        snapshots = self.getSnapshotStorage()
         snapshot = Snapshot(data=self.exportSite(False))
         snapshots.add(snapshot, snapshot.filename)
-
         self.request.response.setHeader('content-type', 'text/x-json')
         return json.write({'form': {
             'snapshot': snapshot.filename,
@@ -171,17 +179,20 @@
             }})
 
     def listSnapshots(self):
-        return list(getThemeManager().getSnapshotStorage())
-
-    def downloadSnapshot(self, filename):
-        snapshots = getThemeManager().getSnapshotStorage()
+        return list(self.getSnapshotStorage())
 
+    def downloadSnapshot(self, filename=''):
         response = self.request.response
         response.setHeader('content-type', 'application/tgz')
         response.setHeader('Content-disposition',
                            'attachment; filename=%s' % filename)
+        snapshots = self.getSnapshotStorage()
         return snapshots.get(filename).data
 
+    def importSnapshot(self, filename=u''):
+        snapshots = self.getSnapshotStorage()
+        self.importSite(snapshots.get(filename))
+
     ###################################################################
     # Storage
     ###################################################################
@@ -200,7 +211,14 @@
         exporter = getMultiAdapter((storage, request), IDataExporter)
         return exporter()
 
-    def importStorage(self, xml):
+    def importStorage(self, name=u'', xml=u''):
+        request = self.request
+
+        mgr = getThemeManager()
+        storage = mgr[name]
+
+        importer = getMultiAdapter((storage, request), IDataImporter)
+        importer.load(xml)
         print xml
 
     ###################################################################
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to