Skip to content
Snippets Groups Projects
Commit b8e55f94 authored by Nathan Hertz's avatar Nathan Hertz
Browse files

WS-222: Ingestion-complete email notification

parent 433badf4
No related branches found
No related tags found
1 merge request!669WS-222: Ingestion-complete email notification
Pipeline #3726 passed
"""add new ingestion-complete notification template
Revision ID: 10375ceec652
Revises: e0bbf2bf093f
Create Date: 2021-11-22 14:02:43.409386
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "10375ceec652"
down_revision = "e0bbf2bf093f"
branch_labels = None
depends_on = None
def upgrade():
ingestion_complete_template_sql = """
INSERT INTO notification_templates (name, description, template) VALUES (
'ingested_email',
'An email template for notifying a user that their capability request has been ingested into the archive',
'To: {{destination_email}}
Subject: NRAO Workspaces Request #{{request_id}} has been ingested
Dear User,
Thank you for using NRAO Workspaces.
Your {{capability_name}} request #{{request_id}} has successfully had its products ingested into the archive.
Best regards,
NRAO Workspaces'
)
"""
op.execute(ingestion_complete_template_sql)
def downgrade():
op.execute("DELETE FROM notification_templates WHERE name = 'ingested_email'")
......@@ -180,6 +180,9 @@ class CapabilityService(CapabilityServiceIF):
request.ingested = True
self.capability_info.save_entity(request)
# Send email notification
self.notify.notify_ingestion_complete(request)
@on_message(type="carta-ready")
def on_carta_ready(self, **message: Dict[str, str]):
"""
......
......@@ -18,12 +18,12 @@
""" Various Things needed for capability service"""
# pylint: disable=C0116, C0301, R0903
import inspect
from abc import ABC, abstractmethod
from typing import List, NamedTuple
# pylint: disable=C0116, C0301, R0903
from workspaces.system.schema import AbstractFile
CapabilityName = str
......
......@@ -15,11 +15,12 @@
#
# You should have received a copy of the GNU General Public License
# along with Workspaces. If not, see <https://www.gnu.org/licenses/>.
from abc import ABC
from typing import List
# pylint: disable=C0114, C0116
from abc import ABC
from typing import List
from workspaces.capability.schema import CapabilityRequest
from workspaces.notification.schema import Base, NotificationTemplate
......@@ -61,3 +62,6 @@ class NotificationServiceIF(ABC):
def notify_qa_ready(self, request: CapabilityRequest):
pass
def notify_ingestion_complete(self, request: CapabilityRequest):
pass
......@@ -21,8 +21,6 @@
import logging
import smtplib
# pylint: disable=C0103, E0401, R0903, W1201
import requests
from pycapo import CapoConfig
......@@ -32,6 +30,8 @@ from workspaces.notification.services.interfaces import (
NotificationServiceIF,
)
# pylint: disable=C0103, E0401, R0903, W1201
logger = logging.getLogger(__name__)
......@@ -88,6 +88,26 @@ class NotificationServiceRESTClient(NotificationServiceIF):
},
)
def notify_ingestion_complete(self, request: CapabilityRequest):
"""
Notify the user that their request has been successfully ingested into the archive
:param request: Capability request that the notification is regarding
"""
if "user_email" not in request.current_version.parameters:
logger.info("Not sending notification because no user email supplied")
return
user_email = request.current_version.parameters["user_email"]
requests.post(
f"{self.url}/notify/ingested_email/send",
json={
"destination_email": user_email,
"request_id": request.id,
"capability_name": request.capability.name,
},
)
def notify_qa_ready(self, request: CapabilityRequest):
"""
Notify the appropriate parties that a request is ready for QA
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment