src/pyams_content/component/paragraph/interfaces/keynumber.py
changeset 671 b6ca6378a8f8
parent 599 7f97d8cae72e
equal deleted inserted replaced
670:fecfd4969c4f 671:b6ca6378a8f8
    14 
    14 
    15 
    15 
    16 # import standard library
    16 # import standard library
    17 
    17 
    18 # import interfaces
    18 # import interfaces
       
    19 from pyams_content.component.keynumber.interfaces import IKeyNumberContainerTarget
    19 from pyams_content.component.paragraph import IBaseParagraph
    20 from pyams_content.component.paragraph import IBaseParagraph
    20 from pyams_content.interfaces.container import IOrderedContainer
       
    21 from zope.annotation.interfaces import IAttributeAnnotatable
       
    22 
    21 
    23 # import packages
    22 # import packages
    24 from pyams_i18n.schema import I18nTextLineField
       
    25 from zope.container.constraints import containers, contains
       
    26 from zope.interface import Interface
       
    27 from zope.schema import Bool, Choice, TextLine
    23 from zope.schema import Bool, Choice, TextLine
    28 
    24 
    29 from pyams_content import _
    25 from pyams_content import _
    30 
       
    31 
       
    32 KEYNUMBER_CONTAINER_KEY = 'pyams_content.keynumbers'
       
    33 
       
    34 
       
    35 class IKeyNumber(IAttributeAnnotatable):
       
    36     """Base key number interface"""
       
    37 
       
    38     containers('.IKeyNumberContainer')
       
    39 
       
    40     visible = Bool(title=_("Visible?"),
       
    41                    description=_("Is this key number visible in front-office?"),
       
    42                    required=True,
       
    43                    default=True)
       
    44 
       
    45     label = I18nTextLineField(title=_('key-number-label', default="Header"),
       
    46                               description=_("Small text to be displayed above number (according to selected "
       
    47                                             "renderer)"),
       
    48                               required=False)
       
    49 
       
    50     number = TextLine(title=_("Number"),
       
    51                       description=_("Key number value"),
       
    52                       required=True)
       
    53 
       
    54     unit = I18nTextLineField(title=_('key-number-unit', default="Unit"),
       
    55                              description=_("Displayed unit"),
       
    56                              required=False)
       
    57 
       
    58     text = I18nTextLineField(title=_("Associated text"),
       
    59                              description=_("The way this text will be rendered depends on presentation template"),
       
    60                              required=False)
       
    61 
       
    62 
       
    63 class IKeyNumberContainer(IOrderedContainer):
       
    64     """Key numbers container interface"""
       
    65 
       
    66     contains(IKeyNumber)
       
    67 
       
    68     def append(self, value, notify=True):
       
    69         """Append given key number to container"""
       
    70 
       
    71     def get_visible_items(self):
       
    72         """Get list of visible key numbers"""
       
    73 
       
    74 
       
    75 class IKeyNumberContainerTarget(Interface):
       
    76     """Key numbers container target interface"""
       
    77 
    26 
    78 
    27 
    79 KEYNUMBER_PARAGRAPH_TYPE = 'KeyNumbers'
    28 KEYNUMBER_PARAGRAPH_TYPE = 'KeyNumbers'
    80 KEYNUMBER_PARAGRAPH_NAME = _("Key numbers")
    29 KEYNUMBER_PARAGRAPH_NAME = _("Key numbers")
    81 KEYNUMBER_PARAGRAPH_RENDERERS = 'PyAMS.keynumbers.renderers'
    30 KEYNUMBER_PARAGRAPH_RENDERERS = 'PyAMS.keynumbers.renderers'