Skip to content

[ENG-8064] Add New Notifications Data Model (Refactor Notifications Phase 2) #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 160 commits into
base: refactor-notifications
Choose a base branch
from

Conversation

Johnetordoff
Copy link
Contributor

@Johnetordoff Johnetordoff commented May 20, 2025

Purpose

This system is designed to formalize and consolidate OSF Notifications under one system in order to better facilitate collaboration between Product, Engineers and QA and end persistent problems with notification email related tech debt. This project is the result of an extensive audit of all OSF emails and combined email digests and seeks to move the NotificationSubscription model out of it's transitional state having been migrated from a document based model, into it's final data model which is more regular for a relation our current relational database (django's postgress db).

In order to do this I have taken @mfraezz design documents and implemented them with minor changes. This means the responsibility for sending notifications in osf.io is shared by three new models, which will have the old data migrated into them via a migration script and management command. The models are:

  • NotificationType

    • Similar to RegistrationSchemas or Waffle flags these are in db instrances which are poulated from static config documents in this case yaml.
    • Since these are synced on migration with notification.yaml a developer will be able to see at a glance if where a notification template is and what it's purpose is.
  • NotificationSubscription

    • This model is somewhat analogous to the earlier EmailDigest model, this holds references to potentially many Notifcations models that can be compiled into a single digest this is sent at a periodic basis.
  • Notification

    • Holds message information and context
    • Unlike earlier implementations this will record each Notification creation and sending for metrics purposes.

Changes

  • Combines worker with beat in docker-compose
  • creates notifications.yaml to contain all notification types info it is populated via postmigrate hook
  • creates new Notification NotificationSubscription and NotificationType
  • adds migrations to rename legacy tables and a managment command to populate the new ones.
  • Deletes old send_mails method and replaces it with emit of NotificationType
  • adds tests and updates old mocking
  • updates views and permission classed
  • A slight change to handle_boa_error to pass the already decanted user object.
  • 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
  • Removes queued_mail
  • Removes EmailDigest
  • Removes detect_duplicates for duplicate subscriptions

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 800f27d to baf6d86 Compare August 9, 2025 23:44
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from baf6d86 to e7a8e3c Compare August 9, 2025 23:47
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch 15 times, most recently from d59f180 to 93c938e Compare August 11, 2025 01:04
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 93c938e to fcce6d4 Compare August 11, 2025 01:42
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from 96a0fc8 to 04a91be Compare August 11, 2025 11:33
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch 3 times, most recently from 653ad85 to a081ef4 Compare August 11, 2025 13:28
@Johnetordoff Johnetordoff force-pushed the add-new-notifications-data-model branch from a081ef4 to 1bfaf2f Compare August 11, 2025 13:48
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.

4 participants