Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week12 #17

Open
wants to merge 27 commits into
base: 1204/react
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
90555b3
index.js import문 정리
euWna Nov 27, 2022
1721b19
쉽지않네
euWna Nov 27, 2022
f3be94a
뒤죽박죽.. 임시 푸시
euWna Nov 27, 2022
316bd1e
templates에 StoreListView.html, StoreDetail.html 생성
euWna Nov 29, 2022
4cd3d9c
윤주영
zoo0YOON Nov 29, 2022
3ba5bfd
ff
zoo0YOON Nov 29, 2022
11dbb1c
StoreDetail.html 업데이트
dlvcoth Nov 29, 2022
ca8980d
Merge remote-tracking branch 'origin/1129/html' into 1129/html
dlvcoth Nov 29, 2022
644f4a0
StoreDetail html
dlvcoth Nov 29, 2022
e046e00
이야호
zoo0YOON Nov 29, 2022
17691d2
고침1
zoo0YOON Nov 29, 2022
97b38d4
StoreListView.html total 개수만큼 컴포넌트 생성 가능
euWna Nov 29, 2022
9f57f40
Update StoreListView.html
euWna Nov 29, 2022
957b379
동적 라우팅 작업 중
euWna Nov 29, 2022
4ce78b4
ff
zoo0YOON Nov 29, 2022
751d094
fff
zoo0YOON Nov 29, 2022
f349cfa
동적 라우팅 성공
euWna Nov 29, 2022
1665df8
Merge branch '1129_jy/html' of https://github.com/euWna/osp_project i…
zoo0YOON Nov 29, 2022
2b4d07b
fffff
zoo0YOON Nov 29, 2022
3da7b03
제발 저장좀;;
zoo0YOON Nov 29, 2022
85804ca
저장좀;;
zoo0YOON Nov 29, 2022
6d79380
week12 일부 완성
euWna Nov 29, 2022
0186b2e
CreateStore & update 성공, CreateMenu 진행중
euWna Nov 30, 2022
09f7c92
맛집 세부정보, 메뉴 불러오기까지
euWna Nov 30, 2022
4c81f8c
Merge pull request #14 from euWna/week12_
euWna Nov 30, 2022
c1e561f
StoreDetail 연동 완성
euWna Nov 30, 2022
fbb1a0d
Merge pull request #15 from euWna/week12_
euWna Nov 30, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified flask-server/__pycache__/database.cpython-311.pyc
Binary file not shown.
Binary file modified flask-server/__pycache__/database.cpython-39.pyc
Binary file not shown.
209 changes: 109 additions & 100 deletions flask-server/app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from flask import Flask, render_template, request, redirect, url_for
from flask import *
from database import DBhandler
import sys

from json import *


app = Flask(__name__)
Expand All @@ -10,118 +10,127 @@

DB.__init__()

#view(GET) functions
@app.route("/")
def index():
return render_template("index.html")

def refresh(site):
return redirect

@app.route("/CreateStore", methods=['GET', 'POST'])
def Submit_store():
if request.method == 'POST':
data = request.form
# print(data)

name = data['storename']
location = data['location']
phonenumber = data['phonenumber']
time1 = data['time1']
time2 = data['time2']
category = data['food']
park = data['park']
time1 = data['price1']
time2 = data['price2']
site = data['site']
# print(name, location, phonenumber, category,site)

img_file = request.files['file']
#return redirect(url_for('list_stores'))

@app.route("/CreateStore")
def view_CreateStore():
return render_template("CreateStore.html")

@app.route("/CreateMenu/<storename>")
def view_CreateMenu(storename):
return render_template("CreateMenu.html", storename=storename)

@app.route("/CreateReview/<storename>")
def view_CreateReview(storename):
return render_template("CreateReview.html", storename=storename)

@app.route("/StoreListView")
def view_list():
page = request.args.get("page",0,type=int)
limit = 5

start_idx=limit*page
end_idx=limit*(page+1)
storedata = DB.get_stores()
tot_count = len(storedata)
storedata = dict(list(storedata.items())[start_idx:end_idx])

#print(tot_count, limit, page, int(tot_count/5)+1)
return render_template(
"StoreListView.html",
storedata=storedata.items(),
total=tot_count,
limit=limit,
page=page,
page_count=int(tot_count/limit)+1)


@app.route("/StoreDetail/<storename>")
def view_detail(storename):
storedata = DB.get_store_byname(str(storename))
menudata = DB.get_menus(str(storename))
reviewdata = DB.get_reviews(str(storename))
#menudata = DB.get_menus()
#reviewdata = DB.get_reviews()
return render_template("StoreDetail.html", storedata=storedata, menudata=menudata.items(), reviewdata=reviewdata.items())

