|
@@ -0,0 +1,269 @@
|
|
|
+
|
|
|
+import boto3
|
|
|
+import jinja2
|
|
|
+import os
|
|
|
+from typing import Optional
|
|
|
+from fastapi import Form, FastAPI, Header
|
|
|
+from fastapi.middleware.cors import CORSMiddleware
|
|
|
+from botocore.exceptions import ClientError
|
|
|
+from pydantic import BaseModel, EmailStr
|
|
|
+from email.mime.multipart import MIMEMultipart
|
|
|
+from email.mime.text import MIMEText
|
|
|
+from datetime import date
|
|
|
+import dataset
|
|
|
+from os.path import join, dirname
|
|
|
+from dotenv import load_dotenv
|
|
|
+
|
|
|
+
|
|
|
+# dotenv_path = join(dirname(__file__),'./env/.env')
|
|
|
+dotenv_path = join(dirname(__file__),'.env/.env_test')
|
|
|
+load_dotenv(dotenv_path)
|
|
|
+choozmo_db = os.environ.get("CHOOZMO_DATABASE_URL")
|
|
|
+hhh_db = os.environ.get("HHH_DATABASE_URL")
|
|
|
+def render_template(template, kwargs):
|
|
|
+ templateLoader = jinja2.FileSystemLoader(searchpath="./templates")
|
|
|
+ templateEnv = jinja2.Environment(loader=templateLoader)
|
|
|
+ templ = templateEnv.get_template(template)
|
|
|
+ return templ.render(kwargs)
|
|
|
+receiver = "andy@hhh.com.tw"
|
|
|
+# receiver = "andy@hhh.com.tw, agent@hhh.com.tw"
|
|
|
+
|
|
|
+app = FastAPI()
|
|
|
+app.add_middleware(
|
|
|
+ CORSMiddleware,
|
|
|
+ allow_origins=["*"],
|
|
|
+ allow_credentials=True,
|
|
|
+ allow_methods=["*"],
|
|
|
+ allow_headers=["*"],
|
|
|
+)
|
|
|
+class User(BaseModel):
|
|
|
+ name: str
|
|
|
+ email: EmailStr
|
|
|
+ phone: str
|
|
|
+ sex: Optional[str] = None
|
|
|
+
|
|
|
+class Html(User):
|
|
|
+ area: Optional[str] = None
|
|
|
+ type: Optional[str] = None
|
|
|
+ mode: Optional[str] = None
|
|
|
+ budget: Optional[str] = None
|
|
|
+ pin: Optional[str] = None
|
|
|
+ room: Optional[str] = None
|
|
|
+ hall: Optional[str] = None
|
|
|
+ restroom: Optional[str] = None
|
|
|
+ style: Optional[str] = None
|
|
|
+ time: Optional[str] = None
|
|
|
+
|
|
|
+class User2(BaseModel):
|
|
|
+ name: str
|
|
|
+ email: EmailStr
|
|
|
+ phone: str
|
|
|
+
|
|
|
+class Html2(User2):
|
|
|
+ loc: str
|
|
|
+ h_class: str
|
|
|
+ size: str
|
|
|
+ version: str
|
|
|
+
|
|
|
+
|
|
|
+class User3(BaseModel):
|
|
|
+ name: str
|
|
|
+ email: EmailStr
|
|
|
+ phone: str
|
|
|
+
|
|
|
+class Html3(User2):
|
|
|
+ house_type: str
|
|
|
+ location: str
|
|
|
+ house_year: str
|
|
|
+ pin: str
|
|
|
+ change_area: str
|
|
|
+ floor: str
|
|
|
+ compartment: str
|
|
|
+ ceiling: str
|
|
|
+ room: str
|
|
|
+ liveroom: str
|
|
|
+ bathroom: str
|
|
|
+
|
|
|
+
|
|
|
+@app.post('/hhh/mail/deco/v1')
|
|
|
+async def hhh_send_mail(html: Html):
|
|
|
+ ##TBD
|
|
|
+ ##xoops.renovation_request
|
|
|
+ db = dataset.connect(hhh_db)
|
|
|
+ query = "UPDATE renovation_reuqest SET loan=1 Where phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\'"
|
|
|
+ db.query(query)
|
|
|
+
|
|
|
+ query = "SELECT ctime FROM renovation_reuqest WHERE phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\' ORDER BY id desc LIMIT 1;"
|
|
|
+ result = db.query(query)
|
|
|
+ for i in result:
|
|
|
+ time_stamp = i['ctime'].strftime("%Y%m%d%H%M")
|
|
|
+
|
|
|
+ SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
|
|
|
+ RECIPIENT = receiver
|
|
|
+ AWS_REGION = "us-east-1"
|
|
|
+ CHARSET = "UTF-8"
|
|
|
+ client = boto3.client('ses',region_name=AWS_REGION)
|
|
|
+
|
|
|
+ context = {}
|
|
|
+ context["time_stamp"] = time_stamp
|
|
|
+ context["name"] = html.name
|
|
|
+ context["phone"] = html.phone
|
|
|
+ context["mail"] = html.email
|
|
|
+ context["sex"] = html.sex
|
|
|
+ context["area"] = html.area
|
|
|
+ context["type"] = html.type
|
|
|
+ context["mode"] = html.mode
|
|
|
+ context["budget"] = html.budget
|
|
|
+ context["pin"] = html.pin
|
|
|
+ context["room"] = html.room
|
|
|
+ context["hall"] = html.hall
|
|
|
+ context["restroom"] = html.restroom
|
|
|
+ context["style"] = html.style
|
|
|
+ context["time"] = str(html.time)
|
|
|
+
|
|
|
+ msg = MIMEMultipart()
|
|
|
+ msg["Subject"] = "富邦裝修需求貸款通知信"
|
|
|
+ msg["From"] = "noreply@hhh.com.tw"
|
|
|
+ msg["To"] = RECIPIENT
|
|
|
+
|
|
|
+ body = MIMEText(render_template("email.html",{"context":context}), "html")
|
|
|
+
|
|
|
+ msg.attach(body)
|
|
|
+
|
|
|
+ response = client.send_raw_email(
|
|
|
+ Source=msg["From"],
|
|
|
+ Destinations=[msg["To"]],
|
|
|
+ RawMessage={"Data": msg.as_string()}
|
|
|
+ )
|
|
|
+
|
|
|
+@app.post('/hhh/mail/deco/v2')
|
|
|
+async def hhh_send_mail(html: Html2, content_type: Optional[str] =Header(None)):
|
|
|
+ ##TBD
|
|
|
+ ## db.ptt.cx/hhh.deco_request
|
|
|
+ db = dataset.connect(choozmo_db)
|
|
|
+ query = "UPDATE deco_request SET loan=1 Where phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\'"
|
|
|
+ result = db.query(query)
|
|
|
+
|
|
|
+ query = "SELECT time_stamp FROM deco_request WHERE phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\' ORDER BY id desc LIMIT 1;"
|
|
|
+ result = db.query(query)
|
|
|
+ for i in result:
|
|
|
+ time_stamp = i['time_stamp'].strftime("%Y%m%d%H%M")
|
|
|
+ SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
|
|
|
+ RECIPIENT = receiver
|
|
|
+ AWS_REGION = "us-east-1"
|
|
|
+ CHARSET = "UTF-8"
|
|
|
+ client = boto3.client('ses',region_name=AWS_REGION)
|
|
|
+
|
|
|
+ context = {}
|
|
|
+ context["time_stamp"] = time_stamp
|
|
|
+ context["name"] = html.name
|
|
|
+ context["phone"] = html.phone
|
|
|
+ context["mail"] = html.email
|
|
|
+ context["loc"] = html.loc
|
|
|
+ context["h_class"] = html.h_class
|
|
|
+ context["size"] = html.size
|
|
|
+
|
|
|
+ msg = MIMEMultipart()
|
|
|
+ msg["Subject"] = "富邦裝修需求貸款通知信"
|
|
|
+ msg["From"] = "noreply@hhh.com.tw"
|
|
|
+ msg["To"] = RECIPIENT
|
|
|
+
|
|
|
+ body = MIMEText(render_template("email_v2.html",{"context":context}), "html")
|
|
|
+ msg.attach(body)
|
|
|
+
|
|
|
+ response = client.send_raw_email(
|
|
|
+ Source=msg["From"],
|
|
|
+ Destinations=[msg["To"]],
|
|
|
+ RawMessage={"Data": msg.as_string()}
|
|
|
+ )
|
|
|
+ # print(response)
|
|
|
+
|
|
|
+@app.post('/hhh/mail/deco/v3')
|
|
|
+async def hhh_send_mail(html: Html3, content_type: Optional[str] =Header(None)):
|
|
|
+ ##TBD
|
|
|
+ ## alter xoops.calulator loon set 1
|
|
|
+ db = dataset.connect(hhh_db)
|
|
|
+ query = "UPDATE calculator SET loan=1 Where phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\'"
|
|
|
+ result = db.query(query)
|
|
|
+
|
|
|
+ query = "SELECT create_time FROM calculator WHERE phone = \'" + str(html.phone) + "\' AND email = \'" + html.email +"\' AND name = \'" + html.name +"\' ORDER BY id desc LIMIT 1;"
|
|
|
+ result = db.query(query)
|
|
|
+ for i in result:
|
|
|
+ time_stamp = i['create_time'].strftime("%Y%m%d%H%M")
|
|
|
+
|
|
|
+ SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
|
|
|
+ RECIPIENT = receiver
|
|
|
+ AWS_REGION = "us-east-1"
|
|
|
+ CHARSET = "UTF-8"
|
|
|
+ client = boto3.client('ses',region_name=AWS_REGION)
|
|
|
+
|
|
|
+ context = {}
|
|
|
+ context["time_stamp"] = time_stamp
|
|
|
+ context["name"] = html.name
|
|
|
+ context["phone"] = html.phone
|
|
|
+ context["mail"] = html.email
|
|
|
+ context["house_type"] = html.house_type
|
|
|
+ context["location"] = html.location
|
|
|
+ context["house_year"] = html.house_year
|
|
|
+ context["pin"] = html.pin
|
|
|
+ context["change_area"] = html.change_area
|
|
|
+ context["floor"] = html.floor
|
|
|
+ context["compartment"] = html.compartment
|
|
|
+ context["ceiling"] = html.ceiling
|
|
|
+ context["room"] = html.room
|
|
|
+ context["liveroom"] = html.liveroom
|
|
|
+ context["bathroom"] = html.bathroom
|
|
|
+
|
|
|
+ msg = MIMEMultipart()
|
|
|
+ msg["Subject"] = "富邦裝修需求貸款通知信"
|
|
|
+ msg["From"] = "noreply@hhh.com.tw"
|
|
|
+ msg["To"] = RECIPIENT
|
|
|
+
|
|
|
+ body = MIMEText(render_template("email_v3.html",{"context":context}), "html")
|
|
|
+ msg.attach(body)
|
|
|
+
|
|
|
+ response = client.send_raw_email(
|
|
|
+ Source=msg["From"],
|
|
|
+ Destinations=[msg["To"]],
|
|
|
+ RawMessage={"Data": msg.as_string()}
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+# @app.post('/hhh/mail/deco/v4')
|
|
|
+# async def hhh_send_mail(html: Html3):
|
|
|
+
|
|
|
+# SENDER = "Gorgeous Space <noreply@hhh.com.tw>"
|
|
|
+# RECIPIENT = html.email
|
|
|
+# AWS_REGION = "us-east-1"
|
|
|
+# CHARSET = "UTF-8"
|
|
|
+# client = boto3.client('ses',region_name=AWS_REGION)
|
|
|
+
|
|
|
+# context = {}
|
|
|
+# context["name"] = html.name
|
|
|
+# context["phone"] = html.phone
|
|
|
+# context["mail"] = html.email
|
|
|
+# context["house_type"] = html.house_type
|
|
|
+# context["location"] = html.location
|
|
|
+# context["house_year"] = html.house_year
|
|
|
+# context["pin"] = html.pin
|
|
|
+# context["change_area"] = html.change_area
|
|
|
+# context["floor"] = html.floor
|
|
|
+# context["compartment"] = html.compartment
|
|
|
+# context["ceiling"] = html.ceiling
|
|
|
+# context["room"] = html.room
|
|
|
+# context["liveroom"] = html.liveroom
|
|
|
+# context["bathroom"] = html.bathroom
|
|
|
+
|
|
|
+# msg = MIMEMultipart()
|
|
|
+# msg["Subject"] = "富邦裝修需求貸款通知信"
|
|
|
+# msg["From"] = "noreply@hhh.com.tw"
|
|
|
+# msg["To"] = RECIPIENT
|
|
|
+
|
|
|
+# body = MIMEText(render_template("email_v4.html",{"context":context}), "html")
|
|
|
+# msg.attach(body)
|
|
|
+
|
|
|
+# response = client.send_raw_email(
|
|
|
+# Source=msg["From"],
|
|
|
+# Destinations=[msg["To"]],
|
|
|
+# RawMessage={"Data": msg.as_string()}
|
|
|
+# )
|