Skip to content
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

[Refactor] Custom states #8438

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

SchrodingersGat
Copy link
Member

@SchrodingersGat SchrodingersGat commented Nov 6, 2024

This PR is an update to the "custom states" functionality, to improve usability and extend user interface integration

Tasks

  • Improved back-end validation
  • Improved form management for creating / editing a custom state
  • Display proper custom state in PUI for individual detail views
  • Display proper custom state in PUI for tables
  • Ensure matching logical state is set when transitioning to a custom state
  • Check that "custom" state can only be set to appropriate values
  • Look at removing "model" field from CustomState table
  • Add custom states to the demo dataset
  • Add playwright tests for custom states

@SchrodingersGat SchrodingersGat added enhancement This is an suggested enhancement or new feature user interface User interface refactor Platform UI Related to the React based User Interface labels Nov 6, 2024
@SchrodingersGat SchrodingersGat added this to the 1.0.0 milestone Nov 6, 2024
Copy link

netlify bot commented Nov 6, 2024

Deploy Preview for inventree-web-pui-preview failed.

Name Link
🔨 Latest commit e131343
🔍 Latest deploy log https://app.netlify.com/sites/inventree-web-pui-preview/deploys/67313a11ac830c0008f2359e

@SchrodingersGat
Copy link
Member Author

@matmair I have been looking at the implementation of custom states and there are a few areas which I think can be cleaned up a bit.

One question I have is: what is the value of the model (ContentType) field on the InvenTreeCustomUserStateModel model? We already map to a status group, which implies a given model type. I don't see the value of having a separate field (which the user has to know how to fill in) - which can conflict with the specified statuscode.

I would suggest that we remove the model field and rely on the reference_status field to perform this functionality

@matmair
Copy link
Member

matmair commented Nov 6, 2024

@SchrodingersGat there is only an implicit link between status groups and models. When you start shipping custom models in plugins and using custom states there you need some way to prefilter possible selections.

@SchrodingersGat
Copy link
Member Author

I don't understand the use case here - in what circumstance would you want to make a custom state which overrides a BuildStatus code, but links to a SalesOrderShipment model? (for example)

@matmair
Copy link
Member

matmair commented Nov 6, 2024

The use case is enabling order when you have 40+ state groups and need to filter to manage them. If you see no value you can remove this and I will patch my custom fork for support, it seems anyway like I will never be able to use upstream.

There is no reliable link between a state named "SomeModelStatus" and the model "SomeModel" - especially with possible model name collisions between (3rd party) apps.

@wolflu05
Copy link
Contributor

wolflu05 commented Nov 6, 2024

(Just a question, no opinion here, I just want to understand your design choice)

Do you have any example scenario where custom states and models are in a relationship other than n:1? (E.g. the same custom state is assigned to multiple models. If not, doesn't that say that each custom state has only one model, which implicitly means there is a reliable link between a state and the model.

Copy link

codecov bot commented Nov 8, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.42%. Comparing base (9cd0394) to head (e131343).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8438      +/-   ##
==========================================
+ Coverage   84.36%   84.42%   +0.06%     
==========================================
  Files        1175     1170       -5     
  Lines       53662    53374     -288     
  Branches     2015     2003      -12     
==========================================
- Hits        45270    45061     -209     
+ Misses       7873     7793      -80     
- Partials      519      520       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@matmair
Copy link
Member

matmair commented Nov 9, 2024

Implicit is the key here; there is no reliable way to map a custom state to a model, thus automation that needs to make this link will not be able to function anymore if it is removed. I do not rely on implicit mapping in my business-critical LoB
apps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement This is an suggested enhancement or new feature Platform UI Related to the React based User Interface refactor user interface User interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants