Add api.env.plone_version() and api.env.zope_version() (refs. #126)

This commit is contained in:
hvelarde 2013-10-17 10:39:59 -03:00
parent e5c03ea014
commit 16bc0c731f
4 changed files with 80 additions and 2 deletions

View File

@ -1,6 +1,13 @@
Changelog
=========
1.2.0 (unreleased)
------------------
- Add ``api.env.plone_version()`` and ``api.env.zope_version()`` refs. #126.
[hvelarde]
1.1.0 (2013-10-12)
------------------

View File

@ -104,6 +104,38 @@ To know if your plone instance is running in a test runner, use
pass # do something
.. _env_plone_version_example:
Plone version
-------------
To know what version of Plone you are using, use :meth:`api.env.plone_version`.
.. code-block:: python
from plone import api
plone_version = api.env.plone_version()
if plone_version < '4.1':
pass # do something
.. _env_zope_version_example:
Zope version
------------
To know what version of Zope 2 you are using, use :meth:`api.env.zope_version`.
.. code-block:: python
from plone import api
zope_version = api.env.zope_version()
if zope_version >= '2.13':
pass # do something
Further reading
---------------

View File

@ -1,14 +1,15 @@
# -*- coding: utf-8 -*-
from AccessControl.SecurityManagement import getSecurityManager
from AccessControl.SecurityManagement import setSecurityManager
from AccessControl.SecurityManagement import newSecurityManager
from AccessControl.SecurityManagement import setSecurityManager
from contextlib import contextmanager
from pkg_resources import get_distribution
from plone.api import portal
from plone.api.exc import InvalidParameterError
from plone.api.exc import UserNotFoundError
from plone.api.validation import required_parameters
from plone.api.validation import at_least_one_of
from plone.api.validation import mutually_exclusive_parameters
from plone.api.validation import required_parameters
from zope.globalrequest import getRequest
import Globals
@ -185,3 +186,21 @@ def test_mode():
break
return env.IS_TEST
def plone_version():
"""Return Plone version number.
:returns: string denoting what release of Plone this distribution contains
:Example: :ref:`env_plone_version_example`
"""
return get_distribution('Plone').version
def zope_version():
"""Return Zope 2 version number.
:returns: string denoting what release of Zope2 this distribution contains
:Example: :ref:`env_zope_version_example`
"""
return get_distribution('Zope2').version

View File

@ -392,3 +392,23 @@ class TestPloneApiEnv(unittest.TestCase):
"""Tests that test_mode() returns True as we are in a test runner."""
from plone.api.env import test_mode
self.assertEqual(test_mode(), True)
def test_plone_version(self):
"""Tests that plone_version() returns Plone version."""
from plone.api.env import plone_version
self.assertTrue(isinstance(plone_version(), str))
# version should be something like 'X.Y' or 'X.Y.Z'
versions = plone_version().split('.')
self.assertTrue(len(versions) >= 2)
for v in versions:
self.assertTrue(v.isdigit())
def test_zope_version(self):
"""Tests that zope_version() returns Zope version."""
from plone.api.env import zope_version
self.assertTrue(isinstance(zope_version(), str))
# version should be something like 'X.Y' or 'X.Y.Z'
versions = zope_version().split('.')
self.assertTrue(len(versions) >= 2)
for v in versions:
self.assertTrue(v.isdigit())