Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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__))
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
    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)