Skip to content

[Forwardport] Fix Magento_ImportExport not supporting unicode characters in column names #15721

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

tdgroot
Copy link
Member

@tdgroot tdgroot commented Jun 3, 2018

Original Pull Request

#15197

Description

Column names like vitamin_a_µg were being marked invalid.

Manual testing scenarios

  1. Import a catalog product csv with a column like vitamin_a_µg

Contribution checklist

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • All automated tests passed successfully (all builds on Travis CI are green)

@magento-cicd2
Copy link
Contributor

magento-cicd2 commented Jun 3, 2018

CLA assistant check
All committers have signed the CLA.

@@ -831,7 +831,7 @@ public function validateData()
if (!$this->isAttributeParticular($columnName)) {
if (trim($columnName) == '') {
$emptyHeaderColumns[] = $columnNumber;
} elseif (!preg_match('/^[a-z][a-z0-9_]*$/', $columnName)) {
} elseif (!preg_match('/^[a-z][\w]*$/u', $columnName)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why first character is supposed to be a Latin letter?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd say that a regex like '/^[\w]+$/u' would work perfectly fine as well, but I wanted to keep old behavior for whatever reason it was designed this way. Should I change it to '/^[\w]+$/u'?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. So that name like µg_vitamin_a_µg is also supported. Not sure it can start from digit or underscore though, could you check attribute validation when you create/update it via Admin UI please?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure thing. I'll get back to you.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The attribute code validation when saving happens right here: Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php#L161. The regex seems to be ^[a-z\x{600}-\x{6FF}][a-z\x{600}-\x{6FF}_0-9]{0,30}$.

It starts to look like we need a validation class for attribute codes in general, so we can unify this stuff. But that's a story for another time.

@orlangur What's your suggestion for now?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tdgroot ok, so it's not "Magento_ImportExport not supporting unicode characters in column names" actually but such attribute code are generally forbidden. I've raised an internal discussion to understand the correct approach.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@orlangur sure, I'd like to add something to it. I created the attribute in my example using the Magento API methods. To me it seems that validation of the attribute code shouldn't happen in a controller, but rather in the EAV model/repository class.

@orlangur
Copy link
Contributor

orlangur commented Aug 2, 2018

Checking with @VladimirZaets and @sidolov on this.

@sivaschenko
Copy link
Member

@orlangur , @tdgroot as there were no updates on attribute code format I will accept this pull request as a port from 2.2 to syncranize the validation between 2.2 and 2.3.

Please open a nwe pull request to fix the first letter attribute code validation in case there will be any result of technical discussion. Also, it might be useful to reach out to architeture team opening a pull request to https://github.com/magento/architecture with the proposal.

@magento-engcom-team
Copy link
Contributor

Hi @sivaschenko, thank you for the review.
ENGCOM-3439 has been created to process this Pull Request

@orlangur
Copy link
Contributor

@sivaschenko please do not change PR status without communication with others, especially when it is on hold.

This PR must be rejected according to discussion in maintainers channel and original one must be reverted for both 2.2=develop and 2.1-develop.

@orlangur orlangur closed this Nov 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants