Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert uncaught exceptions to messages.error #1162

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

hmpf
Copy link
Contributor

@hmpf hmpf commented Jan 24, 2025

To test this DEBUG needs to be set to False to force not showing the yellow debug page.

@hmpf hmpf added frontend Affects frontend error handling labels Jan 24, 2025
@hmpf hmpf self-assigned this Jan 24, 2025
@codecov-commenter
Copy link

codecov-commenter commented Jan 24, 2025

Codecov Report

Attention: Patch coverage is 18.75000% with 13 lines in your changes missing coverage. Please review.

Project coverage is 78.32%. Comparing base (a18cfcc) to head (6b68b12).
Report is 6 commits behind head on master.

Files with missing lines Patch % Lines
src/argus/htmx/middleware.py 18.75% 13 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1162      +/-   ##
==========================================
- Coverage   78.48%   78.32%   -0.17%     
==========================================
  Files         141      141              
  Lines        5442     5457      +15     
==========================================
+ Hits         4271     4274       +3     
- Misses       1171     1183      +12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@podliashanyk podliashanyk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comments below

@@ -84,7 +95,11 @@ def process_response(self, request: HtmxHttpRequest, response: HttpResponse) ->
has_error_message = any("error" in message.tags for message in storage)
storage.used = False
if not has_error_message:
messages.error(request, "An error occured while processing your request, please try again")
error_msg = f"{response.status_code} {response.reason_phrase}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For better UX I would prefer to show an original error msg if there is any in content, and only show status_code and reason_phrase if there is no error message that was passed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is used when no error message was passed!? That is: a fixed text is combined with what the response knows.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is also used on f.e. return HttpResponseBadRequest("Some detailed err msg"), but "Some detailed err msg" gets dropped

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't that become "An error occurred while processing your request, please try again: STATUSCODE Some detailed err msg"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it becomes "An error occurred while processing your request, please try again: 400 BadRequest"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See new commit

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works kinda, formatting is off though. The message reads: "An error occured while processing your request, please try again: b'Some detailed err msg'".
I would also suggest to shorten "An error occured while processing your request, please try again:" to "An error occured while processing your request:", or "An unexpected error occurred:".

src/argus/htmx/middleware.py Outdated Show resolved Hide resolved
@hmpf hmpf requested a review from podliashanyk January 24, 2025 14:20
if not error_msg:
error_msg = f"{response.status_code} {response.reason_phrase}"
messages.error(
request, f"An error occured while processing your request, please try again: {error_msg}"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small comment:

Suggested change
request, f"An error occured while processing your request, please try again: {error_msg}"
request, f"An error occured while processing your request: {error_msg}. Please try again"

@hmpf hmpf requested a review from elfjes January 27, 2025 07:56
Comment on lines +69 to +75
def process_exception(self, request, exception):
error_msg = "500 Internal Server Error"
if str(exception):
error_msg += f": {exception}"
messages.error(request, error_msg)
LOG.error(error_msg)
return None
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wait, now that I think about this. I don't think we should be returning the raw exception message to the user. This could lead to leaking sensitve information to the user which is a security risk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Changes requested
Development

Successfully merging this pull request may close these issues.

5 participants