浏览代码

add get booking data

jason 3 年之前
父节点
当前提交
7fe2517efa
共有 2 个文件被更改,包括 49 次插入2 次删除
  1. 37 2
      api/main.py
  2. 12 0
      api/violet-beauty-booking-data-8ef5f0d9a747.json

+ 37 - 2
api/main.py

@@ -4,7 +4,10 @@ from fastapi import FastAPI, Form, Request
 from fastapi.templating import Jinja2Templates
 from fastapi.middleware.cors import CORSMiddleware
 from pydantic import BaseModel
-import os, dataset, json
+from oauth2client.service_account import ServiceAccountCredentials
+import os, dataset, json, gspread
+from gspread_pandas import Spread, Client
+import pandas as pd
 
 app = FastAPI()
 directory=os.path.dirname(os.getcwd())
@@ -37,4 +40,36 @@ async def formentry(name: str = Form(...), phone: str = Form(...), loc: str = Fo
     request_table.insert({"name": name, "phone": phone, "location": loc, "course_name":course_name, "book_date": bookdate, "book_time": booktime, "time_stamp": time_stamp})
 
     return 0 # pls make booking success page
-    # return templates.TemplateResponse("(bookingsuccess.html)",{"request": request})
+    # return templates.TemplateResponse("(bookingsuccess.html)",{"request": request})
+
+@app.get("/getbooking_data")
+async def getdata():
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/violetbeauty?charset=utf8mb4')
+    statement = 'SELECT * FROM booking_info ORDER BY time_stamp DESC'
+    df = pd.DataFrame()
+    for row in db.query(statement):
+        date_format = "%Y-%M-%d %H:%M:%S"
+   
+        fdate = row['time_stamp'].strftime('%Y-%m-%d')
+        
+        df = df.append({'預約時間':row['time_stamp'],'姓名':row['name'],'電話':str(row['phone']),'預約體驗店家':row['location'],'選擇課程':row['course_name'],'日期':row['book_date'],'時間':row['book_time']}, ignore_index=True)
+    
+    save_sheet(df,'紫晴預約資料','預約資料')
+
+    return '資料下載完成'
+
+def save_sheet(df,filename,tabname,startpos='A1'):
+
+    scope = ['https://spreadsheets.google.com/feeds',
+            'https://www.googleapis.com/auth/drive']
+
+    credentials = ServiceAccountCredentials.from_json_keyfile_name('violet-beauty-booking-data-8ef5f0d9a747.json', scope)
+
+    gc = gspread.authorize(credentials)
+    spread = Spread(filename,creds=credentials)
+    spread.df_to_sheet(df, index=False, sheet=tabname, start=startpos, replace=False)
+
+    time_stamp = datetime.fromtimestamp(time.time())
+    time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
+    
+    spread.sheet.update('I1', '最後更新:' + time_stamp)

+ 12 - 0
api/violet-beauty-booking-data-8ef5f0d9a747.json

@@ -0,0 +1,12 @@
+{
+  "type": "service_account",
+  "project_id": "violet-beauty-booking-data",
+  "private_key_id": "8ef5f0d9a747733d57ee03a6817c1c84a2db416e",
+  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDjt7kpBiV7/4KN\nDJnubGELDhKMLtcHYlB05f3A50jNodHusNLTxLEpYvu6u/vT8NKfuN3jYxC8niNo\nxN+z9eITHgJ57MuvKfUavoCJFD86ByVfjWgXANkEAvhL7GlvwgHH+PCUXGjuNqwt\nRQbbYuBp2rBwHDGvK+/rewHQKslJZg87p93ZXPqWOxbOADTa4F+HPp1N5MhqPvRu\nc5u9rVIIezbsFlILp5QJMHVO8r3YkmO3SMAYqQeX2uq9uOE5Qf4wy16AVOXiKq0H\nyp9c7bg7hg/dZtjOxTg4QwGwigZ8uN1/9HEBXyRvK4R/+Q9yzqjr+AWHpQQjcQmq\nTNRfiLg5AgMBAAECggEAWPxQhPF78Gq2j3vfI0aC3ZkQMmuTZ7VJj4TYlmtLDeAw\ncz/yAwMX3/5oNF6FWBsBk5zgSJ1LywlY+PYGHQL251WQzih0p+yTdXIANJEO7BQi\nzKYriOGx7FlkwfaOdTexDn3/NVqvPndq7P3OYijPXU4yKH08BSH8TV7yJHCz29Qj\nQ19yDPCYhjqFXelN3aW5+Aack8+MhkGRBxWWv6hJNTETqEqKGk0TF0B7m0+zRvyh\nY7c2KiZMGZNKRT/sK7jkZvu36LHaQ3krrqGxSHVZjIFN15Xc1ZsFO6M4YwYh2Fvq\nJiuQsx8SqFCLlVwmM6DTxl1LQfO/mht7ZB9OJv79iQKBgQD7BDKegyewONjwkNSi\nWo8MIhfgyVDM/byR2q6RXiw1cCtC3kgulXXw66EKaszQVQXDyWw+TS57bHqfZq7N\nWk/C2u1sUPA5VpyBwlLHvbTtW/3A7SUakHJ+QBi8D4jAmOVfwJjIM5X/MmV5UAOc\nnXaUJAXHCR4qCoEbV7l4zrl7TwKBgQDoPRvT/q0HcVM9PuIA1CEHSY5o7SLNkFB9\n4UsR4K78MV6jnJZld655d+3fP3B+JobNoLm4x52XYuaLHBSZbBm3EX4TFpC6KqOM\nk0izmDLBN+jOo8UHFI+YItLtBWaLdTY1Io/pCCpKK0nVTzBzLOto2zVDAAGRhvai\nIuMkzdWR9wKBgQD01aRV7hFhFiGri2iLLw9Fw19M9q9kMr2h+g25ZoRyXwUjRNJc\n9ZVDN2EtWvyI29UyoZ19qySCaE22ep5XWBZiNc3Mj6mwE6W1/wdlIcl+lvKMIgLF\nxUyXjgdSL0iwqrFX0vBynbZZYxuM1xmewgut9PDZsTAFy5cgR1F13xUViwKBgQCw\ndy6cCVpk22GKmiuUwZtPND83z2iwlkXzQKuQLBAKpWDqJWPKOgSjW9Ot3UCXOqMX\nwFce5t8CVy4i6fVlFtT7XBlWW8EhFKEtggSuIqn+U4Nc8OgXlzH9QgjP/ViMA0Zr\nXZXIVmH79aSmpwODoNBH3rk77ddDQzBIxwWdw6HSxQKBgQDlBx4yV7uesI30+NAo\nY254rI1/dE34BTyo8pztEvV/Cs1SZzxPNvMvlfWx7XmDiKemgeeib7M4ikehe1+8\n23fLUwA+S1yp903w+QE6BNn1YCQ8XZjq8XW/9E2d3XScCCSSAP9//UFQeKO2tFqY\nsag8IjEvTwwH6cNcg0c6mWUd5w==\n-----END PRIVATE KEY-----\n",
+  "client_email": "violet@violet-beauty-booking-data.iam.gserviceaccount.com",
+  "client_id": "111018896381560515098",
+  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
+  "token_uri": "https://oauth2.googleapis.com/token",
+  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
+  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/violet%40violet-beauty-booking-data.iam.gserviceaccount.com"
+}