fix: capture invalid product toast and close failed tabs
This commit is contained in:
+29
-2
@@ -21,6 +21,21 @@ class TaskTableModel(QAbstractTableModel):
|
||||
"skipped": "略过",
|
||||
"cancelled": "已取消",
|
||||
}
|
||||
PRODUCT_UNAVAILABLE_MARKERS = (
|
||||
"商品失效",
|
||||
"please input correct product id",
|
||||
"商品不存在",
|
||||
"商品已删除",
|
||||
"商品已下架",
|
||||
"無效商品",
|
||||
"无效商品",
|
||||
"無權限",
|
||||
"无权限",
|
||||
"product not found",
|
||||
"item not found",
|
||||
"invalid product",
|
||||
"invalid item",
|
||||
)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
@@ -72,8 +87,12 @@ class TaskTableModel(QAbstractTableModel):
|
||||
return self._display_value(task, index.column())
|
||||
if role == Qt.ForegroundRole and index.column() == 3:
|
||||
return self._stage_color(task)
|
||||
if role == Qt.ToolTipRole and self.is_unmatched(task):
|
||||
return "别名未匹配账号,采集时将略过"
|
||||
if role == Qt.ToolTipRole:
|
||||
if self.is_unmatched(task):
|
||||
return "别名未匹配账号,采集时将略过"
|
||||
error = getattr(task, "last_error", "") or ""
|
||||
if error:
|
||||
return str(error)
|
||||
return None
|
||||
|
||||
def flags(self, index):
|
||||
@@ -98,9 +117,17 @@ class TaskTableModel(QAbstractTableModel):
|
||||
return account.account_name
|
||||
return task.account_name or ""
|
||||
|
||||
def _is_product_unavailable(self, task) -> bool:
|
||||
if getattr(task, "status", "") != "failed":
|
||||
return False
|
||||
error = str(getattr(task, "last_error", "") or "").lower()
|
||||
return bool(error) and any(marker.lower() in error for marker in self.PRODUCT_UNAVAILABLE_MARKERS)
|
||||
|
||||
def _stage_text(self, task) -> str:
|
||||
if self.is_unmatched(task):
|
||||
return "略过"
|
||||
if self._is_product_unavailable(task):
|
||||
return "商品失效"
|
||||
if task.status in self.STATUS_TEXT and task.status != "pending":
|
||||
return self.STATUS_TEXT[task.status]
|
||||
return self.STAGE_TEXT.get(task.stage, task.stage)
|
||||
|
||||
Reference in New Issue
Block a user