[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/ - improved members delete form

Yvo Schubbe cvs-admin at zope.org
Mon Jun 25 08:30:10 UTC 2012


Log message for revision 127066:
  - improved members delete form

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/members.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2012-06-25 04:04:51 UTC (rev 127065)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2012-06-25 08:30:05 UTC (rev 127066)
@@ -154,7 +154,7 @@
         the requested action."""
         super(Manage, self).validate(action, data)
         if self._get_ids(data) == []:
-            return [_(u"Please select one or more items first.")]
+            return [_(u"Please select one or more members first.")]
         else:
             return []
 
@@ -165,7 +165,12 @@
     def handle_select_for_deletion(self, action, data):
         """Identify members to be deleted and redirect to confirmation
         template"""
-        self.guillotine = ", ".join(self._get_ids(data))
+        mtool = getUtility(IMembershipTool)
+        members = []
+        for member_id in self._get_ids(data):
+            fullname = mtool.getMemberById(member_id).getProperty('fullname')
+            members.append('{0} ({1})'.format(fullname, member_id))
+        self.guillotine = ", ".join(members)
         return self.delete_template()
 
     def handle_delete(self, action, data):
@@ -173,12 +178,14 @@
         mtool = getUtility(IMembershipTool)
         mtool.deleteMembers(self._get_ids(data))
         self.status = _(u"Selected members deleted.")
-        self._setRedirect('portal_actions', "global/manage_members")
+        self._setRedirect('portal_actions', "global/manage_members",
+                          '{0}.b_start'.format(self.prefix))
 
     def handle_cancel(self, action, data):
         """Don't delete anyone, return to list"""
         self.status = _(u"Deletion broken off.")
-        self._setRedirect('portal_actions', "global/manage_members")
+        self._setRedirect('portal_actions', "global/manage_members",
+                          '{0}.b_start'.format(self.prefix))
 
 
 class Roster(BatchViewBase):

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt	2012-06-25 04:04:51 UTC (rev 127065)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt	2012-06-25 08:30:05 UTC (rev 127066)
@@ -2,10 +2,11 @@
 <body>
 
 <metal:slot metal:fill-slot="body" i18n:domain="cmf_default">
-   <h1 i18n:translate="">Delete Members</h1>
-   
-   <form action="." method="post" tal:attributes="action request/ACTUAL_URL">
+<h1 i18n:translate="">Delete Members</h1>
 
+<form action="." method="post" tal:attributes="action request/ACTUAL_URL">
+  <tal:block repeat="widget view/hidden_widgets"
+             replace="structure widget/hidden" />
   <tal:block repeat="widget view/widgets"
              replace="structure widget/hidden" />
   
@@ -13,11 +14,10 @@
   folders and roles - are selected for deletion:</p>
  <p><strong tal:content="view/guillotine">MEMBERS</strong></p>
  
- <div class="buttons">
+ <div class="FormButtons">
    <tal:loop tal:repeat="action view/delete_actions"
     tal:replace="structure action/render" />
  </div>
-
 </form>
 </metal:slot>
 

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/members.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/members.txt	2012-06-25 04:04:51 UTC (rev 127065)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/members.txt	2012-06-25 08:30:05 UTC (rev 127066)
@@ -36,7 +36,7 @@
 Click delete with no member selected
     >>> browser.open("http://localhost/site/@@members.html")
     >>> browser.getControl(name="form.actions.select").click()
-    >>> "[[cmf_default][Please select one or more items first.]]" in browser.contents
+    >>> "[[cmf_default][Please select one or more members first.]]" in browser.contents
     True
 
 Click delete with member selected

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2012-06-25 04:04:51 UTC (rev 127065)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/tests/test_members.py	2012-06-25 08:30:05 UTC (rev 127066)
@@ -47,6 +47,9 @@
     def __init__(self):
         self.members = {}
 
+    def getMemberById(self, id):
+        return self.members[id]
+
     def listMembers(self):
         return self.members.values()
 
@@ -121,12 +124,13 @@
                          ['stupid.name.select'])
 
     def test_handle_select_for_deletion(self):
+        self._make_one("Alice")
         view = Manage(self.site, TestRequest())
-        self.assertTrue(view.guillotine == None)
+        self.assertEqual(view.guillotine, None)
         # Catch exception raised when template tries to render
         self.assertRaises(AttributeError,
                 view.handle_select_for_deletion, None, {"Alice.select": True})
-        self.assertTrue(view.guillotine == "Alice")
+        self.assertEqual(view.guillotine, "FULL NAME (Alice)")
 
     def test_handle_delete(self):
         self._make_one("Bob")



More information about the checkins mailing list