Ignore:
Timestamp:
14 Oct 2011, 16:10:30 (13 years ago)
Author:
Henrik Bettermann
Message:

Merge README.txt and app.txt. This will also catch the error on Issoufou's system.

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  
    6060    >>> myuniversity['faculties']
    6161    <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
     72We can export universities. For this we lookup an appropriate exporter
     73first::
     74
     75  >>> from waeup.sirp.interfaces import IWAeUPExporter
     76  >>> exporter = IWAeUPExporter(myuniversity)
     77  >>> exporter
     78  <waeup.sirp.utils.importexport.Exporter object at 0x...>
     79
     80Now we can trigger the export::
     81
     82  >>> exporter.export()
     83  <cStringIO.StringO object at 0x...>
     84
     85We can also get an XML representation as file. If we do not provide a
     86filepath, we will get an instance of `cStringIO.StringIO`, i.e. a
     87memory 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
     102WAeUP SIRP plugins
     103==================
     104
     105waeup.sirp provides an API to 'plugin' components. Things that should
     106be setup at creation time of a WAeUP SIRP application can indicate
     107that by providing a utility providing IWAeUPSIRPPlugin.
     108
     109The 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
     118We 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
     130When we register the plugin
     131
     132   >>> grok.testing.grok_component('MyPlugin', MyPlugin)
     133   True
     134
     135and 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
     142Apparently the plugin can do with the University object whatever it
     143likes. That's what plugins are for.
Note: See TracChangeset for help on using the changeset viewer.