|
9 | 9 | from drf_spectacular.utils import extend_schema_serializer |
10 | 10 | from packaging.requirements import Requirement |
11 | 11 | from packaging.version import InvalidVersion, Version |
12 | | -from pydantic import TypeAdapter, ValidationError |
| 12 | +from pydantic import TypeAdapter |
| 13 | +from pydantic import ValidationError as PydanticValidationError |
13 | 14 | from pypi_attestations import AttestationError |
14 | 15 | from rest_framework import serializers |
15 | 16 |
|
16 | 17 | from pulpcore.plugin import models as core_models |
17 | 18 | from pulpcore.plugin import serializers as core_serializers |
| 19 | +from pulpcore.plugin.exceptions import DigestValidationError |
18 | 20 | from pulpcore.plugin.util import get_current_authenticated_user, get_domain, get_prn, reverse |
19 | 21 |
|
20 | 22 | from pulp_python.app import models as python_models |
@@ -387,7 +389,7 @@ def validate_attestations(self, value): |
387 | 389 | attestations = TypeAdapter(list[Attestation]).validate_json(value) |
388 | 390 | else: |
389 | 391 | attestations = TypeAdapter(list[Attestation]).validate_python(value) |
390 | | - except ValidationError as e: |
| 392 | + except PydanticValidationError as e: |
391 | 393 | raise serializers.ValidationError(_("Invalid attestations: {}").format(e)) |
392 | 394 | return attestations |
393 | 395 |
|
@@ -435,12 +437,9 @@ def deferred_validate(self, data): |
435 | 437 | ) |
436 | 438 |
|
437 | 439 | if data.get("sha256") and data["sha256"] != artifact.sha256: |
438 | | - raise serializers.ValidationError( |
439 | | - detail={ |
440 | | - "sha256": _( |
441 | | - "The uploaded artifact's sha256 checksum does not match the one provided" |
442 | | - ) |
443 | | - } |
| 440 | + raise DigestValidationError( |
| 441 | + actual=artifact.sha256, |
| 442 | + expected=data["sha256"], |
444 | 443 | ) |
445 | 444 |
|
446 | 445 | data.update(_data) |
@@ -654,7 +653,7 @@ def deferred_validate(self, data): |
654 | 653 | try: |
655 | 654 | provenance = Provenance.model_validate_json(data["file"].read()) |
656 | 655 | data["provenance"] = provenance.model_dump(mode="json") |
657 | | - except ValidationError as e: |
| 656 | + except PydanticValidationError as e: |
658 | 657 | raise serializers.ValidationError( |
659 | 658 | _("The uploaded provenance is not valid: {}").format(e) |
660 | 659 | ) |
|
0 commit comments