Esempio n. 1
0
class ISubjectInfo(model.Schema):
    """Behavior schema
    """
    studysubject = schema.TextLine(title=_(u'Studysubject'), required=False)
    fieldset('Contact information',
             label=_(u'Contact information'),
             fields=['studysubject'])
Esempio n. 2
0
class IGroupsProvider(Interface):
    """Behavior schema
    """
    order_before(groups='columns_display')
    groups = schema.List(title=_(u'Groups'),
                         description=_('roster_groups_help',
                                       default=u'group_id|Group title'),
                         value_type=schema.TextLine(title=_(u'Group'),
                                                    required=True),
                         required=False)
Esempio n. 3
0
class IGroups(model.Schema):
    """Behavior schema
    """
    widget(groups=CheckBoxFieldWidget)
    groups = schema.List(title=_(u'Groups'),
                         value_type=schema.Choice(
                             title=_(u'Group'),
                             vocabulary='collective.roster.localgroups'),
                         missing_value=[],
                         required=False)
Esempio n. 4
0
class IRoster(model.Schema):
    """Content schema
    """
    columns_display = schema.List(
        title=_(u'Display columns'),
        description=_(u'Display only the selected person information columns '
                      u'on supporting views.'),
        value_type=schema.Choice(
            title=_(u'Column'),
            vocabulary='collective.roster.displaycolumns',
        ))
Esempio n. 5
0
class IContactInfo(model.Schema):
    """Behavior schema
    """
    email = schema.TextLine(title=_(u'Email'),
                            constraint=is_email_address,
                            required=False)
    phone_number = schema.TextLine(
        title=_(u'Phone'),
        required=False,
    )
    fieldset('Contact information',
             label=_(u'Contact information'),
             fields=['email', 'phone_number'])
Esempio n. 6
0
class IOfficeInfo(model.Schema):
    """Behavior schema
    """
    order_after(room='IContactInfo.phone_number')
    room = schema.TextLine(
        title=_(u'Room'),
        # description=_(u'Room Info'),
        required=False)

    order_after(short_number='IContactInfo.phone_number')
    widget(short_number=ShortNumberFieldWidget)
    short_number = schema.Int(title=_(u'Short number'),
                              required=False,
                              constraint=is_short_number)
Esempio n. 7
0
 def title(self):
     title = _('person_name',
               default=u'${last_name} ${first_name}',
               mapping={
                   'first_name': IPerson(self.context).first_name,
                   'last_name': IPerson(self.context).last_name
               })
     return translate(title, context=api.portal.getRequest())
Esempio n. 8
0
class IPerson(model.Schema):
    """Content schema
    """
    title = schema.TextLine(title=_(u'Display name'),
                            readonly=True,
                            required=False)

    first_name = schema.TextLine(title=_(u'First name'))

    last_name = schema.TextLine(title=_(u'Last name'))

    position = schema.TextLine(title=_(u'Title'),
                               missing_value=u'',
                               required=False)

    description = schema.Text(title=_(u'Description'),
                              missing_value=u'',
                              required=False)

    biography = RichText(title=_(u'Biography'), required=False)

    primary('image')
    image = NamedBlobImage(
        title=_(u'Image'),
        required=False,
    )
class SubjectColumn(column.LinkColumn):
    weight = 105
    header = _(u'Subject')

    def renderCell(self, obj):
        adapted = ISubjectInfo(obj, None)
        if adapted:
            return getattr(adapted, 'studysubject', None) or u''
        return u''
Esempio n. 10
0
class RoomColumn(column.Column):
    weight = 101
    header = _(u'Room')

    def renderCell(self, ob):
        adapted = IOfficeInfo(ob, None)
        if adapted:
            return getattr(adapted, 'room', None) or u''
        return u''
Esempio n. 11
0
    def validate(self, value, force=False):
        value = value or []
        super(SimpleFieldValidator, self).validate(value, force)

        normalizer = getUtility(IIDNormalizer)
        normalized = map(normalizer.normalize, value)

        if len(set(normalized)) != len(value):
            raise Invalid(_(u'Roster display groups must be unique.'))
Esempio n. 12
0
class IGroups(model.Schema):
    """Behavior schema
    """
    widget(groups=CheckBoxFieldWidget)
    groups = schema.List(
        title=_(u'Groups'),
        value_type=schema.Choice(
            title=_(u'Group'),
            vocabulary='collective.roster.localgroups'
        ),
        missing_value=[],
        required=False
    )

    groups_leader = schema.Bool(
        title=_('Groups leader'),
        description=_('Leaders will be shown before the others '
                      'in grouped views.'),
        required=False
    )
