source: main/waeup.sirp/trunk/src/waeup/sirp/university/certificatecontainer.txt @ 5314

Last change on this file since 5314 was 5140, checked in by uli, 15 years ago

Update all unit tests that use the ZCA to run inside the new unit test layer.

File size: 4.6 KB
RevLine 
[4920]1:mod:`waeup.sirp.university.certificatecontainer` -- Certificate containers
2***************************************************************************
[4367]3
[4920]4.. module:: waeup.sirp.university.certificatecontainer
[4367]5
6Containers for certificates.
7
[5140]8.. :doctest:
9.. :layer: waeup.sirp.testing.WAeUPSIRPUnitTestLayer
[4367]10
11
12Content Classes (models and containers)
13=======================================
14
15:class:`CertificateContainer`
16-----------------------------
17
18.. class:: CertificateContainer()
19
20   Create a certificate container instance.
21
22   .. attribute:: grok.implements(ICertificateContainer)
23
24   .. attribute:: grok.require('waeup.manageUniversity')
25
26   :class:`CertificateContainer` instances are instances of
27   :class:`grok.Container` that hold and manage instances of
[4920]28   :class:`waeup.sirp.university.certificate.Certificate`.
[4367]29
[4920]30     >>> from waeup.sirp.university.certificatecontainer import CertificateContainer
[4367]31     >>> mycontainer = CertificateContainer()
32     >>> mycontainer
[4920]33     <waeup.sirp.university.certificatecontainer.CertificateContainer object at 0x...>
[4367]34
35   Certificate containers provide `ICertificateContainer`:
36
[5005]37     >>> from waeup.sirp.university.interfaces import ICertificateContainer
[4367]38     >>> ICertificateContainer.providedBy(mycontainer)
39     True
40
41   We can be sure, that the full interface is supported by the
42   CertificateContainer class:
43
44     >>> from zope.interface.verify import verifyClass
45     >>> verifyClass(ICertificateContainer, CertificateContainer)
46     True
47
48   As normal ``grok.Container``, :class:`CertificateContainer` instances
49   can be used like dicts:
50
51     >>> list(mycontainer.keys())
52     []
53
54   .. method:: addCertificate(certificate)
55
56      Add a certificate.
57
58      *certificate* must be an instance of
[4920]59      :class:`waeup.sirp.university.certificate.Certificate`:
[4367]60
[4920]61        >>> from waeup.sirp.university.certificatecontainer import (
[4367]62        ...   CertificateContainer)
63        >>> mycontainer = CertificateContainer()
64        >>> mycontainer.addCertificate('blah')
65        Traceback (most recent call last):
66        ...
67        TypeError: CertificateContainers contain only ICertificate instances
68
69      The key of added items is the ``code`` attribute:
70
[4920]71        >>> from waeup.sirp.university.certificate import Certificate
[4367]72        >>> mycertificate = Certificate(code='CERTIFICATE1')
73        >>> mycontainer.addCertificate(mycertificate)
74        >>> list(mycontainer.keys())
75        [u'CERTIFICATE1']
76
77   .. method:: clear()
78
79      Remove all contained certificates:
80
81        >>> len(mycontainer.items())
82        1
83
84        >>> mycontainer.clear()
85        >>> len(mycontainer.items())
86        0
87
88Utilities
89=========
90
91:class:`CertificateContainerFactory`
92------------------------------------
93
94.. class:: CertificateContainerFactory()
95
96   .. attribute:: grok.name(u'waeup.CertificateContainer')
97
98   .. attribute:: grok.implements(IFactory)
99
100   A named utility to deliver new instances of :class:`CertificateContainer`
101   without the need to import the implementation before:
102
103     >>> from zope.component import createObject
104     >>> mycertificatecontainer = createObject(u'waeup.CertificateContainer')
105     >>> mycertificatecontainer
[4920]106     <waeup.sirp.university.certificatecontainer.CertificateContainer object at 0x...>
[4367]107
108   The factory complies with the specifications from the
109   :class:`IFactory` insterface:
110
111     >>> from zope.interface.verify import verifyClass
112     >>> from zope.component.interfaces import IFactory
[4920]113     >>> from waeup.sirp.university.certificatecontainer import (
[4367]114     ...   CertificateContainerFactory)
115     >>> verifyClass(IFactory, CertificateContainerFactory)
116     True
117
118   This means also, that we can get the interfaces of the created
119   object from the factory:
120
121     >>> certificatecontainer_factory = CertificateContainerFactory()
122     >>> certificatecontainer_factory.getInterfaces()
[4920]123     <implementedBy waeup.sirp.university.certificatecontainer.CertificateContainer>
[4367]124
125
126Examples
127========
128
129Getting a certificate container
130-------------------------------
131
132We can easily create `CertificateContainers`:
133
[4920]134    >>> from waeup.sirp.university.certificatecontainer import CertificateContainer
[4367]135    >>> mycontainer = CertificateContainer()
136
137
138Another way to get a certificate container -- without importing the
139class -- is via factories. We registered a factory for certificate
140containers under the name ``waeup.CertificateContainer``. Now we can
141ask for an object by calling the appropriate factory:
142
143    >>> from zope.component import createObject
144    >>> createObject(u'waeup.CertificateContainer')
[4920]145    <waeup.sirp.university.certificatecontainer.CertificateContainer object at 0x...>
[4367]146
147This way we get a thing that implements ICertificateContainer without
148imports or similar.
149
Note: See TracBrowser for help on using the repository browser.