intent: a to-one relation picked on create and fixed afterwards (editable on the New form, 409 on a changed value in an update)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start by reading the relation handling in the power and personal update controllers, then inspect how document-view.html.template and form-view.html.template render relation fields and how .test manifests mark them. Define a relation option that permits selection on create, shows the field read-only on edit, and returns a translatable 409 when an update changes its stored value while leaving omitted values and system writes unaffected. Add tests for those cases, including the #7831 payload-check interaction.
Written by the indexing model from the issue text.
Description
Shape asked: a to-one relation that the user picks on CREATE and that is fixed from then on. For example:
relations:
- { name: ProjectTimesheet, kind: manyToOne, to: ProjectTimesheet, required: true, fixedAfterCreate: true }
- { name: Employee, kind: manyToOne, to: Employee, model: employees, required: true, personal: true, fixedAfterCreate: true }
Expected behaviour:
- The NEW form renders the picker as usual. The EDIT form renders it read-only.
- A user PUT (power and personal controller) that carries a different value than the stored row answers 409 with a translatable message (
checks.<Entity>_fixed_<relation>). A payload that omits it keeps the stored value. - System writes (roll-ups, workflow steps, generates) are unaffected.
- The
.testmanifest marks the relation read-only on edit, so the generic UI flow does not try to change it (#7554).
Why no 14.88.0 construct covers it:
calculatedActionOnUpdateon the relation (the "keep" pattern) holds the value server-side. But the form templates read any update action as "derived" and render the controldisabledon the NEW form too (document-view.html.template/form-view.html.template,$readonly = ... || $property.calculatedActionOnUpdate). So the user can no longer pick the relation when creating the record. That is fine for a system-written back-reference such asSalesInvoice.Proforma, but wrong for a user-chosen placement.readOnly:is refused on a relation (#7555).immutableWhenis status-scoped and locks the whole record. A DRAFT timesheet must stay editable.- No
checks:kind compares the payload with the stored row.
Case: BusinessIntents/base-timesheets#43 (catalogue T10). An employee can move their own timesheet to another project-month, so its hours land on another customer's invoice with the snapshots of the old placement. The module now carries a hand-written guard (custom/timesheets/TimesheetPlacementGuard.java, the calculatedActionOnUpdate of a read-only scalar snapshot that throws 409). It should be retired once this construct exists.
Related: #7831 (a kept relation is read from the payload by the checks).
- Dominant language
- Java
- Stars
- 278
- Forks
- 97
- Avg merge
- 18h 53m
- Merged PRs (30d)
- 228
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from eclipse-dirigible/dirigible
-
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
eclipse-dirigible/dirigible#7958 ·
Maintainers usually reply within 1 day
-
intent: a create-from without fromStatus answers 200 on a missing or unknown source id (no 400/404)Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
eclipse-dirigible/dirigible#7945 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
eclipse-dirigible/dirigible#7891 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
eclipse-dirigible/dirigible#6538 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
eclipse-dirigible/dirigible#4812 ·
Maintainers usually reply within 1 day
All issues in eclipse-dirigible/dirigible
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
navikt/mock-oauth2-server#1129 ·
Maintainers usually reply within 1 day
-
bug main ui
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
openhab/openhab-webui#4600 ·
Maintainers usually reply within 4 days
-
`DeepSeekChatModel` streaming returns no content when chunks have no `id`Possibly taken @lejuho claimed this today. Openstatus: waiting-for-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
spring-projects/spring-ai#7214 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QuiltMC/update-quilt-meta#28 ·
-
awaiting triage Documentation P3
Difficulty 1/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day