-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviews.py
87 lines (75 loc) · 2.71 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from models import Puppy
from app import db
# puppy_id 받았을 때 상세 견종 반환
def get_puppy_id_list(puppy_id):
p = db.session.query(Puppy).filter(Puppy.id == puppy_id).first()
puppy = {'id': p.id,
'name': p.name,
'size': p.size,
'kidFriendly': p.kidFriendly,
'intelligence': p.intelligence,
'highEnergy': p.highEnergy,
'easyToTrain': p.easyToTrain,
'lowBarking': p.lowBarking,
'img_url': p.img_url,
'feature': p.feature}
return puppy
# size 별 견종 리스트 반환
# size == 1: 소형견/ size == 2: 중형견/ size == 3,4,5: 대형견
def get_puppy_size_list(size, page):
puppies = []
if size == '3' or size == '4' or size == '5':
pagination = Puppy.query.filter(Puppy.size.in_([3, 4, 5])).paginate(page, per_page=12, error_out=False)
for p in pagination.items:
puppy = {'id': p.id,
'name': p.name,
'size': p.size,
'img_url': p.img_url}
puppies.append(puppy)
meta = get_page_list(pagination)
else:
pagination = Puppy.query.filter(Puppy.size == size).paginate(page, per_page=12, error_out=False)
for p in pagination.items:
puppy = {'id': p.id,
'name': p.name,
'size': p.size,
'img_url': p.img_url}
puppies.append(puppy)
meta = get_page_list(pagination)
return puppies, meta
# 전체 견종 리스트 반환
def get_puppy_all_list(page):
puppies = []
pagination = Puppy.query.paginate(page=page, per_page=20, error_out=False)
for p in pagination.items:
puppy = {'id': p.id,
'name': p.name,
'size': p.size,
'img_url': p.img_url}
puppies.append(puppy)
meta = get_page_list(pagination)
return puppies, meta
# 페이지 정보 반환
def get_page_list(pagination):
meta = {
"page": pagination.page,
"pages": pagination.pages,
"total_count": pagination.total,
"prev_page": pagination.prev_num,
"next_page": pagination.next_num,
"has_next": pagination.has_next,
"has_prev": pagination.has_prev
}
return meta
# 검색
def get_search(kw, page): # kw: 검색어
puppies = []
search = '%%{}%%'.format(kw)
pagination = Puppy.query.filter(Puppy.name.ilike(search)).paginate(page, per_page=12)
for p in pagination.items:
puppy = {'id': p.id,
'name': p.name,
'img_url': p.img_url}
puppies.append(puppy)
meta = get_page_list(pagination)
return puppies, meta