def add_fields(self, fields, context=None):
        if context and len(getGroupIds(context)) == 0:
            return fields

        fields += form.Fields(IAddUserSchema)
        fields['groups'].custom_widget = MultiCheckBoxVocabularyWidget
            
        return fields
    def update(self):
        groupname = self.request.form['groupname']
        if groupname is None:
            raise Unauthorized

        allowed_groups = getGroupIds(self.context)
        if groupname not in allowed_groups:
            raise Unauthorized

        super(ManageMembers, self).update()
    def __call__(self, context):
        pgroups = getToolByName(context, 'portal_groups')
        terms = []

        for groupid in getGroupIds(context):
            group = pgroups.getGroupById(groupid)
            if group is not None:
                terms.append(SimpleTerm(groupid, unicode(groupid),
                    group.getProperty('title', groupid) or groupid))

        terms.sort(key=lambda x: normalizeString(x.title))
        return SimpleVocabulary(terms)