From 62562458e6fd007f4240b669f509f772dd883ca5 Mon Sep 17 00:00:00 2001 From: grakiss Date: Fri, 27 Oct 2017 21:53:51 -0400 Subject: [web-cvp] Trigger an email when admin submit an application form JIRA: DOVETAIL-542 Trigger an email to cvp@opnfv.org when admin submit an application form. Change-Id: Ie73d5a6380b5f5d1b0507564dc1f067047284f99 Signed-off-by: grakiss --- cvp/opnfv_testapi/common/utils.py | 43 ++++++++++++++++++++++ .../resources/application_handlers.py | 42 ++++++++++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 cvp/opnfv_testapi/common/utils.py diff --git a/cvp/opnfv_testapi/common/utils.py b/cvp/opnfv_testapi/common/utils.py new file mode 100644 index 00000000..107c7099 --- /dev/null +++ b/cvp/opnfv_testapi/common/utils.py @@ -0,0 +1,43 @@ +import logging +import smtplib +from email.mime.text import MIMEText + +LOG = logging.getLogger(__name__) +LOG.setLevel(logging.DEBUG) + + +def send_email(subject, content): + MAIL_LIST = ['cvp@opnfv.org'] + HOST = "smtp.gmail.com" + USER = "opnfv.cvp" + PASSWD = "opnfv@cvp" + + sender = 'cvp<{}@gmail.com>'.format(USER) + msg = MIMEText(content, _subtype='plain') + msg['Subject'] = subject + msg['From'] = sender + msg['To'] = ";".join(MAIL_LIST) + + _send_email(HOST, sender, USER, PASSWD, MAIL_LIST, msg) + + +def _send_email(host, + sender, + user, + passwd, + receivers, + msg): + + client = smtplib.SMTP() + try: + client.connect(host, 25) + LOG.debug('Success to connect server') + client.starttls() + client.login(user, passwd) + LOG.debug('Success to login') + LOG.debug('Start to sending email') + client.sendmail(sender, receivers, msg.as_string()) + client.close() + except Exception: + LOG.exception('Error when sending email') + raise diff --git a/cvp/opnfv_testapi/resources/application_handlers.py b/cvp/opnfv_testapi/resources/application_handlers.py index 6986b9ef..144b2241 100644 --- a/cvp/opnfv_testapi/resources/application_handlers.py +++ b/cvp/opnfv_testapi/resources/application_handlers.py @@ -14,6 +14,7 @@ from tornado import gen from bson import objectid from opnfv_testapi.common.config import CONF +from opnfv_testapi.common import utils from opnfv_testapi.resources import handlers from opnfv_testapi.resources import application_models from opnfv_testapi.tornado_swagger import swagger @@ -107,9 +108,48 @@ class ApplicationsCLHandler(GenericApplicationHandler): if not ret: self.finish_request({'code': '403', 'msg': msg}) return - self._create(miss_fields=miss_fields, carriers=carriers) + self._send_email() + + def _send_email(self): + + data = self.table_cls.from_dict(self.json_args) + subject = "[OPNFV CVP]New OPNFV CVP Application Submission" + content = """Hi CVP Reviewer, + +This is a new application: + + Organization Name: {}, + Organization Website: {}, + Product Name: {}, + Product Specifications: {}, + Product Documentation: {}, + Product Categories: {}, + Primary Name: {}, + Primary Email: {}, + Primary Address: {}, + Primary Phone: {}, + User ID Type: {}, + User ID: {} + +Best Regards, +CVP Team + """.format(data.organization_name, + data.organization_web, + data.product_name, + data.product_spec, + data.product_documentation, + data.product_categories, + data.prim_name, + data.prim_email, + data.prim_address, + data.prim_phone, + data.id_type, + data.user_id) + + utils.send_email(subject, content) + class ApplicationsGURHandler(GenericApplicationHandler): @swagger.operation(nickname="deleteAppById") -- cgit 1.2.3-korg