[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/ Members now display correctly.
Charlie Clark
charlie at begeistert.org
Thu Sep 23 16:19:26 EDT 2010
Log message for revision 116773:
Members now display correctly.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.pt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt 2010-09-23 18:09:32 UTC (rev 116772)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/delete_members.pt 2010-09-23 20:19:26 UTC (rev 116773)
@@ -14,7 +14,7 @@
<p><strong tal:content="view/status">MEMBERS</strong></p>
<div class="buttons">
- <tal:loop tal:repeat="action view/actions"
+ <tal:loop tal:repeat="action view/delete_actions"
tal:replace="structure action/render" />
</div>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.pt 2010-09-23 18:09:32 UTC (rev 116772)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.pt 2010-09-23 20:19:26 UTC (rev 116773)
@@ -9,7 +9,8 @@
tal:condition="exists: request/portal_status_message"
tal:content="request/portal_status_message"></p>
-<form action="." method="post" tal:attributes="action request/ACTUAL_URL">
+<form action="." method="post"
+ tal:attributes="action request/ACTUAL_URL">
<tal:block repeat="widget view/hidden_widgets"
replace="structure widget/hidden" />
@@ -23,22 +24,24 @@
</tr>
</thead>
<tbody>
- <tr tal:repeat="item view/_get_items"
+ <tr tal:repeat="item view/listBatchItems"
tal:attributes="class python: (repeat['item'].even() and 'row-hilite') or None">
- <td><input class="checkboxType"
- tal:attributes="id string:${item/id}.select;
- name string:${item/id}.select"
- type="checkbox" value="on"/></td>
- <td><a href="" tal:content="item/id" tal:attributes="href item/absolute_url"></a>
+ <td tal:content="structure python:view.widgets[item.widget]()"></td>
+ <td><a href="" tal:condition="item/home"
+ tal:content="item/name"
+ tal:attributes="href item/home">User name</a>
+ <tal:block condition="not: item/home" replace="item/name" />
</td>
- <td><a href="" tal:content="item/email" tal:attributes="href string:mailto:${item/email}"></a></td>
- <td tal:content="python: item.login_time == '2000/01/01' and '---' or item.login_time.Date()"></td>
+ <td><a href=""
+ tal:content="item/email"
+ tal:attributes="href string:mailto:${item/email}"></a></td>
+ <td tal:content="item/login_time"></td>
</tr>
</tbody>
</table>
<div class="buttons">
- <tal:loop tal:repeat="action view/actions"
+ <tal:loop tal:repeat="action view/manage_actions"
tal:replace="structure action/render" />
</div>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py 2010-09-23 18:09:32 UTC (rev 116772)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/membership/members.py 2010-09-23 20:19:26 UTC (rev 116773)
@@ -2,7 +2,6 @@
Forms for managing members
"""
from logging import getLogger
-
LOG = getLogger("Manage Members Form")
from zope.interface import Interface
@@ -16,6 +15,7 @@
from Products.CMFDefault.formlib.schema import EmailLine
from Products.CMFDefault.utils import Message as _
+from Products.CMFDefault.browser.utils import memoize
from Products.CMFDefault.browser.content.folder import BatchViewBase
from Products.CMFDefault.browser.content.interfaces import IBatchForm
@@ -44,14 +44,47 @@
)
+class MemberProxy(object):
+ """Utility class wrapping a member"""
+
+ def __init__(self, member):
+ self.context = member
+
+ def get(self, property):
+ return self.context.getProperty(property)
+
+ @property
+ def login_time(self):
+ login_time = self.get('login_time')
+ return login_time == '2000/01/01' and '---' or login_time.Date()
+
+ @property
+ def name(self):
+ return self.context.getId()
+
+ @property
+ def home(self):
+ return self.get('getHomeUrl')
+
+ @property
+ def email(self):
+ return self.get('email')
+
+ @property
+ def widget(self):
+ return "%s.select" % self.name
+
+
class Manage(BatchViewBase, EditFormBase):
label = _(u"Manage Members")
template = ViewPageTemplateFile("members.pt")
delete_template = ViewPageTemplateFile("delete_members.pt")
members_selected = False
+ form_fields = form.FormFields()
+ errors = ()
- actions = form.Actions(
+ manage_actions = form.Actions(
form.Action(
name='new',
label=_(u'New...'),
@@ -60,49 +93,56 @@
form.Action(
name='select',
label=_(u'Delete...'),
- condition="no_members_selected",
- validator='validate_items',
- success='handle_select_for_deletion'
- ),
+ success='handle_select_for_deletion',
+ validator=('validate_items')
+ )
+ )
+
+ delete_actions = form.Actions(
form.Action(
name='delete',
label=_(u'Delete'),
- # condition="members_are_selected",
success='handle_delete',
failure='handle_failure'),
form.Action(
name='cancel',
label=_(u'Cancel'),
- condition="members_are_selected",
)
)
+ actions = manage_actions + delete_actions
hidden_fields = form.FormFields(IBatchForm)
def _get_items(self):
mtool = self._getTool('portal_membership')
return mtool.listMembers()
+
+ def _get_ids(self, data):
+ """Identify objects that have been selected"""
+ LOG.info(str(data))
+ ids = [k.split(".select")[0] for k, v in data.items()
+ if v is True]
+ return ids
- def form_fields(self):
- """Create content field objects only for batched items"""
+ def member_fields(self):
+ """Create content field objects only for batched items
+ Also create pseudo-widget for each item
+ """
+ f = IMemberItem['select']
+ members = []
fields = form.FormFields()
for item in self._getBatchObj():
- for name, field in getFieldsInOrder(IMemberItem):
- field = form.FormField(field, name, item.id)
- fields += form.FormFields(field)
+ field = form.FormField(f, 'select', item.id)
+ fields += form.FormFields(field)
+ members.append(MemberProxy(item))
+ self.listBatchItems = members
return fields
def setUpWidgets(self, ignore_request=False):
"""Create widgets for the members"""
super(Manage, self).setUpWidgets(ignore_request)
- self.widgets = form.setUpWidgets(self.form_fields(), self.prefix,
+ self.widgets = form.setUpWidgets(self.member_fields(), self.prefix,
self.context, self.request, ignore_request=ignore_request)
-
- def no_members_selected(self, action=None):
- return not self.members_selected
-
- def members_are_selected(self, action=None):
- return self.members_selected
def validate_items(self, action=None, data=None):
"""Check whether any items have been selected for
@@ -129,8 +169,7 @@
return self.delete_template()
def handle_delete(self, action, data):
+ """Delete selected members"""
mtool = self._getTool('portal_membership')
mtool.deleteMembers(self.selected(data))
- self.members_selected = False
return self.request.response.redirect(self.request.URL)
-
\ No newline at end of file
More information about the checkins
mailing list