Skip to content

Commit 5a8a236

Browse files
aaunario-keepersk-keeper
authored andcommitted
KC-1143 Fix aging row mapping, filtered staleness scope, test discovery
- Fix report_data.index(fmt_row) bug that could map aging columns to wrong records when rows have identical content — use enumerate instead - Scope staleness check to filtered users' records when user_filter is set, preventing full enterprise sync_down on filtered queries - Fix team discovery in test script: use 'name' key (not 'team_name') matching actual enterprise-info JSON output
1 parent 0a17109 commit 5a8a236

3 files changed

Lines changed: 20 additions & 10 deletions

File tree

keepercommander/commands/compliance.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -598,11 +598,10 @@ def format_table(rows):
598598

599599
# Append aging columns to each row
600600
record_lookup = sox_data.get_records()
601-
for fmt_row in report_data:
601+
for idx, fmt_row in enumerate(report_data):
602602
rec_uid = fmt_row[0]
603603
# Handle collapsed UIDs in table format
604-
if not rec_uid and report_data:
605-
idx = report_data.index(fmt_row)
604+
if not rec_uid:
606605
for i in range(idx - 1, -1, -1):
607606
if report_data[i][0]:
608607
rec_uid = report_data[i][0]

keepercommander/sox/__init__.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -548,10 +548,21 @@ def save_records(records):
548548
sd = get_prelim_data(params, enterprise_id, rebuild=rebuild, min_updated=min_updated, cache_only=not min_updated, shared_only=shared_only, user_filter=user_filter)
549549
enterprise_users = params.enterprise.get('users', [])
550550
all_user_node_ids = {e_user.get('enterprise_user_id'): e_user.get('node_id') for e_user in enterprise_users}
551-
has_stale_records = rebuild or any(
552-
(rec.last_compliance_refreshed or 0) < min_updated
553-
for rec in sd.storage.records.get_all()
554-
)
551+
if user_filter is not None:
552+
filtered_user_recs = set()
553+
for uid in user_filter:
554+
user = sd.get_user(uid)
555+
if user:
556+
filtered_user_recs.update(user.records)
557+
has_stale_records = rebuild or any(
558+
(rec.last_compliance_refreshed or 0) < min_updated
559+
for rec in sd.storage.records.get_all() if rec.record_uid in filtered_user_recs
560+
)
561+
else:
562+
has_stale_records = rebuild or any(
563+
(rec.last_compliance_refreshed or 0) < min_updated
564+
for rec in sd.storage.records.get_all()
565+
)
555566
if has_stale_records:
556567
sync_down(sd, node_id, user_node_id_lookup=all_user_node_ids)
557568
if user_filter is not None:

tests/compliance_test.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ print(active[-1]['email'] if active else '')
9393
import json, sys
9494
teams = json.loads(sys.stdin.read())
9595
skip = {'everyone', 'admins'}
96-
candidates = [t for t in teams if t.get('team_name','').lower() not in skip]
97-
print(candidates[0]['team_name'] if candidates else (teams[0]['team_name'] if teams else ''))
96+
candidates = [t for t in teams if t.get('name', t.get('team_name','')).lower() not in skip]
97+
print(candidates[0].get('name', candidates[0].get('team_name','')) if candidates else (teams[0].get('name', teams[0].get('team_name','')) if teams else ''))
9898
" <<< "$teams_json")
9999
echo " TEAM1=$TEAM1"
100100
fi
@@ -104,7 +104,7 @@ import json, sys
104104
teams = json.loads(sys.stdin.read())
105105
target, u1 = '$TEAM1', '$USER1'
106106
for t in teams:
107-
if t.get('team_name','') == target:
107+
if t.get('name', t.get('team_name','')) == target:
108108
members = t.get('users', [])
109109
others = [m for m in members if m != u1]
110110
if others:

0 commit comments

Comments
 (0)