Édition des propriétés des membres, à partir de l'annuaire, à nouveau possible.
[Plinn.git] / MemberDataTool.py
index a75f503..4eea631 100755 (executable)
@@ -27,6 +27,7 @@ from Products.CMFCore.interfaces import IMemberDataTool
 from Globals import InitializeClass
 from Acquisition import aq_inner, aq_parent, aq_base
 from AccessControl import ClassSecurityInfo
+from OFS.SimpleItem import SimpleItem
 from Products.CMFCore.MemberDataTool import MemberDataTool as BaseTool
 from Products.CMFCore.MemberDataTool import MemberData as BaseData
 from Products.CMFCore.MemberDataTool import MemberAdapter as BaseMemberAdapter
@@ -57,52 +58,11 @@ class MemberDataTool (BaseTool):
                self._setProperty('given_name', '', 'string')
                self._setProperty('wysiwyg_editor', 'FCK', 'string')
                self._setProperty('photo_width', 800, 'int')
-
-#      security.declarePrivate('wrapUser')
-#      def wrapUser(self, u):
-#              '''
-#              If possible, returns the Member object that corresponds
-#              to the given User object.
-#              '''
-#              id = u.getId()
-#              members = self._members
-#              if not id in members:
-#                      base = aq_base(self)
-#                      members[id] = MemberData(base, id)
-#              # Return a wrapper with self as containment and
-#              # the user as context.
-#              return members[id].__of__(self).__of__(u)
-
-#      security.declarePrivate('wrapUser')
-#      def wrapUser(self, u):
-#              """
-#              If possible, returns the Member object that corresponds
-#              to the given User object.
-#              """
-#              id = u.getId()
-#              members = self._members
-#              if not members.has_key(id):
-#                      # Get a temporary member that might be
-#                      # registered later via registerMemberData().
-#                      temps = self._v_temps
-#                      if temps is not None and temps.has_key(id):
-#                              m = temps[id]
-#                      else:
-#                              base = aq_base(self)
-#                              m = MemberData(base, id)
-#                              if temps is None:
-#                                      self._v_temps = {id:m}
-#                                      if hasattr(self, 'REQUEST'):
-#                                              # No REQUEST during tests.
-#                                              self.REQUEST._hold(CleanupTemp(self))
-#                              else:
-#                                      temps[id] = m
-#              else:
-#                      m = members[id]
-#              # Return a wrapper with self as containment and
-#              # the user as context.
-#              return m.__of__(self).__of__(u)
-
+       
+       def wrapUser(self, u) :
+           wu = super(MemberDataTool, self).wrapUser(u)
+           return wu.__of__(self).__of__(u)
+    
 
        def __bobo_traverse__(self, REQUEST, name):
                if hasattr(self,name):
@@ -114,13 +74,15 @@ class MemberDataTool (BaseTool):
 InitializeClass(MemberDataTool)
 
 
-class MemberAdapter(BaseMemberAdapter):
+class MemberAdapter(BaseMemberAdapter, SimpleItem, DynamicType, CMFCatalogAware):
 
        """Member data adapter.
        """
 
        adapts(IUser, IMemberDataTool)
        implements(IMember)
+       
+       portal_type = 'Member Data'
 
        security = ClassSecurityInfo()
        
@@ -135,6 +97,16 @@ class MemberAdapter(BaseMemberAdapter):
                memberGivenName = self.getProperty('given_name', default='')
                memberId = self.getId()
                return formatFullName(memberName, memberGivenName, memberId, nameBefore=nameBefore)
+
+       def getMemberSortableFormat(self) :
+               """ Return a specific format of full name for alphabetical sorting """
+               return self.getMemberFullName(nameBefore = 1).lower()
+       
+       # security overload
+       security.declareProtected(SetMemberProperties, 'setMemberProperties')
+       def setMemberProperties(self, mapping):
+               super(MemberAdapter, self).setMemberProperties(mapping)
+               self.reindexObject()
     
 
 InitializeClass(MemberAdapter)
@@ -178,24 +150,26 @@ class MemberData (BaseData, DynamicType, CMFCatalogAware):
                if domains is not None:
                        u.domains = domains
 
-
-       def getMemberFullName(self, nameBefore=1) :
-               """ Return the best full name representation """
-               memberName = self.getProperty('name', default='')
-               memberGivenName = self.getProperty('given_name', default='')
-               memberId = self.getProperty('id', default='')
-               return formatFullName(memberName, memberGivenName, memberId, nameBefore=nameBefore)
-
-       def getMemberSortableFormat(self) :
-               """ Return a specific format of full name for alphabetical sorting """
-               return self.getMemberFullName(nameBefore = 1).lower()
-
-
-       ## overload default security declaration
-       security.declareProtected(SetMemberProperties, 'setMemberProperties')
-       def setMemberProperties(self, mapping):
-               BaseData.setMemberProperties(self, mapping)
-               self.reindexObject()
+# migré
+#      def getMemberFullName(self, nameBefore=1) :
+#              """ Return the best full name representation """
+#              memberName = self.getProperty('name', default='')
+#              memberGivenName = self.getProperty('given_name', default='')
+#              memberId = self.getProperty('id', default='')
+#              return formatFullName(memberName, memberGivenName, memberId, nameBefore=nameBefore)
+
+# migré
+#      def getMemberSortableFormat(self) :
+#              """ Return a specific format of full name for alphabetical sorting """
+#              return self.getMemberFullName(nameBefore = 1).lower()
+
+
+# migré
+#      ## overload default security declaration
+#      security.declareProtected(SetMemberProperties, 'setMemberProperties')
+#      def setMemberProperties(self, mapping):
+#              BaseData.setMemberProperties(self, mapping)
+#              self.reindexObject()
 
        security.declarePrivate('manage_beforeDelete')
        def manage_beforeDelete(self) :