Ejemplo n.º 1
0
    def _physicalPathToVirtualPath(self, path):
        """
      Remove the path to the VirtualRoot from a physical path
      and add the path to the WebSite if any
    """
        if isinstance(path, str):
            path = path.split('/')

        # Every Web Section acts as a mini site though layout for document editing is the root layout
        #website_path = self._v_request.get(WEBSECTION_KEY, self._v_request.get(WEBSITE_KEY, None))
        # Only consider Web Site for absolute_url
        request = getattr(self, '_v_request', None)
        if request is None: request = self._v_request = get_request()
        # In ignore_layout case, we only remove empty element from path
        # XXX more support required for ignore_layout?
        if request.get('ignore_layout', None):
            return HTTPRequest.physicalPathToVirtualPath(request, path)
        website_path = request.get(WEBSITE_KEY, None)
        select_language = request.get(WEBSITE_LANGUAGE_KEY, None)
        if website_path:
            website_path = tuple(website_path)  # Make sure all path are tuples
            path = tuple(path)  # Make sure all path are tuples
            if select_language:
                website_path = website_path + (select_language,
                                               )  # Add the language part
            # Search for the common part index
            # XXX more testing should be added to check
            # if the URL is the kind of URL which is a Web Site
            common_index = 0
            i = 0
            path_len = len(path)
            for name in website_path:
                if i >= path_len:
                    break
                if path[i] == name:
                    common_index = i
                i += 1
            # Insert the web site path after the common part of the path
            if path_len > common_index + 1:
                path = website_path + path[common_index + 1:]
        rpp = request.other.get('VirtualRootPhysicalPath', ('', ))
        i = 0
        for name in rpp[:len(path)]:
            if path[i] == name:
                i = i + 1
            else:
                break
        #if self._v_request.has_key(DOCUMENT_NAME_KEY):
        #  # Replace the last id of the path with the name which
        #  # was used to lookup the document
        #  path = path[:-1] + (self._v_request[DOCUMENT_NAME_KEY],)
        return path[i:]
Ejemplo n.º 2
0
  def _physicalPathToVirtualPath(self, path):
    """
      Remove the path to the VirtualRoot from a physical path
      and add the path to the WebSite if any
    """
    if isinstance(path, str):
      path = path.split( '/')

    # Every Web Section acts as a mini site though layout for document editing is the root layout
    #website_path = self._v_request.get(WEBSECTION_KEY, self._v_request.get(WEBSITE_KEY, None))
    # Only consider Web Site for absolute_url
    request = getattr(self, '_v_request', None)
    if request is None: request = self._v_request = get_request()
    # In ignore_layout case, we only remove empty element from path
    # XXX more support required for ignore_layout?
    if request.get('ignore_layout', None):
      return HTTPRequest.physicalPathToVirtualPath(request, path)
    website_path = request.get(WEBSITE_KEY, None)
    select_language = request.get(WEBSITE_LANGUAGE_KEY, None)
    if website_path:
      website_path = tuple(website_path)    # Make sure all path are tuples
      path = tuple(path)                    # Make sure all path are tuples
      if select_language:
        website_path = website_path + (select_language,)      # Add the language part
      # Search for the common part index
      # XXX more testing should be added to check
      # if the URL is the kind of URL which is a Web Site
      common_index = 0
      i = 0
      path_len = len(path)
      for name in website_path:
        if i >= path_len:
          break
        if path[i] == name:
          common_index = i
        i += 1
      # Insert the web site path after the common part of the path
      if path_len > common_index + 1:
        path = website_path + path[common_index + 1:]
    rpp = request.other.get('VirtualRootPhysicalPath', ('', ))
    i = 0
    for name in rpp[:len(path)]:
      if path[i] == name:
        i = i + 1
      else:
        break
    #if self._v_request.has_key(DOCUMENT_NAME_KEY):
    #  # Replace the last id of the path with the name which
    #  # was used to lookup the document
    #  path = path[:-1] + (self._v_request[DOCUMENT_NAME_KEY],)
    return path[i:]