Skip to content
This repository has been archived by the owner on Feb 13, 2020. It is now read-only.

Commit

Permalink
Cleanup and improve error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
projekt01 committed Aug 23, 2006
1 parent 54fa3e1 commit fc83c01
Show file tree
Hide file tree
Showing 15 changed files with 152 additions and 206 deletions.
10 changes: 5 additions & 5 deletions src/z3c/language/negotiator/app.py
Expand Up @@ -17,14 +17,14 @@
"""
__docformat__ = 'restructuredtext'

from persistent import Persistent
from zope.interface import implements
import persistent
import zope.interface

from zope.i18n.interfaces import IUserPreferredLanguages
from zope.i18n.interfaces import INegotiator
from zope.i18n.negotiator import negotiator

from zope.app.container.contained import Contained
from zope.app.container import contained

from z3c.language.session.interfaces import ILanguageSession

Expand All @@ -33,7 +33,7 @@



class Negotiator(Persistent, Contained):
class Negotiator(persistent.Persistent, contained.Contained):
"""Loacal negotiator implementation.
The negotiator let you change the policy, which is a alias
Expand All @@ -57,7 +57,7 @@ class Negotiator(Persistent, Contained):
"""

implements(INegotiator, INegotiatorManager)
zope.interface.implements(INegotiator, INegotiatorManager)

def __init__(self):
self._policy = 'session --> browser --> server'
Expand Down
4 changes: 2 additions & 2 deletions src/z3c/language/negotiator/browser/views.py
Expand Up @@ -38,7 +38,7 @@ def getOfferedLanguages(self):

try:
offeredLanguages = negotiator.offeredLanguages
except:
except AttributeError:
# we don't have a Negotiator instance
# we got the global zope.i18n Negotiator
offeredLanguages = []
Expand All @@ -53,7 +53,7 @@ def hasOfferedLanguages(self):
try:
offeredLanguages = negotiator.offeredLanguages
return True
except:
except AttributeError:
# we don't have a Negotiator instance
# we got the global zope.i18n Negotiator
return False
6 changes: 2 additions & 4 deletions src/z3c/language/negotiator/ftests.py
Expand Up @@ -19,14 +19,12 @@
import unittest

from zope.testing import doctest
from zope.app.testing.functional import FunctionalDocFileSuite
from zope.app.testing.functional import BrowserTestCase

from zope.app.testing import functional


def test_suite():
return unittest.TestSuite((
FunctionalDocFileSuite(
functional.FunctionalDocFileSuite(
"README.txt",
optionflags=doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE),
))
Expand Down
29 changes: 11 additions & 18 deletions src/z3c/language/negotiator/interfaces.py
Expand Up @@ -17,12 +17,10 @@
"""
__docformat__ = 'restructuredtext'

from zope.interface import Interface

import zope.interface
import zope.schema
from zope.schema.interfaces import IVocabularyTokenized
from zope.schema import TextLine
from zope.schema import List
from zope.schema import Choice

from zope.i18n.interfaces import INegotiator

from zope.app.session.interfaces import ISession
Expand All @@ -34,57 +32,52 @@
'session --> browser --> server', 'session --> server']



class INegotiatorManager(Interface):
class INegotiatorManager(zope.interface.Interface):
"""Local negotiator utility manager interface."""

