diff MPIWGFolder.py @ 10:c711fe75d0ac

order by weight form for MPIWGFolder. more cleanup.
author casties
date Tue, 26 Feb 2013 20:39:34 +0100
parents bca61e893fcc
children ee79f6ba8d01
line wrap: on
line diff
--- a/MPIWGFolder.py	Fri Feb 15 20:51:34 2013 +0100
+++ b/MPIWGFolder.py	Tue Feb 26 20:39:34 2013 +0100
@@ -8,15 +8,17 @@
 class MPIWGFolder(Folder):
     """special Folder object for MPIWG website """
 
-    meta_type="MPIWGFolder"
+    meta_type = "MPIWGFolder"
 
-    manage_options=Folder.manage_options+(
-        {'label':'Change Weight','action':'changeWeightForm'},
-        {'label':'Main Config','action':'changeForm'},
+    manage_options = Folder.manage_options + (
+        {'label':'Change Weight', 'action':'changeWeightForm'},
+        {'label':'Rearrange Weights', 'action':'changeWeightsForm'},
+        {'label':'Configure', 'action':'changeForm'},
         )
 
     changeWeightForm = PageTemplateFile('zpt/MPIWGFolderChangeWeight', globals())
     changeForm = PageTemplateFile('zpt/MPIWGFolderConfig', globals())
+    changeWeightsForm = PageTemplateFile('zpt/folder/manage_change_weights', globals())
 
     def __init__(self, id, title=None, weight=0, canonicalName=None):
         self.id = str(id)
@@ -31,16 +33,35 @@
         else:
             self.canonicalName = canonicalName
 
-    def changeWeight(self,weight,RESPONSE=None):
+    def getNavItems(self):
+        """returns sorted list of sub-items"""
+        # get all nav-type items
+        items = self.objectItems(self.nav_meta_types)
+        # unpack into simple list and omit empty titles
+        items = [s[1] for s in items if s[1].title != ""]
+        # sort by weight
+        items.sort(key=lambda x:int(x.weight))
+        return items
+
+    def changeWeight(self, weight, RESPONSE=None):
         """change weight"""
-        self.weight=weight
+        self.weight = weight
         if RESPONSE is not None:
             RESPONSE.redirect('manage_main')
 
-    def deleteObject(self,id):
-        """ delete an object inside the MPIWGFolder """
-        if self.hasObject(id):
-            self._delObject(id)
+    def changeWeightsInFolder(self, REQUEST=None):
+        """change all weights of a collection"""
+        ret = ""
+        form = REQUEST.form
+        resources = self.getNavItems()
+        for resource in resources:
+            try:
+                id = resource.getId()
+                ret += id + "   " + form[id] + "\n"
+                resource.changeWeight(form[id])
+            except Exception, e:
+                ret += "ERROR: %s\n"%e
+        return ret
 
     def changeMPIWGFolder(self, title=None, weight=None, canonicalName=None, RESPONSE=None):
         """change everything"""
@@ -62,13 +83,13 @@
 
 def manage_addMPIWGFolderForm(self):
     """Form for adding"""
-    pt=PageTemplateFile('zpt/AddMPIWGFolder', globals()).__of__(self)
+    pt = PageTemplateFile('zpt/AddMPIWGFolder', globals()).__of__(self)
     return pt()
 
-def manage_addMPIWGFolder(self, id, title=None,weight=0,RESPONSE=None):
+def manage_addMPIWGFolder(self, id, title=None, weight=0, RESPONSE=None):
     "Add a MPIWG Folder."
-    newObj=MPIWGFolder(id,title,weight)
-    self.Destination()._setObject(id,newObj)
+    newObj = MPIWGFolder(id, title, weight)
+    self.Destination()._setObject(id, newObj)
     if RESPONSE is not None:
         RESPONSE.redirect('manage_main')