Skip to content

Commit 349f2c6

Browse files
authored
Bugfix/usage report UUID (#4703)
* feat: replace user id with username in user report * feat: pagelink arrow disable * fix: import order * fix: removed things we're not doing
1 parent 0dc851a commit 349f2c6

File tree

3 files changed

+43
-14
lines changed

3 files changed

+43
-14
lines changed

backend/ee/onyx/db/usage_export.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from typing import Optional
66

77
from fastapi_users_db_sqlalchemy import UUID_ID
8+
from sqlalchemy import cast
9+
from sqlalchemy.dialects.postgresql import UUID
810
from sqlalchemy.orm import Session
911

1012
from ee.onyx.db.query_history import fetch_chat_sessions_eagerly_by_time
@@ -13,6 +15,7 @@
1315
from ee.onyx.server.reporting.usage_export_models import UsageReportMetadata
1416
from onyx.configs.constants import MessageType
1517
from onyx.db.models import UsageReport
18+
from onyx.db.models import User
1619
from onyx.file_store.file_store import get_default_file_store
1720

1821

@@ -86,15 +89,27 @@ def get_all_empty_chat_message_entries(
8689

8790

8891
def get_all_usage_reports(db_session: Session) -> list[UsageReportMetadata]:
92+
# Get the user emails
93+
usage_reports = db_session.query(UsageReport).all()
94+
user_ids = {r.requestor_user_id for r in usage_reports if r.requestor_user_id}
95+
user_emails = {
96+
user.id: user.email
97+
for user in db_session.query(User)
98+
.filter(cast(User.id, UUID).in_(user_ids))
99+
.all()
100+
}
101+
89102
return [
90103
UsageReportMetadata(
91104
report_name=r.report_name,
92-
requestor=str(r.requestor_user_id) if r.requestor_user_id else None,
105+
requestor=(
106+
user_emails.get(r.requestor_user_id) if r.requestor_user_id else None
107+
),
93108
time_created=r.time_created,
94109
period_from=r.period_from,
95110
period_to=r.period_to,
96111
)
97-
for r in db_session.query(UsageReport).all()
112+
for r in usage_reports
98113
]
99114

100115

backend/ee/onyx/server/reporting/usage_export_generation.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
from datetime import timezone
88

99
from fastapi_users_db_sqlalchemy import UUID_ID
10+
from sqlalchemy import cast
11+
from sqlalchemy.dialects.postgresql import UUID
1012
from sqlalchemy.orm import Session
1113

1214
from ee.onyx.db.usage_export import get_all_empty_chat_message_entries
1315
from ee.onyx.db.usage_export import write_usage_report
1416
from ee.onyx.server.reporting.usage_export_models import UsageReportMetadata
1517
from ee.onyx.server.reporting.usage_export_models import UserSkeleton
1618
from onyx.configs.constants import FileOrigin
19+
from onyx.db.models import User
1720
from onyx.db.users import get_all_users
1821
from onyx.file_store.constants import MAX_IN_MEMORY_SIZE
1922
from onyx.file_store.file_store import FileStore
@@ -153,11 +156,19 @@ def create_new_usage_report(
153156
# add report after zip file is written
154157
new_report = write_usage_report(db_session, report_name, user_id, period)
155158

159+
# get user email
160+
requestor_user = (
161+
db_session.query(User)
162+
.filter(cast(User.id, UUID) == new_report.requestor_user_id)
163+
.one_or_none()
164+
if new_report.requestor_user_id
165+
else None
166+
)
167+
requestor_email = requestor_user.email if requestor_user else None
168+
156169
return UsageReportMetadata(
157170
report_name=new_report.report_name,
158-
requestor=(
159-
str(new_report.requestor_user_id) if new_report.requestor_user_id else None
160-
),
171+
requestor=requestor_email,
161172
time_created=new_report.time_created,
162173
period_from=new_report.period_from,
163174
period_to=new_report.period_to,

web/src/components/PageSelector.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,19 @@ const PageLink = ({
5454
<div
5555
className={`
5656
select-none
57-
inline-block
58-
text-sm
59-
border
60-
px-3
61-
py-1
62-
leading-5
63-
-ml-px
57+
inline-block
58+
text-sm
59+
border
60+
px-3
61+
py-1
62+
leading-5
63+
-ml-px
6464
border-border
65+
${unclickable ? "text-text-200" : ""}
6566
${!unclickable ? "hover:bg-accent-background-hovered" : ""}
6667
${!unclickable ? "cursor-pointer" : ""}
67-
first:ml-0
68-
first:rounded-l-md
68+
first:ml-0
69+
first:rounded-l-md
6970
last:rounded-r-md
7071
${active ? "bg-background-200" : ""}
7172
`}
@@ -103,6 +104,7 @@ export const PageSelector = ({
103104
<div style={{ display: "inline-block" }}>
104105
<PageLink
105106
linkText="‹"
107+
unclickable={currentPage === 1}
106108
pageChangeHandler={() => {
107109
onPageChange(Math.max(currentPage - 1, 1));
108110
modifiedScrollUp();
@@ -139,6 +141,7 @@ export const PageSelector = ({
139141
})}
140142
<PageLink
141143
linkText="›"
144+
unclickable={currentPage === totalPages}
142145
pageChangeHandler={() => {
143146
onPageChange(Math.min(currentPage + 1, totalPages));
144147
modifiedScrollUp();

0 commit comments

Comments
 (0)