policy = Choice(
policy = zope.schema.Choice(
title=_("Language lookup policy"),
description=_("Defines how the language lookup is working."),
values=language_policies,
default='session --> browser --> server',
required=True)

serverLanguage = TextLine(
serverLanguage = zope.schema.TextLine(
title=_(u"Server language"),
description=_(u"The language used for server policy."),
default=u"en",
required=True,
)

sessionLanguages = List(
sessionLanguages = zope.schema.List(
title=_(u"Session languages"),
description=_(u"A list of available languages in session policy."),
value_type = TextLine(title=_(u"A i18n language."),
value_type = zope.schema.TextLine(title=_(u"A i18n language."),
description=_(u"""A i18n language definition string used in
sessions.""")),
required=False,
)

offeredLanguages = List(
offeredLanguages = zope.schema.List(
title=_(u"Offered languages"),
description=_(u"""A list of offered languages in the skin for the
user to select."""),
value_type = TextLine(title=_(u"A i18n language."),
value_type = zope.schema.TextLine(title=_(u"A i18n language."),
description=_(u"""
A i18n language definition string offerd in the skin for the
user to select.""")),
required=False,
)



class IOfferedLanguages(Interface):

class IOfferedLanguages(zope.interface.Interface):

def getOfferedLanguages():
"""View for listing available (offered) languages."""


def hasOfferedLanguages():
"""View for to check if we have i18n session support."""



class IAvailableTranslationDomainLanguagesVocabulary(IVocabularyTokenized):
"""Available languages."""
115 changes: 57 additions & 58 deletions src/z3c/language/negotiator/tests.py
Expand Up @@ -15,25 +15,24 @@
"""
$Id$
"""

__docformat__ = 'restructuredtext'

import unittest

import zope.interface
import zope.component
from zope.app.testing import ztapi

from zope.i18n.interfaces import IUserPreferredLanguages
from zope.component.testing import PlacelessSetup
from zope.interface import implements

from z3c.language.session.interfaces import ILanguageSession
from z3c.language.negotiator.app import Negotiator



class TestLanguageSession(object):

implements(ILanguageSession)
zope.interface.implements(ILanguageSession)
zope.component.adapts(IUserPreferredLanguages)

def __init__(self, request):
pass
Expand All @@ -43,7 +42,7 @@ def getLanguage(self):


class Env(object):
implements(IUserPreferredLanguages)
zope.interface.implements(IUserPreferredLanguages)

def __init__(self, langs=()):
self.langs = langs
Expand All @@ -52,62 +51,62 @@ def getPreferredLanguages(self):
return self.langs


class NegotiatorTest(PlacelessSetup, unittest.TestCase):
class NegotiatorTest(zope.component.testing.PlacelessSetup,
unittest.TestCase):

def setUp(self):
super(NegotiatorTest, self).setUp()
self.negotiator = Negotiator()
ztapi.provideAdapter(IUserPreferredLanguages, ILanguageSession,
TestLanguageSession)

# def test__getLanguagePolicy(self):
# default = 'session --> browser --> server'
# self.assertEqual(self.negotiator._getLanguagePolicy(), default)
#
# def test__setLanguagePolicy(self):
# self.negotiator.policy = 'server'
# self.assertEqual(self.negotiator.policy, 'server')
# self.assertRaises(
# ValueError, self.negotiator._setLanguagePolicy, 'undefined')
#
# def test_policy(self):
# default = 'session --> browser --> server'
# self.assertEqual(self.negotiator.policy, default)
# self.negotiator.policy = 'server'
# self.assertEqual(self.negotiator.policy, 'server')
#
# def test_serverLanguage(self):
# self.assertEqual(self.negotiator.serverLanguage, None)
# self.negotiator.serverLanguage = 'de'
# self.assertEqual(self.negotiator.serverLanguage, 'de')
#
# def test_sessionLanguages(self):
# self.assertEqual(self.negotiator.sessionLanguages, [])
# self.negotiator.sessionLanguages = ['de', 'en']
# self.assertEqual(self.negotiator.sessionLanguages, ['de', 'en'])
#
# def test_offeredLanguages(self):
# self.assertEqual(self.negotiator.offeredLanguages, [])
# self.negotiator.offeredLanguages = ['de', 'en']
# self.assertEqual(self.negotiator.offeredLanguages, ['de', 'en'])

# def test_getLanguages(self):
# # first set the default policy to 'browser'
# self.negotiator.policy = 'browser'
# self.assertEqual(self.negotiator.policy, 'browser')
#
# _cases = (
# (('en','de'), ('en','de','fr'), 'en'),
# (('en'), ('it','de','fr'), None),
# (('pt-br','de'), ('pt_BR','de','fr'), 'pt_BR'),
# (('pt-br','en'), ('pt', 'en', 'fr'), 'pt'),
# (('pt-br','en-us', 'de'), ('de', 'en', 'fr'), 'en'),
# )
#
# for user_pref_langs, obj_langs, expected in _cases:
# env = Env(user_pref_langs)
# self.assertEqual(self.negotiator.getLanguage(obj_langs, env),
# expected)
zope.component.provideAdapter(TestLanguageSession)

def test__getLanguagePolicy(self):
default = 'session --> browser --> server'
self.assertEqual(self.negotiator._getLanguagePolicy(), default)

def test__setLanguagePolicy(self):
self.negotiator.policy = 'server'
self.assertEqual(self.negotiator.policy, 'server')
self.assertRaises(
ValueError, self.negotiator._setLanguagePolicy, 'undefined')

def test_policy(self):
default = 'session --> browser --> server'
self.assertEqual(self.negotiator.policy, default)
self.negotiator.policy = 'server'
self.assertEqual(self.negotiator.policy, 'server')

def test_serverLanguage(self):
self.assertEqual(self.negotiator.serverLanguage, None)
self.negotiator.serverLanguage = 'de'
self.assertEqual(self.negotiator.serverLanguage, 'de')

def test_sessionLanguages(self):
self.assertEqual(self.negotiator.sessionLanguages, [])
self.negotiator.sessionLanguages = ['de', 'en']
self.assertEqual(self.negotiator.sessionLanguages, ['de', 'en'])

def test_offeredLanguages(self):
self.assertEqual(self.negotiator.offeredLanguages, [])
self.negotiator.offeredLanguages = ['de', 'en']
self.assertEqual(self.negotiator.offeredLanguages, ['de', 'en'])

def test_getLanguages(self):
# first set the default policy to 'browser'
self.negotiator.policy = 'browser'
self.assertEqual(self.negotiator.policy, 'browser')

_cases = (
(('en','de'), ('en','de','fr'), 'en'),
(('en'), ('it','de','fr'), None),
(('pt-br','de'), ('pt_BR','de','fr'), 'pt_BR'),
(('pt-br','en'), ('pt', 'en', 'fr'), 'pt'),
(('pt-br','en-us', 'de'), ('de', 'en', 'fr'), 'en'),
)

for user_pref_langs, obj_langs, expected in _cases:
env = Env(user_pref_langs)
self.assertEqual(self.negotiator.getLanguage(obj_langs, env),
expected)


def test_suite():
Expand Down
1 change: 0 additions & 1 deletion src/z3c/language/session/__init__.py
Expand Up @@ -15,7 +15,6 @@
"""
$Id$
"""

__docformat__ = 'restructuredtext'

from z3c.language.session.interfaces import *
20 changes: 2 additions & 18 deletions src/z3c/language/session/app.py
Expand Up @@ -17,31 +17,16 @@
"""
__docformat__ = 'restructuredtext'

from persistent import Persistent
from zope.interface import implements

from zope.component import ComponentLookupError

from zope.i18n.interfaces import IUserPreferredLanguages
from zope.i18n.negotiator import negotiator

from zope.app.zapi import getUtility
from zope.app.container.contained import Contained
import zope.interface

from zope.app.session.session import Session
from zope.app.session.interfaces import ISession
from zope.app.session.interfaces import IClientId
from zope.app.session.interfaces import ISessionDataContainer
from zope.app.session.session import SessionData
from zope.app.session.session import SessionPkgData

from z3c.language.session import ILanguageSession
from z3c.language.session import IGetLanguage
from z3c.language.session import ISetLanguage
from z3c.language.session import sessionPkgDataId



class LanguageSession(Session):
"""Handles i18n language via server session.
Expand Down Expand Up @@ -74,8 +59,7 @@ class LanguageSession(Session):
>>> tests.tearDown()
"""

implements(ILanguageSession, IGetLanguage, ISetLanguage)
zope.interface.implements(ILanguageSession, IGetLanguage, ISetLanguage)

def __init__(self, request):
super(LanguageSession, self).__init__(request)
Expand Down

0 comments on commit fc83c01

Please sign in to comment.