[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/ Members roster view and template.

Charlie Clark charlie at begeistert.org
Fri Sep 24 19:07:49 EDT 2010


Log message for revision 116796:
  Members roster view and template.
  delete_members.pt renamed to members_delete.pt for grouping purposes
  TODO updated.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/TODO.txt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml
  D   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt
  A   Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_list.pt

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/TODO.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/TODO.txt	2010-09-24 23:02:27 UTC (rev 116795)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/TODO.txt	2010-09-24 23:07:48 UTC (rev 116796)
@@ -36,12 +36,15 @@
 
   [ ] member roster:
       
-      members_manage_form.py
-      members_manage_template.pt
+      roster.pt -> members.Roster
+                   members_list.pt
+      
+      members_manage_form.py -> members.Manage
+      members_manage_template.pt -> members.pt
       members_add_control.py
       members_delete_control.py
-      members_delete_form.py
-      members_delete_template_template.py
+      members_delete_form.py -> members.Manage
+      members_delete_template_template.py -> members_delete.pt
 
 
   [ ] complete this todo list

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml	2010-09-24 23:02:27 UTC (rev 116795)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/configure.zcml	2010-09-24 23:07:48 UTC (rev 116796)
@@ -77,6 +77,15 @@
       layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
       name="members.html"
       class=".members.Manage"
+      permission="cmf.ManageUsers"
+      />
+
+  <browser:page
+      for="Products.CMFCore.interfaces.ISiteRoot"
+      layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
+      name="roster.html"
+      class=".members.Roster"
+      template="members_list.pt"
       permission="cmf.ListPortalMembers"
       />
   

Deleted: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt	2010-09-24 23:02:27 UTC (rev 116795)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt	2010-09-24 23:07:48 UTC (rev 116796)
@@ -1,25 +0,0 @@
-<html metal:use-macro="context/@@standard_macros/page">
-<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">
-
-  <tal:block repeat="widget view/widgets"
-             replace="structure widget/hidden" />
-  
- <p i18n:translate="">The following members - including all their data, home
-  folders and roles - are selected for deletion:</p>
- <p><strong tal:content="view/status">MEMBERS</strong></p>
- 
- <div class="buttons">
-   <tal:loop tal:repeat="action view/delete_actions"
-    tal:replace="structure action/render" />
- </div>
-
-</form>
-</metal:slot>
-
-</body>
-</html>

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2010-09-24 23:02:27 UTC (rev 116795)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py	2010-09-24 23:07:48 UTC (rev 116796)
@@ -7,7 +7,10 @@
 from zope.interface import Interface
 from zope.formlib import form
 from zope.schema import Bool, TextLine, Date, getFieldsInOrder, List, Choice
+from zope.sequencesort.ssort import sort
 
+from ZTUtils import LazyFilter
+
 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
 
 from Products.CMFCore.utils import getToolByName
@@ -146,3 +149,38 @@
         mtool = self._getTool('portal_membership')
         mtool.deleteMembers(self._get_ids(data))
         return self.request.response.redirect(self.request.URL)
+
+
+class Roster(BatchViewBase):
+    
+    hidden_fields = form.FormFields(IBatchForm)
+    form_fields = form.FormFields()
+    actions = ()
+    template = ViewPageTemplateFile("members_list.pt")
+    
+    def mtool(self):
+        return self._getTool('portal_membership')
+    
+    def isUserManager(self):
+        return self.mtool().checkPermission('Manage users',
+                          self.mtool().getMembersFolder()
+                                            )
+                                            
+    @memoize
+    def _get_items(self):
+        (key, reverse) = self.context.getDefaultSorting()
+        items = self.mtool().getRoster()
+        items = sort(items, ((key, 'cmp', reverse and 'desc' or 'asc'),))
+        return items
+        return LazyFilter(items, skip='View')
+                          
+    def listBatchItems(self):
+        members = []
+        for item in self._getBatchObj():
+            member = item
+            member['home'] = self.mtool().getHomeUrl(item['id'],
+                                verifyPermission=1)
+            member['listed'] = member['listed'] and _(u"Yes") or _("No")
+            members.append(member)
+        return members
+             
\ No newline at end of file

Copied: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt (from rev 116792, Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt)
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_delete.pt	2010-09-24 23:07:48 UTC (rev 116796)
@@ -0,0 +1,25 @@
+<html metal:use-macro="context/@@standard_macros/page">
+<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">
+
+  <tal:block repeat="widget view/widgets"
+             replace="structure widget/hidden" />
+  
+ <p i18n:translate="">The following members - including all their data, home
+  folders and roles - are selected for deletion:</p>
+ <p><strong tal:content="view/status">MEMBERS</strong></p>
+ 
+ <div class="buttons">
+   <tal:loop tal:repeat="action view/delete_actions"
+    tal:replace="structure action/render" />
+ </div>
+
+</form>
+</metal:slot>
+
+</body>
+</html>

Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_list.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_list.pt	                        (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members_list.pt	2010-09-24 23:07:48 UTC (rev 116796)
@@ -0,0 +1,37 @@
+<html metal:use-macro="context/@@standard_macros/page">
+<body>
+
+<metal:slot metal:fill-slot="body">
+
+<h2 i18n:translate="">Portal Members</h2>
+
+<table class="SearchResults">
+<thead>
+ <tr>
+  <th i18n:translate="">Member</th>
+  <th tal:condition="view/isUserManager" i18n:translate="">Listed?</th>
+ </tr>
+</thead>
+<tbody>
+ <tr tal:repeat="member view/listBatchItems">
+  <td>
+   <a href="www.example.org"
+       tal:condition="member/home"
+       tal:attributes="href member/home"
+       tal:content="member/id">name</a>
+   <tal:block condition="not:member/home" replace="member/id" />
+  </td>
+  <td tal:condition="view/isUserManager"
+      tal:content="member/listed">
+  </td>
+ </tr>
+</tbody>
+</table>
+
+<metal:macro metal:use-macro="context/@@batch_widget/navigation" />
+<metal:macro metal:use-macro="context/@@batch_widget/pagination" />
+
+</metal:slot>
+
+</body>
+</html>



More information about the checkins mailing list