Esempio n. 13
0
class NameColumn(column.LinkColumn):
    weight = 99
    header = _(u'Name')

    def getLinkURL(self, ob):
        return ob.absolute_url()

    def getLinkContent(self, ob):
        title = u'{0:s} {1:s}'.format(ob.last_name, ob.first_name)
        if type(title) != unicode:
            title = unicode(title, u'utf-8')
        return title
Esempio n. 14
0
    def validate(seflf, value, force=False):
        allowed = ['jpeg', 'jpg', 'png', 'gif']
        ext = path.splitext(value.filename)[1]
        mime = magic.Magic(mime=True)
        mime_type = mime.from_buffer(value.data)

        if (not ext or ext[1:].lower() not in allowed
                or not mime_type.startswith('image/')):  # noqa
            raise Invalid(
                _(
                    u'Image must be one of the permitted file types '
                    u'(${extlist}).',
                    mapping={'extlist': u', '.join(allowed)}))
Esempio n. 15
0
def person_title(person):
    title = INameFromTitle(person).title
    adapted = IPerson(person, None)
    if adapted:
        bound = IPerson['position'].bind(adapted)
        position = bound.get(adapted)
        title_position = _('person_title',
                           default=u'${title}, ${position}',
                           mapping={'title': title,
                                    'position': position})
        if position:
            title = translate(title_position, context=api.portal.getRequest())
    return title
Esempio n. 16
0
def person_title(person):
    title = INameFromTitle(person).title
    adapted = IPerson(person, None)
    if adapted:
        bound = IPerson['position'].bind(adapted)
        position = bound.get(adapted)
        title_position = _('person_title',
                           default=u'${title}, ${position}',
                           mapping={'title': title,
                                    'position': position})
        if position:
            title = translate(title_position, context=api.portal.getRequest())
    return title
Esempio n. 17
0
class AlphaColumn(column.Column):
    weight = -1
    header = _(u'#')

    def renderCell(self, ob):
        if not ob.last_name:
            return u''
        alpha = ob.last_name[0].upper()

        if not self.table.alpha or alpha != self.table.alpha[-1]:
            self.table.alpha.append(alpha)
            return u'<a name="{0:s}">{1:s}</a>'.format(alpha, alpha)
        else:
            return u''
Esempio n. 18
0
class ShortNumberColumn(column.LinkColumn):
    weight = 103
    header = _(u'Short number')

    def getLinkURL(self, ob):
        adapted = IOfficeInfo(ob, None)
        short_number = getattr(adapted, 'short_number', None)
        if short_number:
            return u'tel: {0:d}'.format(short_number)
        return u''

    def getLinkContent(self, ob):
        adapted = IOfficeInfo(ob, None)
        if adapted:
            return getattr(adapted, 'short_number', None) or u''
        return u''
Esempio n. 19
0
class EmailColumn(column.LinkColumn):
    weight = 104
    header = _(u'Email')

    def getLinkURL(self, ob):
        adapted = IContactInfo(ob, None)
        email = getattr(adapted, 'email', None)
        if email:
            return u'mailto:{0:s}'.format(email)
        return u''

    def getLinkContent(self, ob):
        adapted = IContactInfo(ob, None)
        if adapted:
            return getattr(adapted, 'email', u'') or u''
        return u''
Esempio n. 20
0
class PhoneNumberColumn(column.LinkColumn):
    weight = 102
    header = _(u'Phone number')

    def getLinkURL(self, ob):
        adapted = IContactInfo(ob, None)
        phone = getattr(adapted, 'phone_number', None)
        if phone:
            return u'tel:{0:s}'.format(phone)
        return u''

    def getLinkContent(self, ob):
        adapted = IContactInfo(ob, None)
        if adapted:
            return getattr(adapted, 'phone_number', u'') or u''
        return u''
Esempio n. 21
0
 def validate(self, value, force=False):
     normalizer = getUtility(IIDNormalizer)
     if not len(normalizer.normalize(value)):
         raise Invalid(_(u"Person name contains invalid characters."))
Esempio n. 22
0
 def title(self):
     title = _('person_name',
               default=u'${last_name} ${first_name}',
               mapping={'first_name': IPerson(self.context).first_name,
                        'last_name': IPerson(self.context).last_name})
     return translate(title, context=api.portal.getRequest())
Esempio n. 23
0
 def validate(self, value, force=False):
     normalizer = getUtility(IIDNormalizer)
     if not len(normalizer.normalize(value)):
         raise Invalid(_(u"Person name contains invalid characters."))
Esempio n. 24
0
class PositionColumn(column.Column):
    weight = 100
    header = _(u'Title')

    def renderCell(self, ob):
        return ob.position
Esempio n. 25
0
class DescriptionColumn(column.Column):
    weight = 98
    header = _(u'Description')

    def renderCell(self, ob):
        return ob.description