Repository navigation
My Profile bookmarks, developer guide, and get_my_resources fix - #413
Merged
Merged
Conversation
pcoldico
force-pushed
the
my-profile-bookmarks-dev-guide
branch
from
October 2, 2026 15:21
325179c to
b4c35fd
Compare
My Profile app (my_egeria/my_egeria/DemoCode/My_Profile): - Ctrl+B on the main screen and the Shop for Data screen now pre-fills the bookmark GUID from the highlighted DataTable row. A new get_row_guid helper reads any column whose heading ends in "GUID", and falls back to resolving the row's Qualified Name for tables with no GUID column (e.g. the glossary table). - Bookmarks are now stored as members of a private per-user collection, Bookmarks::<user id>, created on first use, anchored to the user's profile and linked to it by a ResourceList relationship (resourceUse "Bookmarks"). This replaces calls to add_asset_to_favorites / remove_asset_from_favorites, which don't exist in pyegeria, and a placeholder find_locations listing. - MyBookMarksScreen: existing bookmarks now display in its table, Ctrl+R pre-fills the highlighted bookmark's GUID, the Quit buttons work, and two button handlers no longer share a name (the clash had disabled "Add New Bookmark" and made delete call add). pyegeria: - MyProfile.get_my_resources always failed with OMAG-COMMON-400-018 because its rendering hint "Resource" was sent as metadataElementTypeName. Pass filter_results_by_type=False, matching the .http ground truth. Logged as ISSUE-115, with a micro-test that captures the outgoing request body. Docs: - New docs/developer_guide_pyegeria_textual.md for Python programmers new to Egeria and Textual: egeria-workspaces quick-start setup, pyegeria and Textual essentials, a My Profile case study, Dr. Egeria and hey_egeria as further examples, testing and debugging, with attributed references to the Egeria, pyegeria and Textual guides. - Runnable step-by-step examples and a headless screenshot generator in examples/developer_guide/; screenshots in docs/images/developer-guide/. - My Profile manual gains a Bookmarks section and shortcuts. Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
pcoldico
force-pushed
the
my-profile-bookmarks-dev-guide
branch
from
October 2, 2026 15:28
b4c35fd to
353d295
Compare
4 tasks done
dwolfson
approved these changes
Oct 2, 2026
pcoldico
added a commit
to pcoldico/egeria-python
that referenced
this pull request
Oct 2, 2026
Rebased onto main after odpi#413 (which added its own bookmarks implementation), reconciling the two: - Bookmarks keep odpi#412's structure (BookmarksMixin in bookmarks_handler.py, Ctrl+K / 'k' to bookmark the highlighted row, in-place reload, 'd' to remove) and its tests, with odpi#413's storage: the collection is Bookmarks::<user id>, anchored to the user's profile and linked from it by a ResourceList relationship (resourceUse "Bookmarks"), so MyProfile.get_my_resources() finds it and existing odpi#413 bookmarks are kept. Adding an existing bookmark now warns instead of duplicating it. - Ctrl+B (main and Shop for Data) still opens the bookmarks screen with the highlighted row's GUID pre-filled; get_row_guid moves into the mixin and uses row_identity. - odpi#413's bookmark methods in my_profile_app.py are removed in favour of the mixin. The manual keeps odpi#412's rewrite, with the bookmarks section updated; the developer guide's bookmarks passages and screenshots are updated to match. Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
dwolfson
pushed a commit
that referenced
this pull request
Oct 2, 2026
Rebased onto main after #413 (which added its own bookmarks implementation), reconciling the two: - Bookmarks keep #412's structure (BookmarksMixin in bookmarks_handler.py, Ctrl+K / 'k' to bookmark the highlighted row, in-place reload, 'd' to remove) and its tests, with #413's storage: the collection is Bookmarks::<user id>, anchored to the user's profile and linked from it by a ResourceList relationship (resourceUse "Bookmarks"), so MyProfile.get_my_resources() finds it and existing #413 bookmarks are kept. Adding an existing bookmark now warns instead of duplicating it. - Ctrl+B (main and Shop for Data) still opens the bookmarks screen with the highlighted row's GUID pre-filled; get_row_guid moves into the mixin and uses row_identity. - #413's bookmark methods in my_profile_app.py are removed in favour of the mixin. The manual keeps #412's rewrite, with the bookmarks section updated; the developer guide's bookmarks passages and screenshots are updated to match. Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
My Profile app: bookmarks
get_row_guid, reads any column whose heading ends in "GUID".Bookmarks::<user id>.ResourceListrelationship with resourceUse "Bookmarks".add_asset_to_favoritesandremove_asset_from_favorites, which don't exist in pyegeria, so adding or deleting a bookmark crashed the app with anAttributeError. The bookmark list also used to come from a placeholderfind_locationssearch.MyBookMarksScreenfixes:pyegeria:
MyProfile.get_my_resources(ISSUE-115)OMAG-COMMON-400-018. The method's display hint,"Resource", was being sent to Egeria asmetadataElementTypeName, and Egeria has no such type.filter_results_by_type=False, which matches the.httpground truth and the existingget_collection_membersfix.Docs
New
docs/developer_guide_pyegeria_textual.md: a developer guide for Python programmers new to Egeria and Textual. It covers:Each section that summarises another guide links to it as the source: Egeria, pyegeria and Textual.
Examples: three runnable, step-by-step programs and a headless screenshot generator in
examples/developer_guide/. The screenshots are indocs/images/developer-guide/.Manual: the My Profile manual has a new Bookmarks section and the new keyboard shortcuts.
Test plan
get_attached_collections.get_my_resourceschecked live in JSON, DICT and LIST output formats. The new micro-test fails without the fix and passes with it.tests/micro-tests/my_profile/results are unchanged from before these changes.🤖 Generated with Claude Code