-
Notifications
You must be signed in to change notification settings - Fork 147
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
Notifications Improvements #301
Conversation
* initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * addressed comments regarding imports/enum naming * fixed alphabetical order
* initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * added template support * made changes to reflect private changes * added helper function * fixed lint issue * addressed comments, added some type checking and cleaned up comments * testing removing test * fixed linter * fixed lint * fixed linting issues * skip type checking * fixed lint * fixed typing on get request args * removed typing for get request to fix lint issues * fixed linter again * re added test * raise exception inside of getmailclient * added exceptions * addressed comments * whitespace issue * removed calls to get_query_param * fixed syntax error
* basic e2e functionality for adding/removing * send_notification refactor * fix lint errors * blank line lint error * fixed syntax issue * arg typing * addressed comments, fixed code style
* Prevent user from notifying themselves * removed exception * added owner check to send_notification
* fixed return for no recipients * fixed linter issue
* init of request form * basic request component * getting basic functionality in * clearing out css * removed z-index fixes and add constants * fixed string casting * added redux-saga calls * removed reset request notification * fixed tests * addressed comments, added basic test, added redux state management for opening/closing component * added tests, just need to add render test * cleaned up component tests: * addressed html/css comments * removed unecessary styling * removed collapsed class * cleaned up render method * fixed test
* added button to open up request component * removed tabledetail changes * className styling * fixed text-decoration * added tests, changed naming for OpenRequest * styling formatting
* init for fixing email copy for request, add, and remove * removed print statement * fixed python unit test * fixed linter issues * addressed comments, fixed linter issues * added notification unit test * fixed test positional arg * fix test
* init of adding action logging * changed location of action logging * fixed linter errors * fixed comment * addressed comments
* init * made fixes * cleaned up code * fixed color issues * fixed import order * fixed styling, changed ducks/sagas * User dropdown (#263) * init * fixed sty;es * fixed test issue * fixed test * added tests, addressed comments
* added tests + readonly field to stop errors * fixed tslint * addressed comments, added header tests
* Request form navigation fix, dropdown fix * added test * added unique id to dropdown
* init * added event handlers * removed test file * added constants * addressed comments * fixed test, removed all links to page * updated test * fixed call to onclick * removed preferences page
* Python cleanup + tests * More tests + revert some unecessary changes
* Notifications ducks cleanup + tests * Fix issues
* Add notification config * Code cleanup * More cleanup + add a test * Add some doc for how to enable features * Add config utils test + fix type error
* Relative URLs to child configuration docs Relative URLs to docs in the same folder should do. They work for any branch, local copies of the docs - and should work better if we ever (or whenever :-) we get to having e.g a Sphinx generated site. * Update application_config.md Relative doc link * Update flask_config.md Relative doc link * Update flask_config.md Relative doc link
…tendlibrary into amundsen-notifications
Will cleanup this branch then change PR to merge into master |
Not sure how this got closed. |
7c35cc5
to
1e4c06f
Compare
@danwom already merged Still need changes reviewed before finishing the unit tests. |
this.props.submitNotification( | ||
recipients, | ||
sender, | ||
NotificationType.METADATA_REQUESTED, | ||
{ | ||
comment, | ||
resource_name: this.props.displayName, | ||
resource_url: window.location.href, | ||
resource_path: `/table_detail/${cluster}/${database}/${schema}/${table_name}`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we can share code with getLink
in TableListItem
to generate links.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given the discrepancies between the schema we get from the search service and the schema we get from the metadata service, I opted not to write that method since it would have more branching logic than common logic accounting for the differences in schemas + logging params.
Yet another reason to unify the schemas sooner rather than later to make the code on the frontend more maintainable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see.
If I could redo this logic, the URL would just be table_details?key=${table key}
and then we'd never need to deal with the whole match params and lengthy url building.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can still do this if the team agree and we ever have opportunity to prioritize it or do some tech debt work. We would just have to write some kind of migration support code so that old url patterns convert to new url patterns.
amundsen_application/static/js/components/TableDetail/RequestMetadataForm/index.tsx
Outdated
Show resolved
Hide resolved
def get_notification_html(*, notification_type: str, options: Dict, sender: str) -> str: | ||
""" | ||
Returns the formatted html for the notification based on the notification_type | ||
:return: A string representing the html markup to send in the notification | ||
""" | ||
url_base = app.config['FRONTEND_BASE'] | ||
if url_base.endswith('/'): | ||
raise Exception('app.config["FRONTEND_BASE"] should not have a trailing "/""') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of raising an exception if FRONTEND_BASE
has a /
and when resource_path
doesn't have a /
, could we do a smart join to quietly handle either case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could but then the question is how. Only thing I can think of to resolve your concern without turning this into url validation project is to join the two and check the two characters at the intersection (the character that exists at the length of FRONTEND_BASE
, and the character directly after) and check that one and only one of those characters is a /
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implemented the approach I mentioned above.
amundsen_application/static/js/components/TableDetail/RequestMetadataForm/index.tsx
Outdated
Show resolved
Hide resolved
|
||
// TODO: Use css-modules instead of 'import' | ||
import './styles.scss'; | ||
|
||
interface DispatchFromProps { | ||
openRequestDescriptionDialog: (checkedInputs: string[]) => ToggleRequestAction; | ||
openRequestDescriptionDialog: (requestMetadataType: RequestMetadataType, columnIndex: number) => OpenRequestAction; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still not a big fan of 'columnIndex', especially considering that sorting and filtering columns are coming up. We could probably pass an entire TableColumn
or even just the name
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can go with the name
. The thinking here was to avoid passing a repetitive chunks of data.
* Clean up doc (#249) * Remove example folder in FE (#251) * Add better logging for profile page views (#239) * add stalebot config (#264) * Update stalebot setting (#268) * Adds the request timeout configuration (#275) * Adds the request timeout configuration * Bumps the version to take advantage of request timeout * Update AxiosError handling (#283) * Update v0.ts * lint fix * Use Redux-Saga for Search Actions (#265) * Added redux actions and sagas instead for each search action: `submitSearch`, `setResource`, `setPageIndex`, `loadPreviousSearch`, and `UrlDidUpdate`. This greatly simplifies the `SearchPage` logic in preparation for adding filters. * Added `navigation-utils`. * Removed `SQUASH COMMITS` from the PR template (#287) Removed `SQUASH COMMITS` from the PR template * TagInfo now fires 'submitSearch' instead of using navigation (#285) * Remove render_template for feedback email (#293) * Remove render_template for feedback email * Fix html markup * Added auto-select resource after searching (#292) * Truncate the column type (#297) * Truncate the column type * Update truncation method * Cleanup logic * Improve table & columns description formatting (#98) (#298) * Add support for React-Markdown to editable text fields * Add support for windows via cross-env * Update EditableText component (#299) * Fix some styling issues with react-markdown * Update EditableText to use React Refs instead of ref callbacks * Add configs for table and column description max lengths * Change 'json' to 'data' field for Python Requests (#303) * Switch usage of 'json' to 'data' in metadata APIs * Use 'raw_request=True' for Envoy client post/put APIs * Update README.md (#302) * Link deeper to doc content (#304) Summary of Changes Will scroll past GitHub repo folders (specially more handy on small screens like phones/tablets) Like amundsen-io/amundsendatabuilder#147 * Fixed linebreaks with Markdown descriptions (#305) * Amundsen Notifications Without Preferences (#273) * Initial start to notifications API (#215) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * addressed comments regarding imports/enum naming * fixed alphabetical order * Notifs post email functionality (#222) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * added template support * made changes to reflect private changes * added helper function * fixed lint issue * addressed comments, added some type checking and cleaned up comments * testing removing test * fixed linter * fixed lint * fixed linting issues * skip type checking * fixed lint * fixed typing on get request args * removed typing for get request to fix lint issues * fixed linter again * re added test * raise exception inside of getmailclient * added exceptions * addressed comments * whitespace issue * removed calls to get_query_param * fixed syntax error * Send notification when adding/removing owner from table (#237) * basic e2e functionality for adding/removing * send_notification refactor * fix lint errors * blank line lint error * fixed syntax issue * arg typing * addressed comments, fixed code style * Prevent Self-Notifications (#243) * Prevent user from notifying themselves * removed exception * added owner check to send_notification * Fixed return for no recipients (#244) * fixed return for no recipients * fixed linter issue * Request notifications component (#238) * init of request form * basic request component * getting basic functionality in * clearing out css * removed z-index fixes and add constants * fixed string casting * added redux-saga calls * removed reset request notification * fixed tests * addressed comments, added basic test, added redux state management for opening/closing component * added tests, just need to add render test * cleaned up component tests: * addressed html/css comments * removed unecessary styling * removed collapsed class * cleaned up render method * fixed test * Open request component (#254) * added button to open up request component * removed tabledetail changes * className styling * fixed text-decoration * added tests, changed naming for OpenRequest * styling formatting * Add, Request, and Remove Email Copy (#257) * init for fixing email copy for request, add, and remove * removed print statement * fixed python unit test * fixed linter issues * addressed comments, fixed linter issues * added notification unit test * fixed test positional arg * fix test * Add notification action logging (#258) * init of adding action logging * changed location of action logging * fixed linter errors * fixed comment * addressed comments * remove request test call (#259) * hide request if description already exists (#269) * fixed open request button, request form styling (#267) * Added request dropdown component (#262) * init * made fixes * cleaned up code * fixed color issues * fixed import order * fixed styling, changed ducks/sagas * User dropdown (#263) * init * fixed sty;es * fixed test issue * fixed test * added tests, addressed comments * Request Metadata Component Tests (#270) * added tests + readonly field to stop errors * fixed tslint * addressed comments, added header tests * Request form navigation fix, dropdown fix (#272) * Request form navigation fix, dropdown fix * added test * added unique id to dropdown * Creates User Preferences page with no functionality (#266) * init * added event handlers * removed test file * added constants * addressed comments * fixed test, removed all links to page * updated test * fixed call to onclick * removed preferences page * Python cleanup + tests (#277) * Python cleanup + tests * More tests + revert some unecessary changes * Bring dropdown UI closer to design (#278) * Rename OpenRequestDescription for clarity + code cleanup + test additions (#279) * Notifications ducks cleanup + tests (#280) * Notifications ducks cleanup + tests * Fix issues * Fix template for edge case of empty form (#281) * Temporary debugging code, will revert * Temporary debugging code, will revert * Implement notification form confirmation (#289) * Preserve compatibility in base_mail_client (#290) * Notifications Configs + Doc (#291) * Add notification config * Code cleanup * More cleanup + add a test * Add some doc for how to enable features * Add config utils test + fix type error * Relative URLs to child configuration docs (#294) * Relative URLs to child configuration docs Relative URLs to docs in the same folder should do. They work for any branch, local copies of the docs - and should work better if we ever (or whenever :-) we get to having e.g a Sphinx generated site. * Update application_config.md Relative doc link * Update flask_config.md Relative doc link * Update flask_config.md Relative doc link * Remove temporary debugging code * Improve behavior of notification sending for owner editing (#296) * Initial Implementation: Notification only on success * Cleanup + tests: Notification only on success * Cleanup: Remove test code to trigger failure * Cleanup: Lint fix * Workaround for not notifying teams or alumni * Cleanup: Remove import mistake * Utilize NotificationType enums instead of hardcoded string * Remove use of render_template * More minor cleanups * Address some feedback * Cleanup * More cleanup * Notifications Improvements (#301) * Initial start to notifications API (#215) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * addressed comments regarding imports/enum naming * fixed alphabetical order * Notifs post email functionality (#222) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * added template support * made changes to reflect private changes * added helper function * fixed lint issue * addressed comments, added some type checking and cleaned up comments * testing removing test * fixed linter * fixed lint * fixed linting issues * skip type checking * fixed lint * fixed typing on get request args * removed typing for get request to fix lint issues * fixed linter again * re added test * raise exception inside of getmailclient * added exceptions * addressed comments * whitespace issue * removed calls to get_query_param * fixed syntax error * Send notification when adding/removing owner from table (#237) * basic e2e functionality for adding/removing * send_notification refactor * fix lint errors * blank line lint error * fixed syntax issue * arg typing * addressed comments, fixed code style * Prevent Self-Notifications (#243) * Prevent user from notifying themselves * removed exception * added owner check to send_notification * Fixed return for no recipients (#244) * fixed return for no recipients * fixed linter issue * Request notifications component (#238) * init of request form * basic request component * getting basic functionality in * clearing out css * removed z-index fixes and add constants * fixed string casting * added redux-saga calls * removed reset request notification * fixed tests * addressed comments, added basic test, added redux state management for opening/closing component * added tests, just need to add render test * cleaned up component tests: * addressed html/css comments * removed unecessary styling * removed collapsed class * cleaned up render method * fixed test * Open request component (#254) * added button to open up request component * removed tabledetail changes * className styling * fixed text-decoration * added tests, changed naming for OpenRequest * styling formatting * Add, Request, and Remove Email Copy (#257) * init for fixing email copy for request, add, and remove * removed print statement * fixed python unit test * fixed linter issues * addressed comments, fixed linter issues * added notification unit test * fixed test positional arg * fix test * Add notification action logging (#258) * init of adding action logging * changed location of action logging * fixed linter errors * fixed comment * addressed comments * remove request test call (#259) * hide request if description already exists (#269) * fixed open request button, request form styling (#267) * Added request dropdown component (#262) * init * made fixes * cleaned up code * fixed color issues * fixed import order * fixed styling, changed ducks/sagas * User dropdown (#263) * init * fixed sty;es * fixed test issue * fixed test * added tests, addressed comments * Request Metadata Component Tests (#270) * added tests + readonly field to stop errors * fixed tslint * addressed comments, added header tests * Request form navigation fix, dropdown fix (#272) * Request form navigation fix, dropdown fix * added test * added unique id to dropdown * Creates User Preferences page with no functionality (#266) * init * added event handlers * removed test file * added constants * addressed comments * fixed test, removed all links to page * updated test * fixed call to onclick * removed preferences page * Python cleanup + tests (#277) * Python cleanup + tests * More tests + revert some unecessary changes * Bring dropdown UI closer to design (#278) * Rename OpenRequestDescription for clarity + code cleanup + test additions (#279) * Notifications ducks cleanup + tests (#280) * Notifications ducks cleanup + tests * Fix issues * Fix template for edge case of empty form (#281) * Temporary debugging code, will revert * Temporary debugging code, will revert * Implement notification form confirmation (#289) * Preserve compatibility in base_mail_client (#290) * Notifications Configs + Doc (#291) * Add notification config * Code cleanup * More cleanup + add a test * Add some doc for how to enable features * Add config utils test + fix type error * Relative URLs to child configuration docs (#294) * Relative URLs to child configuration docs Relative URLs to docs in the same folder should do. They work for any branch, local copies of the docs - and should work better if we ever (or whenever :-) we get to having e.g a Sphinx generated site. * Update application_config.md Relative doc link * Update flask_config.md Relative doc link * Update flask_config.md Relative doc link * Remove temporary debugging code * Improve behavior of notification sending for owner editing (#296) * Initial Implementation: Notification only on success * Cleanup + tests: Notification only on success * Cleanup: Remove test code to trigger failure * Cleanup: Lint fix * Workaround for not notifying teams or alumni * Cleanup: Remove import mistake * Utilize NotificationType enums instead of hardcoded string * Remove use of render_template * More minor cleanups * Address some feedback * Cleanup * More cleanup * Updates for RequestMetadataForm * Switch to generating a for url + comment required for request column descriptions * Update some tests + comment out ones that need update before merge * Update some tests + comment out ones that need update before merge * Code cleanup * Update and rename notification_utils python tests * Modify resource_url check + add docstrings for python tests * Component cleanup * Cleanup component tests * Fix some typos * optimize docker (#300) * Update developer_guide.md (#310) Fix a 404 * Custom routes + Further notification cleanup (#309) * Further notification cleanup * Catch any errors getting the user for metrics + add doc for INIT_CUSTOM_ROUTES * Revert change to _build_metrics * Fix some merge conflicts * Fix some merge conflicts * Add source for notification email links (#312) * Add source for notification email links * Update TableDetail logic * Fix FlashMessage styles * Update config-types.ts (#314)
* Merge `master` into `feature/search_v2` (#253) * Clean up doc (#249) * Remove example folder in FE (#251) * Add better logging for profile page views (#239) * Added new search page layout (#250) * Added SearchPanel to search page, with new wide layout * Added 'ResourceSelector' * Add SearchBar to NavBar + update styles (#252) * Add SearchBar to NavBar + update styles * Lint fix * Code cleanup * Fix tests * Update ResourceListItem UI (#255) * WIP * Update layout * Some code cleanup * Tests * Add some starter doc for the AppConfig * Code cleanup + update UserListItem description UI * start icon -> resource icon * Moved Feedback tool to NavBar (#256) * Update Feedback Component * Update tests * Clean up some styles * reposition form * Tweak feedback style * Initial implementation of SearchFilter (#260) * Initial implementation of SearchFilter * Clean some code + add CheckBoxItem tests * Fixed warning on ResourceSelector * Add/fix some more tests * Some tweaks before merge * Implement New color theme (#276) * Added a color palette file * Replaced $gray-light/dark colors with semantic variables for each purpose * Update brand colors to indigo * Merge `master` into `feature/search_v2` (#286) * Update searchv2 master (#313) * Clean up doc (#249) * Remove example folder in FE (#251) * Add better logging for profile page views (#239) * add stalebot config (#264) * Update stalebot setting (#268) * Adds the request timeout configuration (#275) * Adds the request timeout configuration * Bumps the version to take advantage of request timeout * Update AxiosError handling (#283) * Update v0.ts * lint fix * Use Redux-Saga for Search Actions (#265) * Added redux actions and sagas instead for each search action: `submitSearch`, `setResource`, `setPageIndex`, `loadPreviousSearch`, and `UrlDidUpdate`. This greatly simplifies the `SearchPage` logic in preparation for adding filters. * Added `navigation-utils`. * Removed `SQUASH COMMITS` from the PR template (#287) Removed `SQUASH COMMITS` from the PR template * TagInfo now fires 'submitSearch' instead of using navigation (#285) * Remove render_template for feedback email (#293) * Remove render_template for feedback email * Fix html markup * Added auto-select resource after searching (#292) * Truncate the column type (#297) * Truncate the column type * Update truncation method * Cleanup logic * Improve table & columns description formatting (#98) (#298) * Add support for React-Markdown to editable text fields * Add support for windows via cross-env * Update EditableText component (#299) * Fix some styling issues with react-markdown * Update EditableText to use React Refs instead of ref callbacks * Add configs for table and column description max lengths * Change 'json' to 'data' field for Python Requests (#303) * Switch usage of 'json' to 'data' in metadata APIs * Use 'raw_request=True' for Envoy client post/put APIs * Update README.md (#302) * Link deeper to doc content (#304) Summary of Changes Will scroll past GitHub repo folders (specially more handy on small screens like phones/tablets) Like amundsen-io/amundsendatabuilder#147 * Fixed linebreaks with Markdown descriptions (#305) * Amundsen Notifications Without Preferences (#273) * Initial start to notifications API (#215) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * addressed comments regarding imports/enum naming * fixed alphabetical order * Notifs post email functionality (#222) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * added template support * made changes to reflect private changes * added helper function * fixed lint issue * addressed comments, added some type checking and cleaned up comments * testing removing test * fixed linter * fixed lint * fixed linting issues * skip type checking * fixed lint * fixed typing on get request args * removed typing for get request to fix lint issues * fixed linter again * re added test * raise exception inside of getmailclient * added exceptions * addressed comments * whitespace issue * removed calls to get_query_param * fixed syntax error * Send notification when adding/removing owner from table (#237) * basic e2e functionality for adding/removing * send_notification refactor * fix lint errors * blank line lint error * fixed syntax issue * arg typing * addressed comments, fixed code style * Prevent Self-Notifications (#243) * Prevent user from notifying themselves * removed exception * added owner check to send_notification * Fixed return for no recipients (#244) * fixed return for no recipients * fixed linter issue * Request notifications component (#238) * init of request form * basic request component * getting basic functionality in * clearing out css * removed z-index fixes and add constants * fixed string casting * added redux-saga calls * removed reset request notification * fixed tests * addressed comments, added basic test, added redux state management for opening/closing component * added tests, just need to add render test * cleaned up component tests: * addressed html/css comments * removed unecessary styling * removed collapsed class * cleaned up render method * fixed test * Open request component (#254) * added button to open up request component * removed tabledetail changes * className styling * fixed text-decoration * added tests, changed naming for OpenRequest * styling formatting * Add, Request, and Remove Email Copy (#257) * init for fixing email copy for request, add, and remove * removed print statement * fixed python unit test * fixed linter issues * addressed comments, fixed linter issues * added notification unit test * fixed test positional arg * fix test * Add notification action logging (#258) * init of adding action logging * changed location of action logging * fixed linter errors * fixed comment * addressed comments * remove request test call (#259) * hide request if description already exists (#269) * fixed open request button, request form styling (#267) * Added request dropdown component (#262) * init * made fixes * cleaned up code * fixed color issues * fixed import order * fixed styling, changed ducks/sagas * User dropdown (#263) * init * fixed sty;es * fixed test issue * fixed test * added tests, addressed comments * Request Metadata Component Tests (#270) * added tests + readonly field to stop errors * fixed tslint * addressed comments, added header tests * Request form navigation fix, dropdown fix (#272) * Request form navigation fix, dropdown fix * added test * added unique id to dropdown * Creates User Preferences page with no functionality (#266) * init * added event handlers * removed test file * added constants * addressed comments * fixed test, removed all links to page * updated test * fixed call to onclick * removed preferences page * Python cleanup + tests (#277) * Python cleanup + tests * More tests + revert some unecessary changes * Bring dropdown UI closer to design (#278) * Rename OpenRequestDescription for clarity + code cleanup + test additions (#279) * Notifications ducks cleanup + tests (#280) * Notifications ducks cleanup + tests * Fix issues * Fix template for edge case of empty form (#281) * Temporary debugging code, will revert * Temporary debugging code, will revert * Implement notification form confirmation (#289) * Preserve compatibility in base_mail_client (#290) * Notifications Configs + Doc (#291) * Add notification config * Code cleanup * More cleanup + add a test * Add some doc for how to enable features * Add config utils test + fix type error * Relative URLs to child configuration docs (#294) * Relative URLs to child configuration docs Relative URLs to docs in the same folder should do. They work for any branch, local copies of the docs - and should work better if we ever (or whenever :-) we get to having e.g a Sphinx generated site. * Update application_config.md Relative doc link * Update flask_config.md Relative doc link * Update flask_config.md Relative doc link * Remove temporary debugging code * Improve behavior of notification sending for owner editing (#296) * Initial Implementation: Notification only on success * Cleanup + tests: Notification only on success * Cleanup: Remove test code to trigger failure * Cleanup: Lint fix * Workaround for not notifying teams or alumni * Cleanup: Remove import mistake * Utilize NotificationType enums instead of hardcoded string * Remove use of render_template * More minor cleanups * Address some feedback * Cleanup * More cleanup * Notifications Improvements (#301) * Initial start to notifications API (#215) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * addressed comments regarding imports/enum naming * fixed alphabetical order * Notifs post email functionality (#222) * initial start to notifications API * fixing some styling * fixed lint errors * update types * added tests * linter, moved notification types * added template support * made changes to reflect private changes * added helper function * fixed lint issue * addressed comments, added some type checking and cleaned up comments * testing removing test * fixed linter * fixed lint * fixed linting issues * skip type checking * fixed lint * fixed typing on get request args * removed typing for get request to fix lint issues * fixed linter again * re added test * raise exception inside of getmailclient * added exceptions * addressed comments * whitespace issue * removed calls to get_query_param * fixed syntax error * Send notification when adding/removing owner from table (#237) * basic e2e functionality for adding/removing * send_notification refactor * fix lint errors * blank line lint error * fixed syntax issue * arg typing * addressed comments, fixed code style * Prevent Self-Notifications (#243) * Prevent user from notifying themselves * removed exception * added owner check to send_notification * Fixed return for no recipients (#244) * fixed return for no recipients * fixed linter issue * Request notifications component (#238) * init of request form * basic request component * getting basic functionality in * clearing out css * removed z-index fixes and add constants * fixed string casting * added redux-saga calls * removed reset request notification * fixed tests * addressed comments, added basic test, added redux state management for opening/closing component * added tests, just need to add render test * cleaned up component tests: * addressed html/css comments * removed unecessary styling * removed collapsed class * cleaned up render method * fixed test * Open request component (#254) * added button to open up request component * removed tabledetail changes * className styling * fixed text-decoration * added tests, changed naming for OpenRequest * styling formatting * Add, Request, and Remove Email Copy (#257) * init for fixing email copy for request, add, and remove * removed print statement * fixed python unit test * fixed linter issues * addressed comments, fixed linter issues * added notification unit test * fixed test positional arg * fix test * Add notification action logging (#258) * init of adding action logging * changed location of action logging * fixed linter errors * fixed comment * addressed comments * remove request test call (#259) * hide request if description already exists (#269) * fixed open request button, request form styling (#267) * Added request dropdown component (#262) * init * made fixes * cleaned up code * fixed color issues * fixed import order * fixed styling, changed ducks/sagas * User dropdown (#263) * init * fixed sty;es * fixed test issue * fixed test * added tests, addressed comments * Request Metadata Component Tests (#270) * added tests + readonly field to stop errors * fixed tslint * addressed comments, added header tests * Request form navigation fix, dropdown fix (#272) * Request form navigation fix, dropdown fix * added test * added unique id to dropdown * Creates User Preferences page with no functionality (#266) * init * added event handlers * removed test file * added constants * addressed comments * fixed test, removed all links to page * updated test * fixed call to onclick * removed preferences page * Python cleanup + tests (#277) * Python cleanup + tests * More tests + revert some unecessary changes * Bring dropdown UI closer to design (#278) * Rename OpenRequestDescription for clarity + code cleanup + test additions (#279) * Notifications ducks cleanup + tests (#280) * Notifications ducks cleanup + tests * Fix issues * Fix template for edge case of empty form (#281) * Temporary debugging code, will revert * Temporary debugging code, will revert * Implement notification form confirmation (#289) * Preserve compatibility in base_mail_client (#290) * Notifications Configs + Doc (#291) * Add notification config * Code cleanup * More cleanup + add a test * Add some doc for how to enable features * Add config utils test + fix type error * Relative URLs to child configuration docs (#294) * Relative URLs to child configuration docs Relative URLs to docs in the same folder should do. They work for any branch, local copies of the docs - and should work better if we ever (or whenever :-) we get to having e.g a Sphinx generated site. * Update application_config.md Relative doc link * Update flask_config.md Relative doc link * Update flask_config.md Relative doc link * Remove temporary debugging code * Improve behavior of notification sending for owner editing (#296) * Initial Implementation: Notification only on success * Cleanup + tests: Notification only on success * Cleanup: Remove test code to trigger failure * Cleanup: Lint fix * Workaround for not notifying teams or alumni * Cleanup: Remove import mistake * Utilize NotificationType enums instead of hardcoded string * Remove use of render_template * More minor cleanups * Address some feedback * Cleanup * More cleanup * Updates for RequestMetadataForm * Switch to generating a for url + comment required for request column descriptions * Update some tests + comment out ones that need update before merge * Update some tests + comment out ones that need update before merge * Code cleanup * Update and rename notification_utils python tests * Modify resource_url check + add docstrings for python tests * Component cleanup * Cleanup component tests * Fix some typos * optimize docker (#300) * Update developer_guide.md (#310) Fix a 404 * Custom routes + Further notification cleanup (#309) * Further notification cleanup * Catch any errors getting the user for metrics + add doc for INIT_CUSTOM_ROUTES * Revert change to _build_metrics * Fix some merge conflicts * Fix some merge conflicts * Add source for notification email links (#312) * Add source for notification email links * Update TableDetail logic * Fix FlashMessage styles * Update config-types.ts (#314) * Convert usages of `white` to `$white` * - ResourceSelector now uses `setResource` action instead of onChange prop - Added/fixed test cases for ResourceSelector/SearchPage - Deleted unused code in SearchPage * Added additional test cases for SearchBar * Modified list-group shoadows * Added a test case for ResourceSelector
Summary of Changes
This PR contains a set of improvements for the notifications work.
Instead of passing the
resource_url
usingwindow.location.href
to get the url of the resource to send along in the email, the option has been renamedresource_path
. The code that sends the notification is responsible for generating theresource_path
-- e.g./table_detail/.../.../...
. The logic in python that generates the email content will create the final url by concatenating theapp.config['FRONTEND_BASE']
with theresource_path
to generate the full url.tableMetadata
toRequestMetadataForm
andgenerateOwnerUpdateRequest
so those entities can generate theresource_path
.The piece of application state --
notification
that controls the state of theRequestMetadataForm
has two new optional parameters:requestMetadataType
andcolumnName
.requestMetadataType
allows us to auto-select "Table Description" or "Column Description" when opening the form.columnName
is passed so that we can include it in the default comment when requesting column descriptions.In addition to including a default comment if the user opened
RequestMetadataForm
from the column description, thecomment
becomes required. If the default comment is deleted we prompt the user to enter which columns they would like better descriptions for.Changing the recipients input from
type="email"
totype="text"
honors the spacing between emails that we want. It seems ontype="email"
the space is stripped, andtype="text"
currently works for our use case as we aren't leveraging any of the extra features available withtype="email"
.Updated
RequestMetadataForm
styles to make the text in the textarea darker.Tests
Modified unit tests according to code changes.
Documentation
N/A. No new functionality or features have been added that need to be documented.
CheckList
Make sure you have checked all steps below to ensure a timely review.