Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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 removed .DS_Store
Binary file not shown.
26 changes: 21 additions & 5 deletions meal.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,19 +70,35 @@ def __init__(self) -> None:
column 예외 존재 (2023.2.6의 1학1층한글 엑셀보면 쓸모없는 col이 있을 수 있음)
이를 위해 요일 있는 행의 index로 접근
'''
EXCEL_COL_BLDG0 = [2, 11]
EXCEL_COL_BLDG0 = [2, 7]
EXCEL_COL_BLDG0_EXCEPT = []
EXCEL_COL_BLDG1 = [1, 6]
EXCEL_COL_BLDG2 = [3, 10]

DATE_INDEX_BLDG0 = 4 # Bldg.1 1st
DATE_INDEX_BLDG0 = 5 # Bldg.1 1st
DATE_INDEX_BLDG1 = 1 # Bldg.1 2nd
DATE_INDEX_BLDG2 = 1 # Bldg.2 1st
DATE_INDEX_BLDG2 = 5 # Bldg.2 1st

INDEX_ENDPOINTS_BLDG0 = [[5, 15], [15, 22], [23, 30], [22, 23]] # Bldg.1 1st
# INDEX_ENDPOINTS_BLDG0 = [[5, 15], [15, 22], [23, 30], [22, 23]] # Bldg.1 1st
# 2023.03.27 식단부터 조식에 '즉석라면코너' 신설됨 -> constant로 관리. 따로 파싱 row 안만듦.
# INDEX_ENDPOINTS_BLDG0 = [[6, 16], [17, 25], [26, 33], [25, 26]] # Bldg.1 1st
# 2023.12.24 dinner 메뉴 하나 줄음
INDEX_ENDPOINTS_BLDG0 = [[6, 16], [17, 25], [26, 32], [25, 26]] # Bldg.1 1st

# 2023.05.06 조식 '즉석라면코너' 삭제됨
# INDEX_ENDPOINTS_BLDG0 = [[5, 15], [15, 22], [23, 30], [22, 23]] # Bldg.1 1st
INDEX_ENDPOINTS_BLDG1 = [[0, 0], [2, 12], [0, 0], [0, 0]] # Bldg.1 2nd
INDEX_ENDPOINTS_BLDG1_EXCEPT = [4, 6] # 1학2층 엑셀은 숨겨진 행(5,7번) 존재하고 dummy 들어가있어 제외해야함.
INDEX_ENDPOINTS_BLDG2 = [[2, 12], [12, 20], [22, 29], [20, 22]] # Bldg.2 1st
# INDEX_ENDPOINTS_BLDG2 = [[2, 12], [12, 20], [22, 29], [20, 22]] # Bldg.2 1st
# 2023.03.06 식단부터 조식 메뉴 1개 줄었음.
# INDEX_ENDPOINTS_BLDG2 = [[2, 11], [11, 18], [20, 27], [18, 20]] # Bldg.2 1st
# 2023.03.13 식단부터 조식은 되돌아오고, 중식 메뉴 1개 줄었음.
# INDEX_ENDPOINTS_BLDG2 = [[2, 12], [12, 19], [21, 28], [19, 21]] # Bldg.2 1st
# 2023.03.20 식단의 메뉴 바뀜.
# INDEX_ENDPOINTS_BLDG2 = [[2, 11], [11, 18], [20, 27], [18, 20]] # Bldg.2 1st
# 2023.11.25 2학 영양사님 바뀌셔서 양식 바뀜
INDEX_ENDPOINTS_BLDG2 = [[6, 15], [17, 24], [24, 31], [15, 17]] # Bldg.2 1st


# allergy type according to allergy code
ALGY_1_ING_KOR = ["난류", "우유", "메밀", "대두", "땅콩", "밀",
Expand Down
36 changes: 13 additions & 23 deletions parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from meal import KOR, ENG
from meal import BREAKFAST, LUNCH, DINNER
from meal import BLDG1_1ST, BLDG1_2ND, BLDG2_1ST
from meal import DATE_LEN, DATE_2nd,DATE_1st
from meal import MEAL_KIND
from meal import BLDG_KIND
from meal import EXCEL_COL_BLDG, INDEX_ENDPOINTS, DATE_INDEX
Expand All @@ -32,12 +31,12 @@ def parsing(excel_path: str, bldgType: int, langType: int) -> list:
index_col=None, header=None, names=None, engine='openpyxl')

# 맨 뒤에서 2번째 sheet가 이번주 sheet
last_sheet = list(xl.keys())[-2]
last_sheet = list(xl.keys())[-1]
sheet = xl[last_sheet]

# 짝수 column만 사용
sheet_keys = sheet.keys()[start_col_idx : end_col_idx]
sheet_keys = sheet_keys[0::2]
# sheet_keys = sheet_keys[0::2]

for (dateType, date_str) in enumerate(sheet_keys):
date_sheet = sheet[date_str]
Expand All @@ -52,12 +51,16 @@ def parsing(excel_path: str, bldgType: int, langType: int) -> list:

# 1학 1층 영어
elif bldgType == BLDG1_1ST and langType == 1:
sheet = pd.read_excel(excel_path, sheet_name=0,
xl = pd.read_excel(excel_path, sheet_name=None,
index_col=None, header=None, names=None, engine='openpyxl')

# 맨 뒤에서 2번째 sheet가 이번주 sheet
last_sheet = list(xl.keys())[-1]
sheet = xl[last_sheet]

# 짝수 column만 사용
sheet_keys = sheet.keys()[start_col_idx: end_col_idx]
sheet_keys = sheet_keys[0::2]
# sheet_keys = sheet_keys[0::2]

for (dateType, date_str) in enumerate(sheet_keys):
date_sheet = sheet[date_str]
Expand Down Expand Up @@ -85,18 +88,6 @@ def parsing(excel_path: str, bldgType: int, langType: int) -> list:
bldg, date, kind, menu, special)
parsing_result.append(meal.__dict__)
return parsing_result


if bldgType == 0 & langType == 1: #1학 영어 엑셀
for (dateType, date_str) in enumerate(DATE_1st):
date_sheet = sheet[date_str]
date = parsing_date(time_index, date_sheet)
for kindType in [BREAKFAST, LUNCH, DINNER]:
kind = MEAL_KIND[langType][kindType]
menu, special = parsing_meal[kindType](endpoint, date_sheet, langType, dateType, bldgType)
meal = Meal(bldgType, langType, dateType, kindType,
bldg, date, kind, menu, special)
parsing_result.append(meal.__dict__)

# 2학
elif bldgType == BLDG2_1ST:
Expand Down Expand Up @@ -147,18 +138,17 @@ def parsingTest():
print("-------------------------------------------------")
print("parsing xlsx to json...")

if exists(filepath_bldg1_1_kor) and exists(filepath_bldg1_1_eng):
if exists(filepath_bldg1_1_kor):
parsing_result.extend(parsing(filepath_bldg1_1_kor, BLDG1_1ST, KOR)) #1학 1층, 한글
if exists(filepath_bldg1_1_eng):
parsing_result.extend(parsing(filepath_bldg1_1_eng, BLDG1_1ST, ENG)) #1학 1층, 영어
None
if exists(filepath_bldg1_2_kor) and exists(filepath_bldg1_2_eng):
if exists(filepath_bldg1_2_kor):
parsing_result.extend(parsing(filepath_bldg1_2_kor, BLDG1_2ND, KOR)) #1학 2층, 한글
if exists(filepath_bldg1_2_eng):
parsing_result.extend(parsing(filepath_bldg1_2_eng, BLDG1_2ND, ENG)) #1학 2층, 영어
None
if exists(filepath_bldg2):
parsing_result.extend(parsing(filepath_bldg2, BLDG2_1ST, KOR)) #2학 1층, 한글
parsing_result.extend(parsing(filepath_bldg2, BLDG2_1ST, ENG)) #2학 1층, 영어
None
# parsing_result.extend(parsing(filepath_bldg2, BLDG2_1ST, ENG)) #2학 1층, 영어

print("-------------------------------------------------")

Expand Down
10 changes: 10 additions & 0 deletions util.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

def parsing_date(time_index: int, data_sheet: list):
date = str(data_sheet[time_index])
if '.' in date:
date = date.replace('.', '-')
return date[:DATE_LEN] if len(date) > DATE_LEN else date


Expand All @@ -28,6 +30,11 @@ def parsing_breakfast(endpoint: list, data_sheet: list, langType: int, dateType:
row_range = endpoint[BREAKFAST]
menu = parsing_menu(row_range, data_sheet, langType, bldgType)
special = ""
if bldgType == 0:
if langType == 0:
special = "셀프 즉석라면코너(라면*계란*흰밥*김치*시리얼*우유*토스트*야채샐러드)\n"
else:
special += "self ramen corner(ramen*egg*rice*kimchi* salad*toast*serial)\n"
return menu, special


Expand Down Expand Up @@ -84,6 +91,9 @@ def sanitize_menu(menu: str):
return ""
if type(menu) != str:
return ""
if "---" in menu:
# dummy data in Bldg.2 (2023.11.25)
return ""
return menu.rstrip("0123456789. ")


Expand Down