zhaoqingang
2025-02-24 f13239560d9a6888d3bf95699ed5fc10395b50ff
app/service/dialog.py
@@ -24,14 +24,15 @@
    else:
        query = query.filter(DialogModel.status != Dialog_STATSU_DELETE)
    id_list = []
    # if label:
    #     id_list = [i.object_id for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.label_id==label).all()]
    if user.permission != "admin":
        dia_list = [j.id for i in user.groups for j in i.dialogs]
        query = query.filter(or_(DialogModel.tenant_id == user_id, DialogModel.id.in_(dia_list)))
    # else:
    if label:
        id_list = [i.object_id for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.label_id == label).all()]
    if user.permission != "admin":
        dia_list = [j.id for i in user.groups for j in i.dialogs if not label or j.id in id_list]
        query = query.filter(or_(DialogModel.tenant_id == user_id, DialogModel.id.in_(dia_list)))
    else:
        if label:
            query = query.filter(or_(DialogModel.id.in_(id_list)))
        query = query.filter(DialogModel.id.in_(id_list))
    if keyword:
        query = query.filter(DialogModel.name.like('%{}%'.format(keyword)))
@@ -96,10 +97,19 @@
async def create_dialog_service(db, dialog_id, dialog_name, description, icon, dialog_type, mode, user_id):
    para = {
        "user_input_form": [],
        "retriever_resource": {
            "enabled": True
        },
        "file_upload": {
            "enabled": False
        }
    }
    try:
        dialog_model = DialogModel(id=dialog_id, name=dialog_name, description=description, icon=icon,
                                   dialog_type=dialog_type, tenant_id=user_id, mode=mode, update_date=datetime.now(),
                                   create_date=datetime.now())
                                   create_date=datetime.now(), parameters=json.dumps(para))
        db.add(dialog_model)
        db.commit()
        db.refresh(dialog_model)
@@ -179,16 +189,14 @@
    if user is None:
        return {"rows": []}
    query = db.query(DialogModel).filter(DialogModel.status != Dialog_STATSU_DELETE)
    id_list = []
    if user.permission != "admin":
        dia_list = [j.id for i in user.groups for j in i.dialogs]
        query = query.filter(or_(DialogModel.tenant_id == user_id, DialogModel.id.in_(dia_list)))
    if label:
        id_list = set(
            [i.object_id for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.label_id.in_(label)).all()])
    if user.permission != "admin":
        dia_list = [j.id for i in user.groups for j in i.dialogs if not label or j.id in id_list]
        query = query.filter(or_(DialogModel.tenant_id == user_id, DialogModel.id.in_(dia_list)))
    else:
        if label:
            query = query.filter(or_(DialogModel.id.in_(id_list)))
        query = query.filter(DialogModel.id.in_(id_list))
    if keyword:
        query = query.filter(DialogModel.name.like('%{}%'.format(keyword)))