Changeset 7785 for main


Ignore:
Timestamp:
7 Mar 2012, 23:10:44 (13 years ago)
Author:
uli
Message:

Put all these widget, schema and similar stuff for school result
entries into one module. I think this is easier to maintain.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/branches/ulif-schoolgrades/src/waeup/sirp/schoolgrades.py

    r7779 r7785  
    1919"""
    2020import grok
     21from zope.formlib.interfaces import IInputWidget, IDisplayWidget
     22from zope.publisher.interfaces.browser import IBrowserRequest
    2123from zope.schema.fieldproperty import FieldProperty
     24from zope.schema.interfaces import IObject
     25from zope.schema import Object
    2226from waeup.sirp.interfaces import IResultEntry
     27from waeup.sirp.widgets.objectwidget import (
     28    SIRPObjectWidget, SIRPObjectDisplayWidget
     29    )
    2330
    2431class ResultEntry(grok.Model):
    25     """A result entry containing a subject and a grade.
     32    """A result entry contains a subject and a grade.
    2633    """
    2734    grok.implements(IResultEntry)
    2835    subject = FieldProperty(IResultEntry['subject'])
    2936    grade = FieldProperty(IResultEntry['grade'])
     37
     38class IResultEntryField(IObject):
     39    """A zope.schema-like field for usage in interfaces.
     40
     41    Marker interface to distuingish result entries from ordinary
     42    object fields. Needed for registration of widgets.
     43    """
     44
     45class ResultEntryField(Object):
     46    """A zope.schema-like field for usage in interfaces.
     47
     48    If you want to define an interface containing result entries, you
     49    can do so like this::
     50
     51      class IMyInterface(Interface):
     52          my_result_entry = ResultEntryField()
     53
     54    Default widgets are registered to render result entry fields.
     55    """
     56    grok.implements(IResultEntryField)
     57
     58    def __init__(self, **kw):
     59        super(ResultEntryField, self).__init__(IResultEntry, **kw)
     60        return
     61
     62# register SIRPObjectWidgets as default widgets for IResultEntryFields
     63@grok.adapter(IResultEntryField, IBrowserRequest)
     64@grok.implementer(IInputWidget)
     65def result_entry_input_widget(obj, req):
     66    return SIRPObjectWidget(obj, req, ResultEntry)
     67
     68# register a display widget for IResultEntryFields
     69@grok.adapter(IResultEntryField, IBrowserRequest)
     70@grok.implementer(IDisplayWidget)
     71def result_entry_display_widget(obj, req):
     72    return SIRPObjectDisplayWidget(obj, req, ResultEntry)
Note: See TracChangeset for help on using the changeset viewer.