def create(self, validated_data): url = validated_data['assertion']['id'] try: instance, created = BadgeCheckHelper.get_or_create_assertion(url=url, created_by=self.context['request'].user) if not created: instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED instance.save() raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}]) except DjangoValidationError as e: raise RestframeworkValidationError(e.messages) return instance
def create(self, validated_data): try: validated_data['imagefile'] = validated_data.pop('image', None) instance, created = BadgeCheckHelper.get_or_create_assertion(**validated_data) if not created: instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED instance.save() raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}]) except DjangoValidationError as e: raise RestframeworkValidationError(e.messages) return instance
def to_internal_value(self, data): try: obj = self.get_queryset().get(**{self.rel_source: data}) return obj except ObjectDoesNotExist: raise RestframeworkValidationError( 'Invalid {rel_source} "{rel_value}" - object does not exist.'. format(rel_source=self.rel_source, rel_value=data)) except (TypeError, ValueError): raise RestframeworkValidationError( 'Incorrect type. Expected {rel_source} value, got {data_type}.' .format(rel_source=self.rel_source, data_type=type(data).__name__))
def create(self, validated_data): try: instance, created = BadgeCheckHelper.get_or_create_assertion( **validated_data) except DjangoValidationError as e: raise RestframeworkValidationError(e.messages) return instance
def to_internal_value(self, data): # populate collection from various methods collection = data.get('collection') if not collection: collection = self.context.get('collection') if not collection and self.parent.parent: collection = self.parent.parent.instance elif not collection and self.parent.instance: collection = self.parent.instance if not collection: return BackpackCollectionBadgeInstance( badgeinstance=BadgeInstance.cached.get(entity_id=data.get('id')) ) try: badgeinstance = BadgeInstance.cached.get(entity_id=data.get('id')) except BadgeInstance.DoesNotExist: raise RestframeworkValidationError("Assertion not found") if badgeinstance.recipient_identifier not in collection.owner.all_recipient_identifiers: raise serializers.ValidationError("Cannot add badge to a collection created by a different recipient.") collect, created = BackpackCollectionBadgeInstance.objects.get_or_create( collection=collection, badgeinstance=badgeinstance) return collect
def create(self, validated_data): owner = validated_data.get('created_by') try: instance, created = BadgeCheckHelper.get_or_create_assertion( url=validated_data.get('url', None), imagefile=validated_data.get('image', None), assertion=validated_data.get('assertion', None), created_by=owner, ) if not created: if instance.acceptance == BadgeInstance.ACCEPTANCE_ACCEPTED: raise RestframeworkValidationError([{'name': "DUPLICATE_BADGE", 'description': "You already have this badge in your backpack"}]) instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED instance.save() owner.publish() # update BadgeUser.cached_badgeinstances() except DjangoValidationError as e: raise RestframeworkValidationError(e.args[0]) return instance
def create(self, validated_data): try: instance, created = BadgeCheckHelper.get_or_create_assertion(**validated_data) if not created: instance.acceptance = BadgeInstance.ACCEPTANCE_ACCEPTED instance.save() except DjangoValidationError as e: raise RestframeworkValidationError(e.messages) return instance
def create(self, validated_data): model_cls = self.get_model_class() if model_cls is not None: try: new_instance = model_cls.objects.create(**validated_data) except DjangoValidationError as e: raise RestframeworkValidationError(e.message) return new_instance
def create(self, validated_data): owner = validated_data.get('created_by') try: instance, created = BadgeCheckHelper.get_or_create_assertion( url=validated_data.get('url', None), imagefile=validated_data.get('image', None), assertion=validated_data.get('assertion', None), created_by=owner, ) owner.publish() # update BadgeUser.cached_badgeinstances() except DjangoValidationError as e: raise RestframeworkValidationError(e.args[0]) return instance
def post(self, request, **kwargs): """ Signup for a new account """ if request.version == 'v1': serializer_cls = self.get_serializer_class() serializer = serializer_cls(data=request.data, context={'request': request}) serializer.is_valid(raise_exception=True) try: new_user = serializer.save() except DjangoValidationError as e: raise RestframeworkValidationError(e.message) return Response(serializer.data, status=HTTP_201_CREATED) return Response(status=HTTP_404_NOT_FOUND)