コード例 #1
0
ファイル: negotiator.py プロジェクト: fourdigits/ftw.subsite
    def getLanguage(self, langs, env):

        if not IFtwSubsiteLayer.providedBy(env):
            return base_negotiator.getLanguage(langs, env)

        # Get current published object
        obj = find_context(env)
        # Filter out CSS/JS and other non contentish objects
        # IFolderish check includes site root
        if not (IContentish.providedBy(obj) or IFolderish.providedBy(obj)):
            return base_negotiator.getLanguage(langs, env)

        nav_root = get_nav_root(obj)

        if ISubsite.providedBy(nav_root):
            # Get language stored on Subsite
            language = nav_root.force_language
            if language:
                return language
            else:
                return base_negotiator.getLanguage(langs, env)

        else:
            # Use normal Negotiator
            return base_negotiator.getLanguage(langs, env)
コード例 #2
0
ファイル: negotiator.py プロジェクト: ucdavis/ftw.subsite
def get_subsite_language(request):
    """Returns None, or a language code."""
    if not IFtwSubsiteLayer.providedBy(request):
        return None

    # Get current published object
    obj = find_context(request)
    # Filter out CSS/JS and other non contentish objects
    # IFolderish check includes site root
    if not (IContentish.providedBy(obj) or IFolderish.providedBy(obj)):
        return None

    nav_root = get_nav_root(obj)

    if ISubsite.providedBy(nav_root):
        # Get language stored on Subsite
        language = nav_root.force_language
        if language:
            return language
        else:
            return None

    else:
        return None
コード例 #3
0
ファイル: test_utils.py プロジェクト: ucdavis/ftw.subsite
 def test_find_context(self):
     # This tests the edge case if no real Request (from a browser)
     # is available. It should return the app
     # All other testcases are tested by test_forcelanguage
     doc = self.portal.get(self.portal.invokeFactory('Document', 'doc'))
     self.assertEquals(self.layer['app'], find_context(doc.REQUEST))