@app.route("/ReviewAll")
def view_ReviewList():
return render_template("ReviewList.html")


#Submit(POST) functions

@app.route("/submit_store", methods=['POST'])
def submit_store():
img_file=request.files["imgfile"]
if img_file:
img_file.save("./flask-server/static/img/"+img_file.filename)
data=request.form
storename=data["storename"]

if(DB.insert_store(data["storename"],data, img_file.filename)) :
print("submit_store success")
#return render_template("CreateStore_update.html", result=data)
return redirect(url_for('Created_store',storename=storename))
else:
return "The submitted store already exists!"

@app.route("/Created_store/<storename>")
def Created_store(storename):
submitted = DB.get_store_byname(storename)
return render_template("CreateStore_update.html", submitted=submitted)



@app.route("/submit_menu", methods=['POST'])
def submit_menu():
img_file=request.files["imgfile"]
if img_file:
img_file.save("./flask-server/static/img/"+img_file.filename)
# print(img_file)
#DB.insert_store(data['storename'], data, img_file.filename)

# return render_template("result.html", result=data, img_path="static/img"+img_file.filename)

if DB.insert_store(data['storename'], data, img_file.filename):
#return render_template("result.html", result=data, img_path="static/img/"+img_file.filename)
return redirect(url_for('view', store_id=name))
data=request.form
storename=data["storename"]

if(DB.insert_menu(storename, data, img_file.filename)):
print("submit_menu success")
return redirect(url_for('Created_menu', storename=storename))
else:
return "The submitted store already exists!"
return "The submitted menu already exists!"

@app.route("/Created_menu/<storename>")
def Created_menu(storename):
menudata = DB.get_menus(storename)
#print(menudata.items())
#submitted = DB.get_menu_byname(storename)
return render_template("CreateMenu_update.html", storename=storename, menudata=menudata.items())

@app.route("/CreateMenu/<store_id>",methods=['GET','POST'])
def view(store_id):
return render_template("index.html")

'''
@app.route("/CreateMenu",methods=['GET','POST'])
def go_menucreate():
return redirect(url_for('Submit_menu', request_method=request.method))
'''

@app.route("/CreateMenu",methods=['GET','POST'])
def Submit_menu():
if request.method == 'POST':
data = request.form
#print(data)

menuname = data['food']
price = data['money']
nutrient = data['nutrient']
#print(menuname, price, nutrient)

img_file = request.files['file']
if img_file:
img_file.save("./flask-server/static/img/"+img_file.filename)
#print(img_file)

#return render_template("result_menu.html", result=result)

if DB.insert_menu(data['food'], data, img_file.filename):
return render_template("result_menu.html", result = data, img_path="static/img/"+img_file.filename)
else:
return "The submitted menu already exists!"
'''
else :
if request_method == 'GET':
request_method == 'POST'
return redirect("http://127.0.0.1:5000/CreateMenu", request_method=request.method)'''


@app.route("/CreateReview", methods=['GET','POST'])
def Submit_Review():
if request.method == 'POST':
data = request.form
#print(data)

username = data['username']
reviewtitle = data['reviewtitle']
reviewdesc = data['reviewdesc']
#print(username,"\n",reviewtitle, '\n', reviewdesc)

img_file = request.files['file']
@app.route("/submit_review", methods=['POST'])
def submit_reivew():
img_file=request.files["imgfile"]
if img_file:
img_file.save("./flask-server/static/img/"+img_file.filename)
#print(img_file)
data=request.form
storename=data["storename"]

if DB.insert_review(data['username'], data, img_file.filename):
return render_template("result_review.html", result = data, img_path="static/img/"+img_file.filename)
if(DB.insert_review(storename, data, img_file.filename)):
print("submit_review success")
return redirect(url_for('Created_review', storename=storename))


@app.route("/Created_review/<storename>")
def Created_review(storename):
submitted = DB.get_reviews(storename)
#print(menudata.items())
#submitted = DB.get_menu_byname(storename)
return render_template("CreateReview_update.html", storename=storename, submitted=submitted)

if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)

@app.route('/StoreListView', methods=['GET','POST'])
def list_stores():
data = DB.get_stores()
tot_count = len(data)

return render_template("index.html", datas=data.items(), total=tot_count())

