Beispiel #1
0
    def _to_python(self, value, state):
        from adhocracy.model import UserBadge

        if value is None:
            if self.not_empty:
                raise formencode.Invalid(_('No badges selected'), value, state)

            return []

        if isinstance(value, (str, unicode)):
            value = [value]

        if len(value) != len(set(value)):
            raise formencode.Invalid(
                _("Duplicates in input set of user badge IDs"),
                value, state)

        if self.not_empty and not value:
            raise formencode.Invalid(_('No badges selected'), value, state)

        badges = UserBadge.findall_by_ids(value)
        if len(badges) != len(value):
            missing = set(value).difference(b.id for b in badges)
            raise formencode.Invalid(
                _("Could not find badges %s") % ','.join(map(str, missing)),
                value, state)
        return badges