mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-23 10:18:56 +02:00
Fixed excpetion that no IRI could be generated if a new Part was created via POST operation via API
This was because the objectSerializer in PartNormalizer messed up the JSONLD IRI generation of the paramaters property. It tried to generate this IRI via the Part ressource class, which is not possible
This commit is contained in:
parent
d20b668e87
commit
df23ba07ba
3 changed files with 6 additions and 5 deletions
|
@ -104,8 +104,6 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
|||
#[ApiFilter(RangeFilter::class, properties: ["mass", "minamount"])]
|
||||
#[ApiFilter(DateFilter::class, strategy: DateFilter::EXCLUDE_NULL)]
|
||||
#[ApiFilter(OrderFilter::class, properties: ['name', 'id', 'addedDate', 'lastModified'])]
|
||||
#[DocumentedAPIProperty(schemaName: 'Part-Read', property: 'total_instock', type: 'number', nullable: false,
|
||||
description: 'The total amount of this part in stock (sum of all part lots).')]
|
||||
class Part extends AttachmentContainingDBElement
|
||||
{
|
||||
use AdvancedPropertyTrait;
|
||||
|
|
|
@ -28,6 +28,7 @@ use App\Entity\Parts\PartLot;
|
|||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Serializer\Annotation\Groups;
|
||||
use Symfony\Component\Serializer\Attribute\SerializedName;
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
/**
|
||||
|
@ -181,6 +182,8 @@ trait InstockTrait
|
|||
*
|
||||
* @return float The amount of parts given in partUnit
|
||||
*/
|
||||
#[Groups(['simple', 'extended', 'full', 'part:read'])]
|
||||
#[SerializedName('total_instock')]
|
||||
public function getAmountSum(): float
|
||||
{
|
||||
//TODO: Find a method to do this natively in SQL, the current method could be a bit slow
|
||||
|
|
|
@ -39,6 +39,7 @@ use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
|||
|
||||
/**
|
||||
* @see \App\Tests\Serializer\PartNormalizerTest
|
||||
* TODO: Properly rewrite this class to use the SerializerAware interface and dont use the ObjectNormalizer directly
|
||||
*/
|
||||
class PartNormalizer implements NormalizerInterface, DenormalizerInterface
|
||||
{
|
||||
|
@ -65,7 +66,8 @@ class PartNormalizer implements NormalizerInterface, DenormalizerInterface
|
|||
|
||||
public function supportsNormalization($data, string $format = null, array $context = []): bool
|
||||
{
|
||||
return $data instanceof Part;
|
||||
//We only remove the type field for CSV export
|
||||
return $format === 'csv' && $data instanceof Part ;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -86,8 +88,6 @@ class PartNormalizer implements NormalizerInterface, DenormalizerInterface
|
|||
unset($data['type']);
|
||||
}
|
||||
|
||||
$data['total_instock'] = $object->getAmountSum();
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue