Changeset 6897
- Timestamp:
- 14 Oct 2011, 16:10:30 (13 years ago)
- Location:
- main/waeup.sirp/trunk/src/waeup/sirp
- Files:
-
- 1 deleted
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/app.txt
r5140 r6897 60 60 >>> myuniversity['faculties'] 61 61 <waeup.sirp.university.facultycontainer.FacultyContainer object at 0x...> 62 63 >>> myuniversity['students'] 64 <waeup.sirp.students.container.StudentsContainer object at 0x...> 65 66 >>> myuniversity['users'] 67 <waeup.sirp.users.UserContainer object at 0x...> 68 69 >>> myuniversity['datacenter'] 70 <waeup.sirp.datacenter.DataCenter object at 0x...> 71 72 We can export universities. For this we lookup an appropriate exporter 73 first:: 74 75 >>> from waeup.sirp.interfaces import IWAeUPExporter 76 >>> exporter = IWAeUPExporter(myuniversity) 77 >>> exporter 78 <waeup.sirp.utils.importexport.Exporter object at 0x...> 79 80 Now we can trigger the export:: 81 82 >>> exporter.export() 83 <cStringIO.StringO object at 0x...> 84 85 We can also get an XML representation as file. If we do not provide a 86 filepath, we will get an instance of `cStringIO.StringIO`, i.e. a 87 memory file:: 88 89 >>> from waeup.sirp.interfaces import IWAeUPXMLExporter 90 >>> exporter = IWAeUPXMLExporter(myuniversity) 91 >>> f = exporter.export() 92 >>> f 93 <cStringIO.StringO object at 0x...> 94 95 >>> print f.read() 96 <?xml version="1.0" encoding="utf-8" ?> 97 <pickle> 98 <initialized_object id="..."> 99 ... 100 </pickle> 101 102 WAeUP SIRP plugins 103 ================== 104 105 waeup.sirp provides an API to 'plugin' components. Things that should 106 be setup at creation time of a WAeUP SIRP application can indicate 107 that by providing a utility providing IWAeUPSIRPPlugin. 108 109 The plugins are looked up by an created app, which then will call the 110 ``setup()`` method of each plugin. 111 112 >>> from waeup.sirp.interfaces import IWAeUPSIRPPluggable 113 >>> from zope.component import getAdapters, getUtilitiesFor 114 >>> sorted(list(getUtilitiesFor(IWAeUPSIRPPluggable))) 115 [(u'accesscodes', <waeup.sirp.accesscodes...AccessCodePlugin ...)] 116 117 118 We can provide a new plugin like this: 119 120 >>> import grok 121 >>> from waeup.sirp.interfaces import IWAeUPSIRPPluggable 122 >>> class MyPlugin(grok.GlobalUtility): 123 ... grok.implements(IWAeUPSIRPPluggable) 124 ... def setup(self, site, name, logger): 125 ... print "Setup was called for" 126 ... print site 127 ... def update(self, site, name, logger): 128 ... pass 129 130 When we register the plugin 131 132 >>> grok.testing.grok_component('MyPlugin', MyPlugin) 133 True 134 135 and setup a new WAeUP SIRP instance, we will get a message: 136 137 >>> from waeup.sirp.app import University 138 >>> site = University() 139 Setup was called for 140 <waeup.sirp.app.University object at 0x...> 141 142 Apparently the plugin can do with the University object whatever it 143 likes. That's what plugins are for.
Note: See TracChangeset for help on using the changeset viewer.