'''
@app.route("/StoreListView",methods=['GET','POST'])
def view_storelist(store_id):
return render_template("index.html")
'''
if __name__=="__main__":
app.run(host='0.0.0.0', debug=True)

114 changes: 88 additions & 26 deletions flask-server/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ def insert_store(self,name,data,img_path):
"price1" : data['price1'],
"price2" : data['price2'],
"site" : data['site'],
"img_path" : img_path
"img_path" : "../static/image/"+img_path
}

if self.store_duplicate_check(name):
self.db.child("STORE").child(name).set(store_info)
self.db.child("STORE").push(store_info)
#print(data,img_path)
return True
else:
Expand All @@ -36,51 +36,113 @@ def insert_store(self,name,data,img_path):
def store_duplicate_check(self, name):
stores = self.db.child("STORE").get()
for res in stores.each():
if res.key() == name:
if res.val()['storename'] == name:
return False
return True

#맛집 정보 가져오는 함수(StoreListView에서 사용)
#전체 맛집 정보 가져오는 함수(StoreListView에서 사용)
def get_stores(self):
stores = self.db.child("STORE").get.val()
stores = self.db.child("STORE").get().val()
#print(stores)
return stores

#특정 맛집의 세부 정보 가져오는 함수
def get_store_byname(self,name):
stores = self.db.child("STORE").get()
target_value=""
for res in stores.each():
value = res.val()
if value['storename'] == name:
target_value=value
break
return target_value

def update_store(self,name,data,img_path):
store_info ={
"name" : name,
"storename" : data['storename'],
"location" : data['location'],
"phonenumber" : data['phonenumber'],
"time1" : data['time1'],
"time2" : data['time2'],
"food" : data['food'],
"park" : data['park'],
"price1" : data['price1'],
"price2" : data['price2'],
"site" : data['site'],
"img_path" : "static/image/"+img_path
}

if self.store_duplicate_check(name):
self.db.child("STORE").update(store_info)
#print(data,img_path)
return True
else:
self.insert_store(self,name,data,img_path)
self.db.child("STORE").child(name).remove()
return True


def insert_menu(self,name,data,img_path):
def insert_menu(self, storename, menudata,img_path):
menu_info ={
"food" : data['food'],
"money" : data['money'],
"nutrient" : data['nutrient'],
"img_path" : img_path
"menuname" : menudata['menuname'],
"price" : menudata['price'],
"nutrient" : menudata['nutrient'],
"img_path" : "static/img/"+img_path
}
if self.menu_duplicate_check(name):
self.db.child("MENU").child(name).set(menu_info)
if self.menu_duplicate_check(storename, menudata['menuname']):
self.db.child("MENU").child(storename).child(menudata['menuname']).set(menu_info)
#print(data,img_path)
return True
else:
return False

# 메뉴 정보 중복 체크 함수(insertmenu에서 사용)
def menu_duplicate_check(self, name):
menus = self.db.child("MENU").get()
for res in menus.each():
if res.key() == name:
return False
def menu_duplicate_check(self, storename, menuname):
menudata = self.db.child("MENU").child(storename).get()
if isinstance(menudata.val(), type(None)):
#print("NONE")
return True
else:
for res in menudata.each():
if res.key() == menuname:
return False
return True

# 해당 맛집의 메뉴들을 가져오는 함수
def get_menus(self,storename):
menus = self.db.child("MENU").child(storename).get().val()
#print(stores)
return menus

#해당 맛집의 특정 메뉴의 정보를 가져오는 함수
def get_menu_byname(self,storename,menuname):
menus = self.db.child("MENU").child("storename").get()
target_key=""
for res in menus.each():
key = res.key()
if key == storename:
target_key=key
break
target_value=target_key.val()
return target_value



def insert_review(self,name,data,img_path):
def insert_review(self, storename, reviewdata, img_path):
review_info ={
"storescore" : data['storescore'],
"username" : data['username'],
"reviewtitle" : data['reviewtitle'],
"reviewdesc" : data['reviewdesc'],
"img_path" : img_path
"storename" : storename,
"storescore" : reviewdata['storescore'],
"username" : reviewdata['username'],
"reviewtitle" : reviewdata['reviewtitle'],
"reviewdesc" : reviewdata['reviewdesc'],
"img_path" : "static/image/"+img_path
}
self.db.child("REVIEW").child(name).set(review_info)
print(data,img_path)
self.db.child("REVIEW").child(storename).child(reviewdata['username']).set(review_info)
return True

def get_reviews(self, storename):
reviews = self.db.child("REVIEW").child(storename).get().val()
#print(stores)
return reviews


Loading