Skip to content

[ENG-8064] Add New Notifications Data Model #11151

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

Open
wants to merge 84 commits into
base: refactor-notifications
Choose a base branch
from

Conversation

Johnetordoff
Copy link
Contributor

@Johnetordoff Johnetordoff commented May 20, 2025

Purpose

This is Phase 2 of the Notifications Refactor it creates a new notification system and migrates the existing data into that model.

Changes

  • adds new data model for Notification, NotificationTypes and Subscriptions
  • creates a notifications.yaml for data dependency notificationtypes
  • add migrations
  • updates notifications to use NotificationTypes
  • updates Admin app to control email templates
  • updates metrics reporter to count notifications sent etc.
  • updates tests to all use capture_notifications mocking util

QA Notes

Please make verification statements inspired by your code and what your code touches.

  • Verify
  • Verify

What are the areas of risk?

Any concerns/considerations/questions that development raised?

Documentation

Side Effects

Ticket

https://openscience.atlassian.net/browse/ENG-8064

@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch 3 times, most recently from ecc8e88 to 3a8b414 Compare May 21, 2025 14:28
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 3a8b414 to 57b0bd1 Compare May 21, 2025 14:42
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  [ENG-7965] Add v2 email token confirmation endpoints (CenterForOpenScience#11139)
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  fix issue where not having any external identities caused a 500
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  [ENG-7966] Add "collected-in" relationship for Nodes (CenterForOpenScience#11140)
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  fix issue where trying another already confirmed email threw an uncaught exception (CenterForOpenScience#11161)
  [ENG-8148] Add ArtifactOutcome in annotations to linked nodes  (CenterForOpenScience#11158)
…OpenScience/osf.io into add-new-notifications-data-model

* 'refactor-notifications' of https://github.com/CenterForOpenScience/osf.io:
  flake8
  fixed tests
  remove quickfiles
  update mails mock
  Update send_mail mocks
  Clean up tests
  Clean up tests
  Clean up imports
  Remove Meetings, Comments and OSF Groups Notifications
  remove osf groups
  remove osf groups
  remove osf groups
  remove osf groups
  remove osf groups

# Conflicts:
#	tests/test_notifications.py
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  Update hybrid values for new workflow check (CenterForOpenScience#11166)
…OpenScience/osf.io into add-new-notifications-data-model

* 'refactor-notifications' of https://github.com/CenterForOpenScience/osf.io:
  ignore Django maintenance state outside block
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 2b8ba0d to c449599 Compare June 9, 2025 13:40
…OpenScience/osf.io into add-new-notifications-data-model

* 'refactor-notifications' of https://github.com/CenterForOpenScience/osf.io:
  fixed bug with contributors
  remove superfluildous `groups` from serializer
  fix new and noteworth nodes bug going to Sentry
@Johnetordoff Johnetordoff changed the base branch from feature/pbs-25-10 to refactor-notifications June 13, 2025 14:40
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  fixed None issue when iterate (CenterForOpenScience#11192)
  [ENG-8048] Remove caching to avoid incorrect results for ascendants (CenterForOpenScience#11169)
  [ENG-7870] Crossref DOIs not minting with _v1, OSF is displaying DOI versions with _v1 (CenterForOpenScience#11154)
  Update changelog and package.json
  [ENG-8145] [ENG-8147] Manual DOI and GUID for Preprints & Registrations - BE (CenterForOpenScience#11174)
…cience/osf.io into add-new-notifications-data-model

* 'feature/pbs-25-10' of https://github.com/CenterForOpenScience/osf.io:
  Revert "[ENG-8048] Remove caching to avoid incorrect results for ascendants (…"
  Revert "fixed None issue when iterate (CenterForOpenScience#11192)"
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch 2 times, most recently from dfe88a2 to ad18e9d Compare July 3, 2025 13:48
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from ad18e9d to 300524c Compare July 3, 2025 14:20
 into add-new-notifications-data-model

* 'develop' of https://github.com/CenterForOpenScience/osf.io:
  Bump version no. Add CHANGELOG
  move CROSSREF_UNAVAILABLE_DELAY to settings.py
  handle and 5xx status code from crossref
  handle 500 error from crossref
  Update changelog and package.json
@Johnetordoff Johnetordoff marked this pull request as ready for review July 8, 2025 20:05
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 51d2685 to 86a9466 Compare July 23, 2025 17:20
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 8495ecd to 0139a5f Compare July 24, 2025 14:22
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 012a455 to b4899ee Compare July 25, 2025 13:22
file_signals.file_updated.send(target=node, user=user, event_type=action, payload=payload)
file_signals.file_updated.send(target=node, user=user, event_type=action, payload=payload)

match f'node_{action}':
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Improve this line, I think we can map actions better.

@@ -1256,11 +1256,15 @@ def create(self, validated_data):

try:
contributor_dict = {
'auth': auth, 'user_id': id, 'email': email, 'full_name': full_name, 'send_email': send_email,
'bibliographic': bibliographic, 'index': index, 'save': True,
'auth': auth,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

revert this

user=user,
event_context={
'guid': node._id,
'title': node._id,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

redo

user=user,
event_context={
'guid': fork._id,
'title': node._id,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

redo


if bool(get_perms(user, provider)):
raise ValidationError('Specified user is already a moderator.')
if 'claim_url' in context:
template = mails.CONFIRM_EMAIL_MODERATION(provider)
template = NotificationType.Type.PROVIDER_CONFIRM_EMAIL_MODERATION
Copy link
Contributor Author

Choose a reason for hiding this comment

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

refactor template

user.username,
template,
**context,
print(template, context)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

remove

@@ -636,88 +639,78 @@ def bulk_upload_finish_job(upload, row_count, success_count, draft_errors, appro
approval_errors.sort()
if not dry_run:
upload.save()
notification_type = None
Copy link
Contributor Author

Choose a reason for hiding this comment

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

what?

upload.email_sent = timezone.now()
upload.save()
logger.info(f'Email sent to bulk upload initiator [{initiator._id}]')
logger.info(f'Notification sent to bulk upload initiator [{initiator._id}]')
Copy link
Contributor Author

Choose a reason for hiding this comment

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

revert

@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from b4899ee to 7e96d6f Compare July 25, 2025 14:27
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 21ce32a to 46b6944 Compare July 25, 2025 17:40
message_frequency='instantly',
event_context={
'sender': sender.username,
'bcc_addr': [sender.username] if validated_data['bcc_sender'] else None,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Consider improving bcc and reply_to support.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does mailhog test for this?

@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 616d17b to b5bdebe Compare July 25, 2025 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants