feat: 可儲存課表至DB

This commit is contained in:
Ting-Jun Wang 2021-01-16 21:22:57 +08:00
parent abc04f2e2b
commit 62a1a63ff1
Signed by: snsd0805
GPG Key ID: 8DB0D22BC1217D33
3 changed files with 58 additions and 9 deletions

16
api.py
View File

@ -52,6 +52,22 @@ def get():
else:
return '{"status": "error access code"}', 403
@app.route('/courseTable', methods=["POST"])
def save():
# 先驗證 access code 是否正確
jsonData = request.get_json()
status, uid, name = facebookAuth(jsonData['token'])
if status:
with sqlite3.connect('data.db') as conn:
sql = "UPDATE `courseTables` SET `json`=? WHERE `uid`=?"
conn.execute(sql, [json.dumps(jsonData['data'], ensure_ascii=False), uid])
conn.commit()
return '{"status": "saved"}', 200
else:
return '{"status": "error access code"}', 403
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0')

View File

@ -35,9 +35,6 @@
<li class="nav-item mx-0 mx-lg-1">
<div class="fb-login-button" data-width="" data-size="small" data-button-type="login_with" data-layout="rounded" data-auto-logout-link="true" data-use-continue-as="true"></div>
</li>
<li class="nav-item mx-0 mx-lg-1">
<button v-on:click="selectDepartment='123'">test</button>
</li>
</ul>
</div>
</div>
@ -54,6 +51,9 @@
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<div class="divider-custom">
<div class=><button class="btn btn-info" @click="saveCourseTable()">儲存</button></div>
</div>
<div class="row">
<div class="col-lg-3">
<div class="row">

View File

@ -6,6 +6,7 @@ var vm = new Vue({
'departments': [],
'selectDepartment': '',
'foundName': "",
'token': ""
},
created() {
window.fbAsyncInit = function() {
@ -17,7 +18,7 @@ var vm = new Vue({
});
FB.AppEvents.logPageView();
vm.checkLogin()
vm.getCourseTable()
};
(function(d, s, id){
@ -46,17 +47,15 @@ var vm = new Vue({
})
},
methods: {
'checkLogin': function(){
console.log("check login")
'getCourseTable': function(){
FB.getLoginStatus(function(response) {
vm.statusChangeCallback(response);
});
},
'statusChangeCallback': function(response){
console.log(response)
if(response.status == "connected"){
console.log("https://api.snsd0805.com/courseTable?token="+response.authResponse.accessToken)
fetch('https://api.snsd0805.com/courseTable?token='+response.authResponse.accessToken)
this.token = response.authResponse.accessToken
fetch('https://api.snsd0805.com/courseTable?token='+this.token)
.then(function(response){
return response.json()
}).then(function(jsonData){
@ -65,6 +64,40 @@ var vm = new Vue({
.catch(function(err){
alert("錯誤: "+err)
})
}else{
}
},
'saveCourseTable': function(){
if(this.token!=""){
fetch('https://api.snsd0805.com/courseTable',{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
'token': vm.token,
'data': vm.selectCourses
})
})
.then(function(response){
return response.json()
})
.then(function(response){
if(response.status=="saved"){
alert("已儲存")
}else{
alert("錯誤")
}
})
.catch(function(err){
alert("錯誤: "+err)
})
}else{
FB.login(function(response){
vm.getCourseTable()
})
}
},
'getTime': function(timeString){