Skip to content

fix: output message bugs in listsites, deletegroup, export, createsiteusers, removeusers #429

Description

@jacalata

Summary

Several commands produce incorrect or garbled output compared to tabcmd 1, discovered during live server output comparison testing (2026-07).

Note: items 1-5 are fixed in branch jac/fix-output-messages. Items 6-10 are not yet fixed.


1. listsites — SITEID shows internal GUID instead of site content URL ✅ fixed

Current output:

NAME: Default  SITEID: 'c873a218-3445-423d-bc07-e6ccb5ec46cb'

Expected (tabcmd 1):

NAME: Default
SITEID: ''

Cause: list_sites_command.py passes site.id (internal UUID) instead of site.content_url.


2. deletegroup — delete log message shows UUID instead of group name ✅ fixed

Current output:

Deleting group 'e475d0c5-cbc2-413a-99b6-6842ca2827b2' from the server...

Expected:

Deleting group 'tabcmd2-test-group' from the server...

Cause: delete_group_command.py passes group_id to the status string instead of args.name.


3. export / get — "Saved" message has double space and missing content name ✅ fixed

Current output:

Saved  to 'test_export.pdf'

Expected (tabcmd 1):

===== Saved Regional/Obesity to 'Regional.pdf'

Cause: datasources_and_workbooks_command.py calls export.success with "" as the content name.


4. createsiteusers — error details prints raw Python class name ✅ fixed

Current output:

Error details:
['ServerResponseError']

Expected: human-readable error message (e.g. 404: Item not found)

Cause: create_site_users.py uses e.__class__.__name__ instead of str(e).


5. removeusers — progress message says "from the server" instead of "from group <name>" ✅ fixed

Current output:

Removing users listed in users.csv from the server...

Expected (tabcmd 1):

===== Removing users listed in users.csv from the group silly...

Cause: wrong string key used; new tabcmd.removeusers.group key added.


6. delete — shows full project path with double space

Current output:

Removing  '/default/tabcmd2-test-wb' from the server...

Expected:

===== Removing workbook 'tabcmd2-test-wb' from the server...

Two issues: double space (empty content_type when not specified), and the path /default/workbook-name format is not what tabcmd 1 showed. The project path in the message is a required change.

Location: delete_command.py line 50, delete.status string format.


7. refreshextracts — raw i18n key concatenated into error output

Current output:

tabcmd.debug.error_messageError refreshing extract

Expected: a clean error message.

Cause: constants.py:68 uses logger.info(_("tabcmd.debug.error_message") + message) — the key isn't resolving (stale .mo file) and even when it does resolve it produces "Error message: Error refreshing extract" at INFO level when it should be DEBUG. Should be logger.debug.

Location: tabcmd/commands/constants.py line 68.


8. All action lines missing ===== prefix

Current output:

Creating group 'tabcmd2-test-group' on the server...
Succeeded

Expected (tabcmd 1):

===== Creating group 'my-group' on the server...
===== Succeeded

Affects: creategroup, createproject, publish, deletegroup, deleteproject, and others. The ===== prefix on action lines (distinct from the session header lines which already have it) is absent from most command output.


9. login — extra "Fetched user details from server" line; missing "Signing in..." step

Current output:

Connecting to the server...
Fetched user details from server
Succeeded

Expected (tabcmd 1):

===== Connecting to the server...
===== Signing in...
===== Succeeded

10. logout — missing redirect line

Current output:

Signed out

Expected (tabcmd 1):

===== redirecting to https://.../auth
===== Signed out

Files to change

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions