|
@@ -0,0 +1,109 @@
|
|
|
|
+from enum import Enum
|
|
|
|
+import time
|
|
|
|
+from datetime import datetime
|
|
|
|
+from typing import Optional
|
|
|
|
+from pydantic import BaseModel
|
|
|
|
+from fastapi import FastAPI, Query, UploadFile, File
|
|
|
|
+from fastapi import FastAPI
|
|
|
|
+from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
+import json
|
|
|
|
+import urllib.request
|
|
|
|
+import dataset,json
|
|
|
|
+import pandas as pd
|
|
|
|
+
|
|
|
|
+import dataset
|
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
+
|
|
|
|
+from email.mime.text import MIMEText
|
|
|
|
+from email.mime.image import MIMEImage
|
|
|
|
+from email.mime.multipart import MIMEMultipart
|
|
|
|
+from email.mime.base import MIMEBase
|
|
|
|
+from email.mime.application import MIMEApplication
|
|
|
|
+import os
|
|
|
|
+import boto3
|
|
|
|
+from botocore.exceptions import ClientError
|
|
|
|
+
|
|
|
|
+app = FastAPI()
|
|
|
|
+
|
|
|
|
+origins = [
|
|
|
|
+ "http://172.105.205.52",
|
|
|
|
+ "http://172.105.205.52:8001",
|
|
|
|
+]
|
|
|
|
+
|
|
|
|
+app.add_middleware(
|
|
|
|
+ CORSMiddleware,
|
|
|
|
+ # allow_origins=origins,
|
|
|
|
+ allow_origins=["*"],
|
|
|
|
+ allow_credentials=True,
|
|
|
|
+ allow_methods=["*"],
|
|
|
|
+ allow_headers=["*"],
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+# 寄送逾期執行表單Email通知
|
|
|
|
+def hhh_send_mail(email, html):
|
|
|
|
+ SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
|
|
|
|
+ RECIPIENT = email
|
|
|
|
+ AWS_REGION = "us-east-1"
|
|
|
|
+ CHARSET = "UTF-8"
|
|
|
|
+ client = boto3.client('ses',region_name=AWS_REGION)
|
|
|
|
+
|
|
|
|
+ try:
|
|
|
|
+ msg = MIMEMultipart()
|
|
|
|
+ # msg["Subject"] = "逾期執行表單通知_" + str(datetime.date.today())
|
|
|
|
+ msg["Subject"] = "逾期執行表單通知_" + (datetime.now() + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M")
|
|
|
|
+ msg["From"] = "noreply@hhh.com.tw"
|
|
|
|
+ msg["To"] = email
|
|
|
|
+
|
|
|
|
+ # Set message body
|
|
|
|
+ body = MIMEText(html, "html")
|
|
|
|
+
|
|
|
|
+ msg.attach(body)
|
|
|
|
+
|
|
|
|
+ response = client.send_raw_email(
|
|
|
|
+ Source=msg["From"],
|
|
|
|
+ Destinations=[msg["To"]],
|
|
|
|
+ RawMessage={"Data": msg.as_string()}
|
|
|
|
+ )
|
|
|
|
+ print(response)
|
|
|
|
+
|
|
|
|
+ # Display an error if something goes wrong.
|
|
|
|
+ except ClientError as e:
|
|
|
|
+ print(e.response['Error']['Message'])
|
|
|
|
+ else:
|
|
|
|
+ print("Email sent! Message ID:"),
|
|
|
|
+ print(response['MessageId'])
|
|
|
|
+
|
|
|
|
+# Choozmo DB
|
|
|
|
+# db = dataset.connect("mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4")
|
|
|
|
+
|
|
|
|
+# 測試機 DB
|
|
|
|
+db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@hhh-v57-cluster.cluster-cmab1ctkglka.ap-northeast-2.rds.amazonaws.com:3306/stage?charset=utf8mb4')
|
|
|
|
+
|
|
|
|
+# 正式機 DB
|
|
|
|
+# db = dataset.connect('mysql://hhh7796hhh:lYmWsu^ujcA1@hhh-v57-cluster.cluster-cmab1ctkglka.ap-northeast-2.rds.amazonaws.com:3306/xoops?charset=utf8mb4')
|
|
|
|
+
|
|
|
|
+@app.post("/is_close_changed_notice")
|
|
|
|
+async def is_close_changed_notice():
|
|
|
|
+ return "is_close_changed_notice"
|
|
|
|
+
|
|
|
|
+ html = """
|
|
|
|
+ <!DOCTYPE html>
|
|
|
|
+ <head>
|
|
|
|
+ <meta charset="UTF-8">
|
|
|
|
+ </head>
|
|
|
|
+ <body>
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ html += "is_close_changed_notice()"
|
|
|
|
+
|
|
|
|
+ html += """
|
|
|
|
+ </body>
|
|
|
|
+ </html>
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ # Email清單
|
|
|
|
+ email_list = ['mike@choozmo.com']
|
|
|
|
+
|
|
|
|
+ # 寄送逾期執行表單Email通知
|
|
|
|
+ for email in email_list:
|
|
|
|
+ hhh_send_mail(email, html)
|