From 697f9be4dde8ce6cf185dd0c775b52b945b87e5f Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Mon, 3 Dec 2007 17:12:41 +0000
Subject: [PATCH] support deleting selections.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@17970 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Form/SelectionTool.py             | 19 +++++++++++++++++++
 .../SelectionTool_manageViewSelections.dtml   |  4 +++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py
index 852434306a..566b3856ce 100644
--- a/product/ERP5Form/SelectionTool.py
+++ b/product/ERP5Form/SelectionTool.py
@@ -88,6 +88,17 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
                              , 'manage_configure' )
     manage_configure = DTMLFile( 'SelectionTool_configure', _dtmldir )
 
+    security.declareProtected( ERP5Permissions.ManagePortal
+                             , 'manage_deleteSelection' )
+    def manage_deleteSelection(self, selection_name, REQUEST=None):
+      """
+        Relete a specified selection
+      """
+      self._deleteSelectionFromContainer(selection_name)
+      if REQUEST is not None:
+        return REQUEST.RESPONSE.redirect('%s/%s' %
+                (self.absolute_url(), 'manage_viewSelections'))
+
     # storages of SelectionTool
     storage_list = ('Persistent Mapping', 'Memcached Tool')
 
@@ -1276,6 +1287,14 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
       else:
         self._getPersistentContainer(user_id)[selection_name] = aq_base(selection)
 
+    def _deleteSelectionFromContainer(self, selection_name):
+      user_id = self._getUserId()
+      if user_id is None: return None
+      if self.isMemcachedUsed():
+        del(self._getMemcachedContainer()['%s-%s' % (user_id, selection_name)])
+      else:
+        del(self._getPersistentContainer(user_id)[selection_name])
+
     def _getSelectionNameListFromContainer(self):
       if self.isMemcachedUsed():
         return []
diff --git a/product/ERP5Form/dtml/SelectionTool_manageViewSelections.dtml b/product/ERP5Form/dtml/SelectionTool_manageViewSelections.dtml
index bc3dd86e69..beff3fdd72 100644
--- a/product/ERP5Form/dtml/SelectionTool_manageViewSelections.dtml
+++ b/product/ERP5Form/dtml/SelectionTool_manageViewSelections.dtml
@@ -17,14 +17,16 @@ This page show the active selections for the current user.
 
 <table cellspacing="0" cellpadding="2" border="1">
   <tr>
+    <th> Action </th>
     <th> Selection Name </th>
     <th> Selection Parameters </th>
   </tr>
 
   <dtml-in getSelectionNameList>
    <tr>
+    <td><a href="manage_deleteSelection?selection_name=<dtml-var sequence-item>">Delete</a></td>
     <td> <dtml-var sequence-item></td>
-    <td> <dtml-var 
+    <td> <dtml-var
       expr="getSelectionParams(_['sequence-item'])" html_quote></td>
    </tr>
   </dtml-in>
-- 
2.30.9