Merge pull request #148 from plone/env-versions

Add api.env.plone_version() and api.env.zope_version()
This commit is contained in:
Nejc Zupan 2013-11-05 23:47:02 -08:00
commit af5719b40c
4 changed files with 82 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,25 @@ 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'
# it could also include a package status id (Alpha, Beta or RC)
self.assertRegexpMatches(
plone_version(),
'^(\d+\.\d+|\d+\.\d+\.\d+)(a\d+|b\d+|rc\d+)?$'
)
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'
# it could also include a package status id (Alpha, Beta or RC)
self.assertRegexpMatches(
zope_version(),
'^(\d+\.\d+|\d+\.\d+\.\d+)(a\d+|b\d+|rc\d+)?$'
)