Resell1/modules/market_page.py

76 lines
2.9 KiB
Python

# 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