Resell1/modules/market_page.py

78 lines
3.3 KiB
Python

import flet as ft
import logging
class MarketPage:
def __init__(self, page: ft.Page, logger: logging.Logger, db_manager):
self.page = page
self.logger = logger
self.db_manager = db_manager
self.logger.debug("MarketPage initialized")
self.build_content()
def build_content(self):
self.logger.debug("Building MarketPage content")
self.header = ft.Text("마켓 페이지", style=ft.TextStyle(size=24, weight="bold"), color="black")
# 버튼들: 마켓목록 가져오기, 팔린상품 가져오기, 마켓추가하기
self.load_market_btn = ft.ElevatedButton("마켓목록 가져오기", on_click=self.load_market_list)
self.sold_products_btn = ft.ElevatedButton("팔린상품 가져오기", on_click=self.load_sold_products)
self.add_market_btn = ft.ElevatedButton("마켓추가하기", on_click=self.add_market)
# 마켓 목록 테이블: 각 행에 마켓이름, 마켓 URL, 메모 정보를 표시
self.market_table = ft.DataTable(
columns=[
ft.DataColumn(ft.Text("마켓이름")),
ft.DataColumn(ft.Text("마켓 URL")),
ft.DataColumn(ft.Text("메모")),
],
rows=[],
expand=True,
key="market_table"
)
self.content = ft.Column(
[
ft.Row([self.load_market_btn, self.sold_products_btn, self.add_market_btn], spacing=10),
self.market_table
],
spacing=10,
)
# self.load_market_list(None) # 초기 로드
def load_market_list(self, e):
self.logger.debug("MarketPage.load_market_list() 호출됨")
# DBManager의 get_markets() 메서드를 호출하여 마켓 목록을 가져옵니다.
markets = self.db_manager.get_markets()
self.logger.debug(f"Retrieved markets: {markets}")
rows = []
for m in markets:
row = ft.DataRow(cells=[
ft.DataCell(ft.Text(m.get("market_name", ""))),
ft.DataCell(ft.Text(m.get("market_url", ""))),
ft.DataCell(ft.Text(m.get("market_memo", ""))),
])
rows.append(row)
self.market_table.rows = rows
self.page.update()
def load_sold_products(self, e):
self.logger.debug("MarketPage.load_sold_products() 호출됨")
# 각 마켓을 순회하며 팔린상품 목록을 가져오는 기능을 DBManager에서 구현했다고 가정합니다.
sold_products = self.db_manager.get_sold_products(self.db_manager.get_markets())
self.logger.debug(f"Sold products fetched: {sold_products}")
# 예를 들어, 상품 페이지에 전달하는 콜백을 호출할 수 있습니다.
if hasattr(self, "on_products_fetched_callback") and self.on_products_fetched_callback:
self.on_products_fetched_callback(sold_products)
self.page.update()
def add_market(self, e):
self.logger.debug("MarketPage.add_market() 호출됨")
# 마켓 추가 기능은 아직 미구현이므로 SnackBar 메시지 표시
snack = ft.SnackBar(ft.Text("마켓 추가 기능은 미구현입니다."))
snack.open = True
self.page.open(snack)
self.page.update()
def get_content(self):
return self.content