mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-13 21:59:34 +00:00
Merge branch 'Part-DB:master' into Buerklin-provider
This commit is contained in:
commit
bd2d5355c6
9 changed files with 37 additions and 7 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
2.2.1
|
2.3.0
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
framework:
|
framework:
|
||||||
default_locale: 'en'
|
default_locale: 'en'
|
||||||
# Just enable the locales we need for performance reasons.
|
# Just enable the locales we need for performance reasons.
|
||||||
enabled_locale: ['en', 'de', 'it', 'fr', 'ru', 'ja', 'cs', 'da', 'zh', 'pl']
|
enabled_locale: '%partdb.locale_menu%'
|
||||||
translator:
|
translator:
|
||||||
default_path: '%kernel.project_dir%/translations'
|
default_path: '%kernel.project_dir%/translations'
|
||||||
fallbacks:
|
fallbacks:
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,14 @@ abstract class BaseAdminController extends AbstractController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Count how many actual new entities were created (id is null until persisted)
|
||||||
|
$created_count = 0;
|
||||||
|
foreach ($results as $result) {
|
||||||
|
if (null === $result->getID()) {
|
||||||
|
$created_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Persist valid entities to DB
|
//Persist valid entities to DB
|
||||||
foreach ($results as $result) {
|
foreach ($results as $result) {
|
||||||
$em->persist($result);
|
$em->persist($result);
|
||||||
|
|
@ -373,8 +381,14 @@ abstract class BaseAdminController extends AbstractController
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
if (count($results) > 0) {
|
if (count($results) > 0) {
|
||||||
$this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => count($results)]));
|
$this->addFlash('success', t('entity.mass_creation_flash', ['%COUNT%' => $created_count]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (count($errors)) {
|
||||||
|
//Recreate mass creation form, so we get the updated parent list and empty lines
|
||||||
|
$mass_creation_form = $this->createForm(MassCreationForm::class, ['entity_class' => $this->entity_class]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render($this->twig_template, [
|
return $this->render($this->twig_template, [
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ abstract class Attachment extends AbstractNamedDBElement
|
||||||
#[ORM\Column(type: Types::STRING, length: 2048, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 2048, nullable: true)]
|
||||||
#[Groups(['attachment:read'])]
|
#[Groups(['attachment:read'])]
|
||||||
#[ApiProperty(example: 'http://example.com/image.jpg')]
|
#[ApiProperty(example: 'http://example.com/image.jpg')]
|
||||||
#[Assert\Length(2048)]
|
#[Assert\Length(max: 2048)]
|
||||||
protected ?string $external_path = null;
|
protected ?string $external_path = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,14 @@ class StructuralDBElementRepository extends AttachmentContainingDBElementReposit
|
||||||
return $result[0];
|
return $result[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If the name contains category delimiters like ->, try to find the element by its full path
|
||||||
|
if (str_contains($name, '->')) {
|
||||||
|
$tmp = $this->getEntityByPath($name, '->');
|
||||||
|
if (count($tmp) > 0) {
|
||||||
|
return $tmp[count($tmp) - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//If we find nothing, return null
|
//If we find nothing, return null
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ class EntityImporter
|
||||||
}
|
}
|
||||||
|
|
||||||
//Only return objects once
|
//Only return objects once
|
||||||
return array_values(array_unique($valid_entities));
|
return array_values(array_unique($valid_entities, SORT_REGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ class PKDatastructureImporter
|
||||||
public function importPartCustomStates(array $data): int
|
public function importPartCustomStates(array $data): int
|
||||||
{
|
{
|
||||||
if (!isset($data['partcustomstate'])) {
|
if (!isset($data['partcustomstate'])) {
|
||||||
throw new \RuntimeException('$data must contain a "partcustomstate" key!');
|
return 0; //Not all PartKeepr installations have custom states
|
||||||
}
|
}
|
||||||
|
|
||||||
$partCustomStateData = $data['partcustomstate'];
|
$partCustomStateData = $data['partcustomstate'];
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,11 @@ trait PKImportHelperTrait
|
||||||
|
|
||||||
$target->addAttachment($attachment);
|
$target->addAttachment($attachment);
|
||||||
$this->em->persist($attachment);
|
$this->em->persist($attachment);
|
||||||
|
|
||||||
|
//If the attachment is an image, and the target has no master picture yet, set it
|
||||||
|
if ($attachment->isPicture() && $target->getMasterPictureAttachment() === null) {
|
||||||
|
$target->setMasterPictureAttachment($attachment);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,10 @@ class PKPartImporter
|
||||||
$this->setAssociationField($entity, 'partUnit', MeasurementUnit::class, $part['partUnit_id']);
|
$this->setAssociationField($entity, 'partUnit', MeasurementUnit::class, $part['partUnit_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setAssociationField($entity, 'partCustomState', MeasurementUnit::class, $part['partCustomState_id']);
|
if (isset($part['partCustomState_id'])) {
|
||||||
|
$this->setAssociationField($entity, 'partCustomState', MeasurementUnit::class,
|
||||||
|
$part['partCustomState_id']);
|
||||||
|
}
|
||||||
|
|
||||||
//Create a part lot to store the stock level and location
|
//Create a part lot to store the stock level and location
|
||||||
$lot = new PartLot();
|
$lot = new PartLot();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue