This is an automated email from the ASF dual-hosted git repository.

dpgaspar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new f04b72c  [releases] New, email automation for apache releases (#8612)
f04b72c is described below

commit f04b72c341baf91266292f90d3fe89eec1cdf534
Author: Daniel Vaz Gaspar <[email protected]>
AuthorDate: Mon Nov 25 10:01:31 2019 +0000

    [releases] New, email automation for apache releases (#8612)
---
 RELEASING/README.md                      |  50 +++++-
 RELEASING/email_templates/announce.j2    |  57 ++++++
 RELEASING/email_templates/result_ipmc.j2 |  58 ++++++
 RELEASING/email_templates/result_pmc.j2  |  58 ++++++
 RELEASING/email_templates/vote_ipmc.j2   |  63 +++++++
 RELEASING/email_templates/vote_pmc.j2    |  51 ++++++
 RELEASING/send_email.py                  | 295 +++++++++++++++++++++++++++++++
 7 files changed, 631 insertions(+), 1 deletion(-)

diff --git a/RELEASING/README.md b/RELEASING/README.md
index 21ef756..2a37fc8 100644
--- a/RELEASING/README.md
+++ b/RELEASING/README.md
@@ -119,7 +119,7 @@ release on Superset's repo (MAJOR.MINOR branch), the 
following script will clone
 the tag and create a signed source tarball from it:
 
 ```bash
-    # make_tarball you use the previouly set environment variables
+    # make_tarball will use the previously set environment variables
     # you can override by passing arguments: make_tarball.sh 
<SUPERSET_VERSION> <SUPERSET_VERSION_RC> "<PGP_KEY_FULLNAME>"
     ./make_tarball.sh
 ```
@@ -166,17 +166,65 @@ Now you're ready to start the [VOTE] thread. Here's an 
example of a
 previous release vote thread:
 
https://lists.apache.org/thread.html/e60f080ebdda26896214f7d3d5be1ccadfab95d48fbe813252762879@<dev.superset.apache.org>
 
+To easily send a voting request to Superset community, still on the 
`superset/RELEASING` directory:
+
+```bash
+    # Note use Superset's virtualenv 
+    (venv)$ python send_email.py vote_pmc
+```
+
+The script will interactively ask for extra information so it can authenticate 
on the Apache Email Relay.
+The release version and release candidate number are fetched from the 
previously set environment variables. 
+
+```bash
+    Sender email (ex: [email protected]): [email protected]
+    Apache username: your_apache_user
+    Apache password: your_apache_password
+```
+
 Once 3+ binding votes (by PMC members) have been cast and at
 least 72 hours have past, you can post a [RESULT] thread:
 
https://lists.apache.org/thread.html/50a6b134d66b86b237d5d7bc89df1b567246d125a71394d78b45f9a8@%3Cdev.superset.apache.org%3E
 
+To easily send the result email, still on the `superset/RELEASING` directory:
+
+```bash
+    # Note use Superset's virtualenv 
+    (venv)$ python send_email.py result_pmc
+```
+
+The script will interactively ask for extra information needed to fill out the 
email template. Based on the
+voting description, it will generate a passing, non passing or non conclusive 
email. 
+here's an example:
+
+```bash
+    Sender email (ex: [email protected]): [email protected]
+    Apache username: your_apache_user
+    Apache password: your_apache_password
+    A List of people with +1 binding vote (ex: Max,Grace,Krist): 
Daniel,Alan,Max,Grace
+    A List of people with +1 non binding vote (ex: Ville): Ville
+    A List of people with -1 vote (ex: John):
+```
+
 Following the result thread, yet another [VOTE] thread should be
 started at [email protected].
 
+To easily send the voting request to Apache community, still on the 
`superset/RELEASING` directory:
+
+```bash
+    # Note use Superset's virtualenv 
+    (venv)$ python send_email.py vote_ipmc
+```
+
 ### Announcing
 
 Once it's all done, an [ANNOUNCE] thread announcing the release to the dev@ 
mailing list is the final step.
 
+```bash
+    # Note use Superset's virtualenv 
+    (venv)$ python send_email.py announce
+```
+
 ### Validating a release
 
 https://www.apache.org/info/verification.html
diff --git a/RELEASING/email_templates/announce.j2 
b/RELEASING/email_templates/announce.j2
new file mode 100644
index 0000000..b43739e
--- /dev/null
+++ b/RELEASING/email_templates/announce.j2
@@ -0,0 +1,57 @@
+{#
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-#}
+To: {{ receiver_email }}
+From: {{ sender_email }}
+Subject: [ANNOUNCE] Apache {{ project_name }} (Incubating) version {{ version 
}} Released
+
+Hello Community,
+
+The Apache {{ project_name }} (incubating) team is pleased to announce that {{ 
project_name }}
+{{ version }} has just been released.
+
+{{ project_description }}
+
+The official source release:
+
+https://www.apache.org/dist/incubator/{{ project_module }}/{{ version }}
+
+The Pypi package:
+
+https://pypi.org/project/apache-superset/
+
+If you have any usage questions, or have problems when upgrading or
+find any problems about enhancements included in this release, please
+don’t hesitate to let us know by sending feedback to this mailing
+list.
+
+=====
+*Disclaimer*
+
+Apache {{ project_name }} is an effort undergoing incubation at The Apache 
Software
+Foundation (ASF), sponsored by the Incubator. Incubation is required of all
+newly accepted projects until a further review indicates that the
+infrastructure, communications, and decision making process have stabilized
+in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of
+the code, it does indicate that the project has yet to be fully endorsed by
+the ASF.
+
+---------------------------------------------------------------------
+To unsubscribe, e-mail: [email protected]
+For additional commands, e-mail: [email protected]
diff --git a/RELEASING/email_templates/result_ipmc.j2 
b/RELEASING/email_templates/result_ipmc.j2
new file mode 100644
index 0000000..a2aaf1e
--- /dev/null
+++ b/RELEASING/email_templates/result_ipmc.j2
@@ -0,0 +1,58 @@
+{#
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-#}
+To: {{ receiver_email }}
+From: {{ sender_email }}
+Subject: [RESULT] [VOTE] Release Apache {{ project_name }} (incubating) 
version {{ version }}
+
+Thanks to everyone that participated. The vote to release
+Apache {{ project_name }} (incubating) version {{ version }} is now closed.
+
+{% if vote_negatives|length > 0 %}
+The vote did not PASS with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding +1 and {{vote_negatives|length}} -1 votes:
+{% elif vote_bindings|length > 2 %}
+The vote PASSED with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding +1 and {{vote_negatives|length}} -1 votes:
+{% else %}
+The vote is non conclusive with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding -1 and {{vote_negatives|length}} -1 votes:
+{% endif %}
+
+{% if vote_bindings|length > 0 -%}
+Binding votes:
+{% for voter in vote_bindings -%}
+- {{ voter }}
+{% endfor %}
+{%- endif %}
+
+{% if vote_nonbindings|length > 0 -%}
+Non binding votes:
+{% for voter in vote_nonbindings -%}
+- {{ voter }}
+{% endfor %}
+{%- endif %}
+
+{% if vote_negatives|length > 0 -%}
+Negative votes:
+{% for voter in vote_negatives -%}
+- {{ voter }}
+{% endfor %}
+{%- endif %}
+
+We will work to complete the release process.
+
+Thanks,
+The Apache {{ project_name }} (Incubating) Team
diff --git a/RELEASING/email_templates/result_pmc.j2 
b/RELEASING/email_templates/result_pmc.j2
new file mode 100644
index 0000000..8516adf
--- /dev/null
+++ b/RELEASING/email_templates/result_pmc.j2
@@ -0,0 +1,58 @@
+{#
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-#}
+To: {{ receiver_email }}
+From: {{ sender_email }}
+Subject: [RESULT] [VOTE] Release Apache {{ project_name }} (incubating) {{ 
version }} based on Superset {{ version_rc }}
+
+Thanks to everyone that participated. The vote to release
+Apache {{ project_name }} (incubating) version {{ version }} based on {{ 
version_rc }} is now closed.
+
+{% if vote_negatives|length > 0 -%}
+The vote did NOT PASS with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding +1 and {{vote_negatives|length}} -1 votes:
+{% elif vote_bindings|length > 2 -%}
+The vote PASSED with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding +1 and {{vote_negatives|length}} -1 votes:
+{% else -%}
+The vote is non conclusive with {{vote_bindings|length}} binding +1, {{ 
vote_nonbindings|length}} non binding -1 and {{vote_negatives|length}} -1 votes:
+{%- endif %}
+
+{% if vote_bindings|length > 0 -%}
+Binding votes:
+{% for voter in vote_bindings -%}
+- {{ voter }}
+{% endfor -%}
+{%- endif %}
+
+{% if vote_nonbindings|length > 0 -%}
+Non binding votes:
+{% for voter in vote_nonbindings -%}
+- {{ voter }}
+{% endfor -%}
+{%- endif %}
+
+{% if vote_negatives|length > 0 -%}
+Negative votes:
+{% for voter in vote_negatives -%}
+- {{ voter }}
+{% endfor -%}
+{%- endif %}
+
+We will work to complete the release process.
+
+Thanks,
+The Apache {{ project_name }} (Incubating) Team
diff --git a/RELEASING/email_templates/vote_ipmc.j2 
b/RELEASING/email_templates/vote_ipmc.j2
new file mode 100644
index 0000000..8fe4245
--- /dev/null
+++ b/RELEASING/email_templates/vote_ipmc.j2
@@ -0,0 +1,63 @@
+{#
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-#}
+To: {{ receiver_email }}
+From: {{ sender_email }}
+Subject: [VOTE] Release Apache {{ project_name }} (incubating) version {{ 
version }}
+
+Hello IPMC,
+
+The Apache {{ project_name }} (incubating) community has voted on and approved 
a proposal to
+release Apache {{ project_name }} (incubating) version {{ version }}.
+The voting thread can be found here: {{ voting_thread }}
+
+{% if vote_mentors|length > 0 %}
+Here are the binding +1 votes from mentors, carrying over from the podling 
vote:
+{% for voter in vote_mentors -%}
+- {{ voter }}
+{% endfor %}
+{% endif -%}
+We now kindly request the Incubator PMC members review and vote on this
+incubator release.
+
+{{ project_description }}
+
+The release candidate:
+https://dist.apache.org/repos/dist/dev/incubator/{{ project_module }}/{{ 
version_rc }}/
+
+Git tag for the release:
+https://github.com/apache/incubator-{{ project_module }}/tree/{{ version_rc }}
+
+The Change Log for the release:
+https://github.com/apache/incubator-{{ project_module }}/blob/{{ version_rc 
}}/CHANGELOG.md
+
+public keys are available at:
+
+https://www.apache.org/dist/incubator/{{ project_module }}/KEYS
+
+The vote will be open for at least 72 hours or until the necessary number
+of votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+Thanks,
+The Apache {{ project_name }} (Incubating) Team
diff --git a/RELEASING/email_templates/vote_pmc.j2 
b/RELEASING/email_templates/vote_pmc.j2
new file mode 100644
index 0000000..9be4856
--- /dev/null
+++ b/RELEASING/email_templates/vote_pmc.j2
@@ -0,0 +1,51 @@
+{#
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-#}
+To: {{ receiver_email }}
+From: {{ sender_email }}
+Subject: [VOTE] Release Apache {{ project_name }} (incubating) {{ version }} 
based on Superset {{ version_rc }}
+
+Hello {{ project_name }} Community,
+
+This is a call for the vote to release Apache {{ project_name }}
+(incubating) version {{ version }}.
+
+The release candidate:
+https://dist.apache.org/repos/dist/dev/incubator/{{ project_module }}/{{ 
version_rc }}/
+
+Git tag for the release:
+https://github.com/apache/incubator-{{ project_module }}/tree/{{ version_rc }}
+
+The Change Log for the release:
+https://github.com/apache/incubator-{{ project_module }}/blob/{{ version_rc 
}}/CHANGELOG.md
+
+public keys are available at:
+
+https://www.apache.org/dist/incubator/{{ project_module }}/KEYS
+
+The vote will be open for at least 72 hours or until the necessary number
+of votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+Thanks,
+The Apache {{ project_name }} (Incubating) Team
diff --git a/RELEASING/send_email.py b/RELEASING/send_email.py
new file mode 100755
index 0000000..936d464
--- /dev/null
+++ b/RELEASING/send_email.py
@@ -0,0 +1,295 @@
+#!/usr/bin/python3
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+from typing import List
+import smtplib
+import ssl
+
+try:
+    import jinja2
+except ModuleNotFoundError:
+    exit("Jinja2 is a required dependency for this script")
+try:
+    import click
+except ModuleNotFoundError:
+    exit("Click is a required dependency for this script")
+
+
+SMTP_PORT = 587
+SMTP_SERVER = "mail-relay.apache.org"
+PROJECT_NAME = "Superset"
+PROJECT_MODULE = "superset"
+PROJECT_DESCRIPTION = "Apache Superset (incubating) is a modern, 
enterprise-ready business intelligence web application"
+
+
+def string_comma_to_list(message: str) -> List[str]:
+    if not message:
+        return []
+    return message.split(",")
+
+
+def send_email(
+    smtp_server: str,
+    smpt_port: int,
+    username: str,
+    password: str,
+    sender_email: str,
+    receiver_email: str,
+    message: str,
+):
+    """
+    Send a simple text email (SMTP)
+    """
+    context = ssl.create_default_context()
+    with smtplib.SMTP(smtp_server, smpt_port) as server:
+        server.starttls(context=context)
+        server.login(username, password)
+        server.sendmail(sender_email, receiver_email, message)
+
+
+def render_template(template_file: str, **kwargs) -> str:
+    """
+    Simple render template based on named parameters
+
+    :param template_file: The template file location
+    :kwargs: Named parameters to use when rendering the template
+    :return: Rendered template
+    """
+    template = jinja2.Template(open(template_file).read())
+    return template.render(kwargs)
+
+
+def inter_send_email(username, password, sender_email, receiver_email, 
message):
+    print("--------------------------")
+    print("SMTP Message")
+    print("--------------------------")
+    print(message)
+    print("--------------------------")
+    confirm = input("Is the Email message ok? (yes/no): ")
+    if confirm not in ("Yes", "yes", "y"):
+        exit("Exit by user request")
+
+    try:
+        send_email(
+            SMTP_SERVER,
+            SMTP_PORT,
+            username,
+            password,
+            sender_email,
+            receiver_email,
+            message,
+        )
+        print("Email sent successfully")
+    except smtplib.SMTPAuthenticationError:
+        exit("SMTP User authentication error, Email not sent!")
+    except Exception as e:
+        exit(f"SMTP exception {e}")
+
+
+class BaseParameters(object):
+    def __init__(
+        self, email=None, username=None, password=None, version=None, 
version_rc=None
+    ):
+        self.email = email
+        self.username = username
+        self.password = password
+        self.version = version
+        self.version_rc = version_rc
+        self.template_arguments = dict()
+
+    def __repr__(self):
+        return f"Apache Credentials: 
{self.email}/{self.username}/{self.version}/{self.version_rc}"
+
+
[email protected]()
[email protected]_context
[email protected](
+    "--apache_email",
+    prompt="Apache Email",
+    help="Your Apache email this will be used for SMTP From",
+)
[email protected](
+    "--apache_username",
+    prompt="Apache username",
+    help="Your LDAP Apache username",
+)
[email protected](
+    "--apache_password",
+    prompt="Apache password",
+    hide_input=True,
+    help="Your LDAP Apache password",
+)
[email protected]("--version", envvar="SUPERSET_VERSION")
[email protected]("--version_rc", envvar="SUPERSET_VERSION_RC")
+def cli(ctx, apache_email, apache_username, apache_password, version, 
version_rc):
+    """ Welcome to releasing send email CLI interface!  """
+    base_parameters = BaseParameters(
+        apache_email, apache_username, apache_password, version, version_rc
+    )
+    base_parameters.template_arguments["project_name"] = PROJECT_NAME
+    base_parameters.template_arguments["project_module"] = PROJECT_MODULE
+    base_parameters.template_arguments["project_description"] = 
PROJECT_DESCRIPTION
+    base_parameters.template_arguments["version"] = base_parameters.version
+    base_parameters.template_arguments["version_rc"] = 
base_parameters.version_rc
+    base_parameters.template_arguments["sender_email"] = base_parameters.email
+    ctx.obj = base_parameters
+
+
[email protected]("vote_pmc")
[email protected](
+    "--receiver_email",
+    default="[email protected]",
+    type=str,
+    prompt="The receiver email (To:)",
+)
[email protected]_obj
+def vote_pmc(base_parameters, receiver_email):
+    template_file = "email_templates/vote_pmc.j2"
+    base_parameters.template_arguments["receiver_email"] = receiver_email
+    message = render_template(template_file, 
**base_parameters.template_arguments)
+    inter_send_email(
+        base_parameters.username,
+        base_parameters.password,
+        base_parameters.template_arguments["sender_email"],
+        base_parameters.template_arguments["receiver_email"],
+        message,
+    )
+
+
[email protected]("result_pmc")
[email protected](
+    "--receiver_email",
+    default="[email protected]",
+    type=str,
+    prompt="The receiver email (To:)",
+)
[email protected](
+    "--vote_bindings",
+    default="",
+    type=str,
+    prompt="A List of people with +1 binding vote (ex: Max,Grace,Krist)",
+)
[email protected](
+    "--vote_nonbindings",
+    default="",
+    type=str,
+    prompt="A List of people with +1 non binding vote (ex: Ville)",
+)
[email protected](
+    "--vote_negatives",
+    default="",
+    type=str,
+    prompt="A List of people with -1 vote (ex: John)",
+)
[email protected]_obj
+def result_pmc(base_parameters, receiver_email, vote_bindings, 
vote_nonbindings, vote_negatives):
+    template_file = "email_templates/result_pmc.j2"
+    base_parameters.template_arguments["receiver_email"] = receiver_email
+    base_parameters.template_arguments["vote_bindings"] = string_comma_to_list(
+        vote_bindings
+    )
+    base_parameters.template_arguments["vote_nonbindings"] = 
string_comma_to_list(
+        vote_nonbindings
+    )
+    base_parameters.template_arguments["vote_negatives"] = 
string_comma_to_list(
+        vote_negatives
+    )
+    message = render_template(template_file, 
**base_parameters.template_arguments)
+    inter_send_email(
+        base_parameters.username,
+        base_parameters.password,
+        base_parameters.template_arguments["sender_email"],
+        base_parameters.template_arguments["receiver_email"],
+        message,
+    )
+
+
[email protected]("vote_ipmc")
[email protected](
+    "--receiver_email",
+    default="[email protected]",
+    type=str,
+    prompt="The receiver email (To:)",
+)
[email protected]("--voting_thread", prompt="The URL for the PMC voting thread")
[email protected](
+    "--vote_mentors",
+    default="",
+    type=str,
+    prompt="A list of mentors that have already voted (ex: Alan,Justin)",
+)
[email protected]_obj
+def vote_ipmc(base_parameters, receiver_email, voting_thread, vote_mentors):
+    template_file = "email_templates/vote_ipmc.j2"
+    base_parameters.template_arguments["receiver_email"] = receiver_email
+    base_parameters.template_arguments["voting_thread"] = voting_thread
+    base_parameters.template_arguments["vote_mentors"] = string_comma_to_list(
+        vote_mentors
+    )
+    message = render_template(template_file, 
**base_parameters.template_arguments)
+    inter_send_email(
+        base_parameters.username,
+        base_parameters.password,
+        base_parameters.template_arguments["sender_email"],
+        base_parameters.template_arguments["receiver_email"],
+        message,
+    )
+
+
[email protected]("result_ipmc")
[email protected](
+    "--receiver_email",
+    default="[email protected]",
+    type=str,
+    prompt="The receiver email (To:)",
+)
[email protected]_obj
+def result_ipmc(base_parameters, receiver_email):
+    template_file = "email_templates/result_ipmc.j2"
+    base_parameters.template_arguments["receiver_email"] = receiver_email
+    message = render_template(template_file, 
**base_parameters.template_arguments)
+    inter_send_email(
+        base_parameters.username,
+        base_parameters.password,
+        base_parameters.template_arguments["sender_email"],
+        base_parameters.template_arguments["receiver_email"],
+        message,
+    )
+
+
[email protected]("announce")
[email protected](
+    "--receiver_email",
+    default="[email protected]",
+    type=str,
+    prompt="The receiver email (To:)",
+)
[email protected]_obj
+def announce(base_parameters, receiver_email):
+    template_file = "email_templates/announce.j2"
+    base_parameters.template_arguments["receiver_email"] = receiver_email
+    message = render_template(template_file, 
**base_parameters.template_arguments)
+    inter_send_email(
+        base_parameters.username,
+        base_parameters.password,
+        base_parameters.template_arguments["sender_email"],
+        base_parameters.template_arguments["receiver_email"],
+        message,
+    )
+
+
+cli()

Reply via email to