# modules/market_page.py import flet as ft import logging from modules import db_manager 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.market_list = [] self.on_products_fetched_callback = None # 외부에서 설정 (ProductPage 업데이트용) self.build_content() def build_content(self): self.logger.debug("Building MarketPage content") # 버튼들 self.load_market_btn = ft.ElevatedButton("마켓목록 가져오기", on_click=self.load_market_list) self.load_sold_products_btn = ft.ElevatedButton("팔린상품 가져오기", on_click=self.load_sold_products) self.add_market_btn = ft.ElevatedButton("마켓추가하기", on_click=self.add_market) # 마켓 목록 테이블 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.load_sold_products_btn, self.add_market_btn]), self.market_table ], spacing=10, ) self.load_market_list(None) def load_market_list(self, e): self.logger.debug("MarketPage.load_market_list() 호출됨") self.market_list = self.db_manager.get_markets() rows = [] for m in self.market_list: row = ft.DataRow(cells=[ ft.DataCell(ft.Text(m.get("name", ""))), ft.DataCell(ft.Text(m.get("url", ""))), ft.DataCell(ft.Text(m.get("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.market_list) self.logger.debug(f"Sold products fetched: {sold_products}") if self.on_products_fetched_callback: self.on_products_fetched_callback(sold_products) else: self.logger.debug("on_products_fetched_callback 미설정") self.page.update() def add_market(self, e): self.logger.debug("MarketPage.add_market() 호출됨") # 마켓 추가 기능은 미구현 snack = ft.SnackBar(ft.Text("마켓 추가 기능은 미구현입니다.")) snack.open = True self.page.open(snack) self.page.update() def get_content(self): return self.content