fix: fix duplicate app lose custom image (#19775)

This commit is contained in:
CorrectRoad
2025-05-20 16:44:51 +08:00
committed by GitHub
parent b2ae46b80f
commit 618981f1ae
5 changed files with 19 additions and 7 deletions

View File

@ -192,6 +192,7 @@ class AppCopyApi(Resource):
parser.add_argument("icon_type", type=str, location="json")
parser.add_argument("icon", type=str, location="json")
parser.add_argument("icon_background", type=str, location="json")
parser.add_argument("icon_url", type=str, location="json")
args = parser.parse_args()
with Session(db.engine) as session:
@ -206,6 +207,7 @@ class AppCopyApi(Resource):
description=args.get("description"),
icon_type=args.get("icon_type"),
icon=args.get("icon"),
icon_url=args.get("icon_url"),
icon_background=args.get("icon_background"),
)
session.commit()

View File

@ -100,6 +100,7 @@ class PendingData(BaseModel):
description: str | None
icon_type: str | None
icon: str | None
icon_url: str | None
icon_background: str | None
app_id: str | None
@ -124,6 +125,7 @@ class AppDslService:
description: Optional[str] = None,
icon_type: Optional[str] = None,
icon: Optional[str] = None,
icon_url: Optional[str] = None,
icon_background: Optional[str] = None,
app_id: Optional[str] = None,
) -> Import:
@ -248,6 +250,7 @@ class AppDslService:
icon_type=icon_type,
icon=icon,
icon_background=icon_background,
icon_url=icon_url,
app_id=app_id,
)
redis_client.setex(
@ -288,6 +291,7 @@ class AppDslService:
description=description,
icon_type=icon_type,
icon=icon,
icon_url=icon_url,
icon_background=icon_background,
dependencies=check_dependencies_pending_data,
)
@ -409,6 +413,7 @@ class AppDslService:
description: Optional[str] = None,
icon_type: Optional[str] = None,
icon: Optional[str] = None,
icon_url: Optional[str] = None,
icon_background: Optional[str] = None,
dependencies: Optional[list[PluginDependency]] = None,
) -> App:
@ -421,12 +426,12 @@ class AppDslService:
# Set icon type
icon_type_value = icon_type or app_data.get("icon_type")
if icon_type_value in ["emoji", "link"]:
if icon_type_value in ["emoji", "link", "image"]:
icon_type = icon_type_value
else:
icon_type = "emoji"
icon = icon or str(app_data.get("icon", ""))
icon_url = icon_url or str(app_data.get("icon_url", ""))
if app:
# Update existing app
app.name = name or app_data.get("name", app.name)
@ -434,6 +439,7 @@ class AppDslService:
app.icon_type = icon_type
app.icon = icon
app.icon_background = icon_background or app_data.get("icon_background", app.icon_background)
app.icon_url = icon_url or app_data.get("icon_url", app.icon_url)
app.updated_by = account.id
else:
if account.current_tenant_id is None: