You are not logged in Log in Join
You are here: Home » Download Zope Products » Content Management Framework (ne "PTK") » ZWiki » NewPTKArchitecture

Log in
Name

Password

 
 

History for NewPTKArchitecture

??changed:
-
PTK II

  At the base of the portal we have the following "tool" objects.  DTML in the portal uses these tools to access services.  The tools can be subclassed or replaced at the site.  These tools should help managers to understand all the features that PTK provides.  DemoPortal provides some small extensions to the architecture.

  *See NewPTKArchitectureDiscussion.*

 - "Portal Objects diagram":PTKII_Portal_Objects.gif 

 - "Portal Tools diagram":PTKII_Portal_Tools.gif 

Permissions

  - 'Manage portal' -- default roles: ('Manager',)

  - 'Add portal member' -- default roles: ('Anonymous',)

  - 'Set own password' -- default roles: ('Member',)

  - 'Set own properties' -- default roles: ('Member',)

  - 'Mail forgotten password' -- default roles: ('Anonymous',)

  - 'Add portal content' -- default roles: ('Member',)

  - 'Modify portal content' -- default roles: ('Owner', 'Manager',)

  - 'Request review' -- default roles: ('Member',)

  - 'Review portal content' -- default roles: ('Reviewer',)

  - 'Access future portal content' -- default roles: ('Reviewer',)



Singleton strategy objects



  portal_membership

    Deals with the details of how and where to store and retrieve members and their member folders.

      Anonymous permission

        getAuthenticatedMember(self) --
          Returns a PortalMember object corresponding to the authenticated user.

        isAnonymousUser(self) --
          Returns 1 if the user is not logged in, otherwise 0.

        checkPermission(self, permissionName, object) --
          Checks whether the authenticated user has the named permission on the given object.  Does not raise an exception.

        credentialsChanged(self, password) --
          Notifies the authentication mechanism that the authenticated user has changed passwords.  This can be used to update the authentication cookie.  Note that this call should *not* cause any change at all to user databases.

        getHomeFolder(self, id) --
          Returns a member's home folder object.
        
        getHomeUrl(self, id) --
          Returns the URL to a member's home folder.

      'Manage portal' permission

        getMemberById(self, id) --
          Returns the PortalMember object with the given id.

        listMemberIds(self) --
          Lists the id's of all members.  This may eventually be replaced with a set of methods for querying pieces of the list rather than the entire list at once.

        listMembers(self) --
          Gets the list of all members.

      No permission (called only by Python)

        addMember(self, id, password, roles, domains) --
          Adds the given member.  Security checks will have already been performed.

        listActions(self, isAnonymous, portal_url) --
          Returns a list of actions available to the user.






  portal_registration

    Establishes policies for member registration.  Depends on portal_membership.  Is not aware of membership storage details.

      Anonymous permission

        isRegistrationAllowed(self, REQUEST) --
          Returns a boolean value indicating whether the user is allowed to add a member to the portal.  Should always return 0 if the user does not have the 'Add Portal Member' permission.

        testPasswordValidity(self, password, confirm=None) --
          If the password is valid, returns None.  If not, returns a string explaining why.

        testPropertiesValidity(self, properties, member=None) --
          If the properties are valid, returns None.  If not, returns a string explaining why.

        generatePassword(self) --
          Generates a password which is guaranteed to pass the isPasswordAllowed test.

      'Add Portal member' permission

        addMember(self, id, password, roles=('Member',), domains='', properties=None) --
          Creates a PortalMember and returns it.  The properties argument can be a mapping with additional member properties.  Raises an exception if the given id already exists, the password does not comply with the policy in effect, or the authenticated user is not allowed to grant one of the roles listed (where 'Member' is a special role that can always be granted); these conditions should be detected before the fact so that a cleaner message can be printed.

        isMemberIdAllowed(self, id) --
          Returns 1 if the member ID is not in use and is not reserved.

      No permission

        afterAdd(self, member, id, password, properties) --
          Called after a member has been added successfully.

      'Mail forgotten password' permission

        mailPassword(self, forgotten_userid, REQUEST) --
          Finds the given userid and executes a method called "mail_password_template" with member and password parameters.  Raises an exception if the userid is not found.

      'Set own password' permission

        setPassword(self, password, domains=None) --
          Allows the authenticated member to set their own password.

      'Set own properties' permission
            
        setProperties(self, properties) --
          Allows the authenticated member to set their own properties.






  portal_workflow 

      Anonymous permission

        getStateFor(self, content) --
          Returns the current workflow state of content.  State is implemented as a mapping object.  (ShaneH: or should it be a Python object?)

        listAllowableTransitionsFor(self, content) --
          Returns the list of transition names which are available to the current user from the state of content.

        changeStateFor(self, content, transition, comment, **kw) --
          Executes the given transition name on content with the keyword arguments as modifiers and the comment as a history attribute. Returns content, which may be in a new location. Remember there are no implicit security assertions; implementations will need to add code that calls 'checkPermission'.  (The fact that the objects can move eliminates the need for review_policy(), which was a hook for changing the role/permission mappings.  Role/permission mappings are not intended to be changed or set by application code.)

        listAddableTypesFor(self, container) --
          Lists the meta types that are allowed to be added by the user to the given container.

      No permission

        listActions(self, isAnonymous, portal_url) --
          Returns a list of actions available to the user.






  portal_catalog

      Anonymous permission

        searchResults(self, REQUEST=None, **kw) --
          Calls the catalog's searchResults() method with extra arguments that filter the results to what the user is allowed to see.  Unless the user has the "Access future portal content" permission, content with a 'Date' property set later than the current date will be filtered out.

        __call__(self, REQUEST=None, **kw) --
          Same as searchResults().

        getpath(self, data_record_id_) --
          A call to ZCatalog.

      No permission (called only by Python code)

        reindexObject(self, object) --
          Notifies the catalog of a change to object.

        indexObject(self, object) --
          Ensures object is in the catalog.

        unindexObject(self, object) --
          Removes object from the catalog.







  portal_discussion

      Anonymous permission

        getDiscussionFor(self, content) --
          Gets the PortalDiscussion object that applies to content.
[65 more lines...]