1
##############################################################################
3
# Copyright (c) 2004 Zope Corporation and Contributors.
6
# This software is subject to the provisions of the Zope Public License,
7
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
8
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
9
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
11
# FOR A PARTICULAR PURPOSE.
13
##############################################################################
14
"""Manager Details View
16
$Id: managerdetails.py 85608 2008-04-22 18:34:09Z lgs $
18
__docformat__ = "reStructuredText"
21
from zope.app.generations.interfaces import ISchemaManager
22
from zope.app.renderer.rest import ReStructuredTextToHTMLRenderer
24
class ManagerDetails(object):
25
r"""Show Details of a particular Schema Manager's Evolvers
27
This method needs to use the component architecture, so
30
>>> from zope.app.testing.placelesssetup import setUp, tearDown
33
We need to define some schema managers. We'll define just one:
35
>>> from zope.app.generations.generations import SchemaManager
36
>>> from zope.app.testing import ztapi
37
>>> app1 = SchemaManager(0, 3, 'zope.app.generations.demo')
38
>>> ztapi.provideUtility(ISchemaManager, app1, 'foo.app1')
40
Now let's create the view:
42
>>> from zope.publisher.browser import TestRequest
43
>>> details = ManagerDetails()
44
>>> details.context = None
45
>>> details.request = TestRequest(environ={'id': 'foo.app1'})
47
Let's now see that the view gets the ID correctly from the request:
52
Now check that we get all the info from the evolvers:
54
>>> info = details.getEvolvers()
56
... print sorted(item.items())
57
[('from', 0), ('info', u'<p>Evolver 1</p>\n'), ('to', 1)]
58
[('from', 1), ('info', u'<p>Evolver 2</p>\n'), ('to', 2)]
59
[('from', 2), ('info', ''), ('to', 3)]
66
id = property(lambda self: self.request['id'])
68
def getEvolvers(self):
70
manager = zope.component.getUtility(ISchemaManager, id)
74
for gen in range(manager.minimum_generation, manager.generation):
76
info = manager.getInfo(gen+1)
80
# XXX: the renderer *expects* unicode as input encoding (ajung)
81
renderer = ReStructuredTextToHTMLRenderer(
82
unicode(info), self.request)
83
info = renderer.render()
85
evolvers.append({'from': gen, 'to': gen+1, 'info': info})