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

        if value is None or value == '':
            return []

        labels = [l.strip() for l in value.split(',')]

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

        badges = set()
        missing = set()

        for label in labels:
            badge = UserBadge.find(label, instance_filter=self.instance_filter)
            if badge is None:
                missing.add(label)
            else:
                badges.add(badge)

        if missing:
            raise formencode.Invalid(
                _("Could not find badges %s") % ','.join(missing),
                value, state)
        else:
            return badges