~landscape/zope3/ztk-1.1.3

« back to all changes in this revision

Viewing changes to src/zope/app/generations/browser/managerdetails.py

  • Committer: Sidnei da Silva
  • Date: 2010-07-05 21:07:01 UTC
  • Revision ID: sidnei.da.silva@canonical.com-20100705210701-zmqhqrbzad1mhzsl
- Reduce deps

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
##############################################################################
2
 
#
3
 
# Copyright (c) 2004 Zope Corporation and Contributors.
4
 
# All Rights Reserved.
5
 
#
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.
12
 
#
13
 
##############################################################################
14
 
"""Manager Details View
15
 
 
16
 
$Id: managerdetails.py 85608 2008-04-22 18:34:09Z lgs $
17
 
"""
18
 
__docformat__ = "reStructuredText"
19
 
import zope.component
20
 
 
21
 
from zope.app.generations.interfaces import ISchemaManager
22
 
from zope.app.renderer.rest import ReStructuredTextToHTMLRenderer
23
 
 
24
 
class ManagerDetails(object):
25
 
    r"""Show Details of a particular Schema Manager's Evolvers
26
 
 
27
 
    This method needs to use the component architecture, so
28
 
    we'll set it up:
29
 
 
30
 
      >>> from zope.app.testing.placelesssetup import setUp, tearDown
31
 
      >>> setUp()
32
 
 
33
 
    We need to define some schema managers.  We'll define just one:
34
 
 
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')
39
 
 
40
 
    Now let's create the view:
41
 
 
42
 
      >>> from zope.publisher.browser import TestRequest
43
 
      >>> details = ManagerDetails()
44
 
      >>> details.context = None
45
 
      >>> details.request = TestRequest(environ={'id': 'foo.app1'})
46
 
 
47
 
    Let's now see that the view gets the ID correctly from the request:
48
 
 
49
 
      >>> details.id
50
 
      'foo.app1'
51
 
 
52
 
    Now check that we get all the info from the evolvers:
53
 
 
54
 
      >>> info = details.getEvolvers()
55
 
      >>> for item in info:
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)]
60
 
 
61
 
    We'd better clean up:
62
 
 
63
 
      >>> tearDown()
64
 
    """
65
 
 
66
 
    id = property(lambda self: self.request['id'])
67
 
 
68
 
    def getEvolvers(self):
69
 
        id = self.id
70
 
        manager = zope.component.getUtility(ISchemaManager, id)
71
 
 
72
 
        evolvers = []
73
 
 
74
 
        for gen in range(manager.minimum_generation, manager.generation):
75
 
 
76
 
            info = manager.getInfo(gen+1)
77
 
            if info is None:
78
 
                info = ''
79
 
            else:
80
 
                # XXX: the renderer *expects* unicode as input encoding (ajung)
81
 
                renderer = ReStructuredTextToHTMLRenderer(
82
 
                    unicode(info), self.request)
83
 
                info = renderer.render()
84
 
 
85
 
            evolvers.append({'from': gen, 'to': gen+1, 'info': info})
86
 
 
87
 
        return evolvers