feat: 可儲存課表至DB
This commit is contained in:
parent
abc04f2e2b
commit
62a1a63ff1
16
api.py
16
api.py
@ -52,6 +52,22 @@ def get():
|
|||||||
else:
|
else:
|
||||||
return '{"status": "error access code"}', 403
|
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__':
|
if __name__ == '__main__':
|
||||||
app.debug = True
|
app.debug = True
|
||||||
app.run(host='0.0.0.0')
|
app.run(host='0.0.0.0')
|
||||||
|
|||||||
@ -35,9 +35,6 @@
|
|||||||
<li class="nav-item mx-0 mx-lg-1">
|
<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>
|
<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>
|
||||||
<li class="nav-item mx-0 mx-lg-1">
|
|
||||||
<button v-on:click="selectDepartment='123'">test</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -54,6 +51,9 @@
|
|||||||
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
|
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
|
||||||
<div class="divider-custom-line"></div>
|
<div class="divider-custom-line"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="divider-custom">
|
||||||
|
<div class=><button class="btn btn-info" @click="saveCourseTable()">儲存</button></div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-3">
|
<div class="col-lg-3">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
45
js/index.vue
45
js/index.vue
@ -6,6 +6,7 @@ var vm = new Vue({
|
|||||||
'departments': [],
|
'departments': [],
|
||||||
'selectDepartment': '',
|
'selectDepartment': '',
|
||||||
'foundName': "",
|
'foundName': "",
|
||||||
|
'token': ""
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
window.fbAsyncInit = function() {
|
window.fbAsyncInit = function() {
|
||||||
@ -17,7 +18,7 @@ var vm = new Vue({
|
|||||||
});
|
});
|
||||||
|
|
||||||
FB.AppEvents.logPageView();
|
FB.AppEvents.logPageView();
|
||||||
vm.checkLogin()
|
vm.getCourseTable()
|
||||||
};
|
};
|
||||||
|
|
||||||
(function(d, s, id){
|
(function(d, s, id){
|
||||||
@ -46,17 +47,15 @@ var vm = new Vue({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
'checkLogin': function(){
|
'getCourseTable': function(){
|
||||||
console.log("check login")
|
|
||||||
FB.getLoginStatus(function(response) {
|
FB.getLoginStatus(function(response) {
|
||||||
vm.statusChangeCallback(response);
|
vm.statusChangeCallback(response);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
'statusChangeCallback': function(response){
|
'statusChangeCallback': function(response){
|
||||||
console.log(response)
|
|
||||||
if(response.status == "connected"){
|
if(response.status == "connected"){
|
||||||
console.log("https://api.snsd0805.com/courseTable?token="+response.authResponse.accessToken)
|
this.token = response.authResponse.accessToken
|
||||||
fetch('https://api.snsd0805.com/courseTable?token='+response.authResponse.accessToken)
|
fetch('https://api.snsd0805.com/courseTable?token='+this.token)
|
||||||
.then(function(response){
|
.then(function(response){
|
||||||
return response.json()
|
return response.json()
|
||||||
}).then(function(jsonData){
|
}).then(function(jsonData){
|
||||||
@ -65,6 +64,40 @@ var vm = new Vue({
|
|||||||
.catch(function(err){
|
.catch(function(err){
|
||||||
alert("錯誤: "+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){
|
'getTime': function(timeString){
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user