Skip to content

feat(Water Body Local Organization): add read perms for members - #338

Merged
barredterra merged 5 commits into
alyf-de:version-15-hotfixfrom
barredterra:lan-888
Jul 3, 2026
Merged

barredterra merged 5 commits into
alyf-de:version-15-hotfixfrom
barredterra:lan-888

Conversation

@barredterra

@barredterra barredterra commented Jul 3, 2026 •

Copy link
Copy Markdown
Member

Summary

This PR makes it visible on Water Body which local organization is responsible for maintaining a water body, without exposing members or contact data.

The previous permission-based approach was reverted because it had an unwanted side effect: water body managers from one organization could potentially see contacts from another organization. Instead, Water Body now loads and renders only the responsible organization name and optional Note.

Changes

  • Shows responsible local organizations directly on Water Body.
  • Adds the optional Note field to document maintained sections or other responsibility details.
  • Loads only the organization name and note needed for display.
  • Reverts broad member read permissions on Water Body Management Local Organization to avoid exposing contact data across organizations.

Test Plan

  • Verify that a member can see the responsible organization name on a water body.
  • Verify that a member can see responsible organizations outside their own organization.
  • Verify that a member can see the optional note when maintained sections are documented.
  • Verify that members cannot see contacts or member details from other organizations.
  • Verify that regional users can maintain the optional note.

- viewing contacts is not allowed (elevated docperm)
- not restricted to own organization (ignore_user_permissions)
@barredterra barredterra changed the title lan 888 feat(Water Body Local Organization): add read perms for members Jul 3, 2026
@greptile-apps

greptile-apps Bot commented Jul 3, 2026 •

Copy link
Copy Markdown
Contributor

Confidence Score: 4/5

The JS rendering and new note field are correct, but the onload query will raise a permission error for LANDA Members and should be fixed before merging.

The frappe.get_all call in get_water_body_management_local_organizations runs without ignore_permissions=True. LANDA Member is not listed in the Water Body Management Local Organization doctype permissions, so the query will raise frappe.PermissionError when any member opens a Water Body form, preventing the document from loading at all. This directly breaks the feature for the intended audience.

landa/water_body_management/doctype/water_body/water_body.py — the get_water_body_management_local_organizations method needs ignore_permissions=True on its frappe.get_all call.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant Member as LANDA Member (browser)
    participant WB as Water Body (server onload)
    participant DB as Database (Water Body Mgmt Local Org)
    participant JS as water_body.js (client)

    Member->>WB: Open Water Body form
    WB->>DB: "frappe.get_all(Water Body Management Local Organization, filters={water_body, disabled=0}, fields=[organization, organization_name, note])"
    DB-->>WB: "[{organization, organization_name, note}, ...]"
    WB-->>Member: doc.__onload.water_body_management_local_organizations
    Member->>JS: refresh → render_water_body_management_local_organizations
    JS->>JS: Read orgs from frm.doc.__onload
    JS->>Member: Render HTML grid (org name + note, XSS-escaped)
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant Member as LANDA Member (browser)
    participant WB as Water Body (server onload)
    participant DB as Database (Water Body Mgmt Local Org)
    participant JS as water_body.js (client)

    Member->>WB: Open Water Body form
    WB->>DB: "frappe.get_all(Water Body Management Local Organization, filters={water_body, disabled=0}, fields=[organization, organization_name, note])"
    DB-->>WB: "[{organization, organization_name, note}, ...]"
    WB-->>Member: doc.__onload.water_body_management_local_organizations
    Member->>JS: refresh → render_water_body_management_local_organizations
    JS->>JS: Read orgs from frm.doc.__onload
    JS->>Member: Render HTML grid (org name + note, XSS-escaped)
Loading

Fix All in Cursor

Reviews (4): Last reviewed commit: "fix: null guard on onload" | Re-trigger Greptile

@barredterra

Copy link
Copy Markdown
Member Author

Unerwünschter Nebeneffekt: Gewässerbetreuung des einen Vereins könnte nun Kontakte des anderen Vereins sehen.

@barredterra barredterra closed this Jul 3, 2026
@barredterra barredterra reopened this Jul 3, 2026
Comment thread landa/water_body_management/doctype/water_body/water_body.js Outdated
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Comment thread landa/water_body_management/doctype/water_body/water_body.py
@barredterra
barredterra merged commit 19a816a into alyf-de:version-15-hotfix Jul 3, 2026
9 checks passed
@barredterra
barredterra deleted the lan-888 branch July 3, 2026 15:48
@barredterra

Copy link
Copy Markdown
Member Author

🎉 This PR is included in version 15.3.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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.

1 participant