Skip to content

My Profile: add My Network option, fix Technology Types and Shop for Data go back - #458

Merged
dwolfson merged 13 commits into
odpi:mainfrom
pcoldico:my-profile-strict-tests
Oct 16, 2026
Merged

dwolfson merged 13 commits into
odpi:mainfrom
pcoldico:my-profile-strict-tests

Conversation

@pcoldico

@pcoldico pcoldico commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Summary

My Network (new Other Functions option in the My Profile app)

  • Lists the people linked to the user's profile by a Peer relationship.
  • Searches actor profiles by name to add someone, with an optional nickname and description.
  • Shows a peer's contact methods and communities.
  • Removes a peer after a confirmation (unlink_peer_person). This removes only the link; the peer's profile is unchanged.
  • network_handler.py (NetworkMixin) makes the Egeria calls; MyNetworkScreen.py holds the screen and the confirmation dialog.
  • The experimental my_network.py script it grew from, and a my_profile_report_specs.json custom report spec, are included under DemoCode.

Fix: Technology Types "go back" crashed the app
TechnologyTypesScreen dismisses quit/go back with the strings "200"/"201", but tech_type_callback compared against the int 201. The back result was then treated as a tech type name, and .get() was called on the "No elements found" string, which raised an error. The callback now accepts both forms, handles a non-dict detail result, and stops after showing the error screen when the lookup fails.

Fix: Shop for Data had no working go back
The screen's prompt was a TextArea, which took focus when the screen opened and consumed printable keys. As a result b (go back), q, s, u, t and k did nothing, and the footer hid them. The prompt is now a Static, Escape also goes back, and "Go back" sits next to "Quit" in the footer. New tests press b and Escape as soon as the screen opens. Also tested by hand in the app: the correct footer keys show as soon as the screen opens, and they work.

Docs

  • docs/my_profile_app_manual.md has a new My Network section and keyboard reference rows.
  • docs/My-Egeria-Doc.md has a new NetworkMixin section (sequence diagram and function table), plus updates to the layout, class diagram, menu dispatch, report spec and client tables.

Housekeeping

  • Removed the empty Journals_Demo/__init__.py.

Testing

  • New tests/micro-tests/my_profile/test_network_handler.py covers the mixin, the screen and the remove confirmation. test_my_profile_app.py checks the menu routing.
  • My Network has been tested by hand against a live Egeria server.
  • The Technology Types go-back fix has been tested by hand in the app, and test_tech_types_handler.py now covers go back/quit and a missing-details result. The two existing callback tests were updated to patch Egeria, which the handler now uses.

🤖 Generated with Claude Code

pcoldico and others added 12 commits October 16, 2026 07:49
Co-authored-by: Junie <junie@jetbrains.com>
Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
…w peers

- Load the user's profile and existing Peer relationships on mount
- Search actor profiles (case-insensitive) instead of user identities
- Add description input and a Link Peer button to create the relationship

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
…, added custom report format for listing peers

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
… of the custome report format

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
Merge the experimental my_network.py functionality into the My Profile
app as a "My Network" option: list the user's peers, search for people
and add them, view a peer's contact methods and communities, and remove
a peer (with confirmation) via unlink_peer_person.

- network_handler.py: NetworkMixin doing the Egeria calls
- MyNetworkScreen.py: network screen and remove-confirmation dialog
- my_network.py: add Remove from Network button with confirmation,
  hide stale details after removal
- my_profile_report_specs.json: fix invalid JSON, query the Peer
  relationship, and show the person's GUID
- tests for the mixin, screen and option routing

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
TechnologyTypesScreen dismisses quit/go back with the strings "200"/"201",
but tech_type_callback compared against the int 201. The back result was
then treated as a tech type name, get_tech_type_detail returned the string
"No elements found", and .get() on it raised AttributeError.

- match "200"/"201" as either str or int and return to the main screen
- if the tech type detail is not a dict, notify and return to the main
  screen instead of crashing
- stop after showing the error screen when the detail lookup fails
- use the Egeria client for get_tech_type_detail

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
- user manual: My Network section (view details, search and add,
  remove with confirmation), keyboard reference rows, intro mention
- reference guide: NetworkMixin section with sequence diagram and
  function table, plus source layout, class diagram, menu dispatch,
  report spec, client and testing updates

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
Restore config/config.json and test_classification_manager.py to their
upstream versions. The config change pointed the report spec modules and
log directory at local absolute paths, and the test change was local
debugging of the Peer relationship query.

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
- go back/quit as "201"/"200" (str or int) returns to the main screen
  without looking up a tech type
- a string detail result such as "No elements found" notifies and
  returns to the main screen
- patch Egeria rather than AutomatedCuration, matching the handler, so
  the callback tests no longer try to reach the server
- a failed detail lookup now pushes only the StatusScreen

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
The screen's prompt was a TextArea, which took focus when the screen
opened. A focused TextArea consumes printable keys, so b (go back), q,
s, u, t and k did nothing and Textual hid them from the footer.

- make the prompt a Static, and mention b/Escape in it
- add Escape as a go-back key (not shown in the footer)
- move Go back next to Quit so it isn't cut off on narrow terminals
- tests: b and Escape pressed straight after the screen opens dismiss
  with [200]; the callback returns [200] to the main screen
- user manual: document Escape on Shop for Data

Signed-off-by: Peter Coldicott <86156876+pcoldico@users.noreply.github.com>
@pcoldico pcoldico changed the title My Profile: add My Network option, fix Technology Types go-back crash My Profile: add My Network option, fix Technology Types and Shop for Data go back Oct 16, 2026
@dwolfson
dwolfson merged commit f045ed2 into odpi:main Oct 16, 2026
5 checks passed
dwolfson added a commit that referenced this pull request Oct 16, 2026
Ships the My Profile "My Network" option and the Technology Types and
Shop for Data go-back fixes (#458) so egeria-workspaces can pick them up
from PyPI. The Egeria-blocked delete re-tests stay on BACKLOG.md for the
next release.

Signed-off-by: Dan Wolfson <dan.wolfson@pdr-associates.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants