feat(generate): filter tasks by product status
This commit is contained in:
@@ -20,6 +20,7 @@ from app import (
|
||||
db,
|
||||
image_paths,
|
||||
image_studio,
|
||||
product_status,
|
||||
prompts,
|
||||
update_check,
|
||||
update_installer,
|
||||
@@ -35,6 +36,7 @@ from PySide6.QtWidgets import (
|
||||
QAbstractItemView,
|
||||
QApplication,
|
||||
QComboBox,
|
||||
QLabel,
|
||||
QLineEdit,
|
||||
QListView,
|
||||
QPlainTextEdit,
|
||||
@@ -3343,6 +3345,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertEqual("打开图片文件夹", tab.open_image_dir_button.text())
|
||||
self.assertEqual("openImageDirButton", tab.open_image_dir_button.objectName())
|
||||
self.assertIn("当前批次文件夹", tab.open_image_dir_button.toolTip())
|
||||
self.assertEqual("generateProductStatusFilter", tab.product_status_filter.objectName())
|
||||
label_texts = [label.text() for label in tab.findChildren(QLabel)]
|
||||
self.assertIn("商品状态", label_texts)
|
||||
self.assertIn("生成状态", label_texts)
|
||||
self.assertEqual(
|
||||
["只生成标题", "只生成封面", "生成标题和封面"],
|
||||
[tab.generate_mode_combo.itemText(index) for index in range(tab.generate_mode_combo.count())],
|
||||
@@ -5439,6 +5445,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
tab._set_generate_running(True)
|
||||
self.assertFalse(tab.reset_generate_button.isEnabled())
|
||||
self.assertFalse(tab.product_status_filter.isEnabled())
|
||||
self.assertFalse(tab.title_template_combo.isEnabled())
|
||||
self.assertFalse(tab.new_title_template_button.isEnabled())
|
||||
self.assertFalse(tab.save_title_template_button.isEnabled())
|
||||
@@ -8089,12 +8096,23 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
db.set_collected(tasks_a[2].id, "旧标题C", "old-c.jpg", path=cfg["db_path"])
|
||||
db.set_generated(tasks_a[2].id, "新标题C", "new-c.jpg", path=cfg["db_path"])
|
||||
db.mark_failed(tasks_b[0].id, "generate", "生成失败", path=cfg["db_path"])
|
||||
db.set_product_status(tasks_a[0].id, "normal", path=cfg["db_path"])
|
||||
db.set_product_status(tasks_a[1].id, "unlisted", path=cfg["db_path"])
|
||||
db.set_product_status(tasks_b[0].id, "unknown", path=cfg["db_path"])
|
||||
|
||||
tab = GenerateTab(config=cfg)
|
||||
self.addCleanup(tab.close)
|
||||
tab.batch_filter.setCurrentIndex(tab.batch_filter.findData(None))
|
||||
|
||||
self.assertEqual("generateItemFilter", tab.item_filter.objectName())
|
||||
self.assertEqual("generateProductStatusFilter", tab.product_status_filter.objectName())
|
||||
self.assertEqual(
|
||||
["全部商品状态", "架上商品", "未上架", "审核中", "状态未知", "待检测"],
|
||||
[
|
||||
tab.product_status_filter.itemText(index)
|
||||
for index in range(tab.product_status_filter.count())
|
||||
],
|
||||
)
|
||||
self.assertEqual(4, tab.model.rowCount())
|
||||
self.assertEqual("主店", tab.model.index(0, 0).data())
|
||||
self.assertEqual("51100639510", tab.model.index(0, 1).data())
|
||||
@@ -8110,6 +8128,35 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertTrue(all(tab.model.index(row, 4).data() == "待生成" for row in range(2)))
|
||||
self.assertEqual("任务 2/4 条", tab.summary_label.text())
|
||||
|
||||
tab.product_status_filter.setCurrentIndex(
|
||||
tab.product_status_filter.findData("normal")
|
||||
)
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
self.assertEqual("51100639510", tab.model.index(0, 1).data())
|
||||
normal_plan = product_status.build_generation_plan(
|
||||
tab._generation_candidates("title"),
|
||||
"title",
|
||||
"normal_only",
|
||||
)
|
||||
self.assertEqual(1, len(normal_plan["execution_tasks"]))
|
||||
tab.product_status_filter.setCurrentIndex(
|
||||
tab.product_status_filter.findData("unlisted")
|
||||
)
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
unlisted_plan = product_status.build_generation_plan(
|
||||
tab._generation_candidates("title"),
|
||||
"title",
|
||||
"normal_only",
|
||||
)
|
||||
self.assertEqual([], unlisted_plan["execution_tasks"])
|
||||
tab.status_filter.setCurrentIndex(tab.status_filter.findData("all"))
|
||||
tab.product_status_filter.setCurrentIndex(
|
||||
tab.product_status_filter.findData("unchecked")
|
||||
)
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
self.assertEqual("51100639512", tab.model.index(0, 1).data())
|
||||
tab.product_status_filter.setCurrentIndex(tab.product_status_filter.findData("all"))
|
||||
|
||||
tab.shop_filter.setCurrentIndex(tab.shop_filter.findData("alias-b"))
|
||||
self.assertEqual(1, tab.model.rowCount())
|
||||
self.assertEqual("副店", tab.model.index(0, 0).data())
|
||||
|
||||
Reference in New Issue
Block a user