label.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import uuid
  2. from Log import logger
  3. from app.models.label_model import LabelModel, LabelWorkerModel
  4. from app.models.role_model import RoleModel
  5. async def label_list_service(db, keyword: str, label_type, object_id):
  6. query = db.query(LabelModel)
  7. if keyword:
  8. query = query.filter(LabelModel.name.like('%{}%'.format(keyword)))
  9. if label_type:
  10. query = query.filter(LabelModel.label_type==label_type)
  11. if object_id:
  12. label_id = [i.label_id for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.object_id==object_id).all()]
  13. query = query.filter(LabelModel.id.in_(label_id))
  14. labels = query.order_by(LabelModel.id.desc()).all()
  15. return {"total": query.count(), "rows": [label.to_json() for label in labels]}
  16. async def create_label_service(db, label_name, label_type, user_id):
  17. try:
  18. label_model = LabelModel(name=label_name,creator=user_id, label_type=label_type)
  19. db.add(label_model)
  20. db.commit()
  21. db.refresh(label_model)
  22. except Exception as e:
  23. logger.error(e)
  24. db.rollback()
  25. return False
  26. return True
  27. async def delete_role_service(db, label_id: int):
  28. try:
  29. db.query(LabelModel).filter(LabelModel.id == label_id).delete()
  30. db.commit()
  31. except Exception as e:
  32. logger.error(e)
  33. db.rollback()
  34. return False
  35. return True
  36. async def sign_label_service(db, object_id, label_list):
  37. delete_list = []
  38. has_list = []
  39. for i in db.query(LabelWorkerModel).filter(LabelWorkerModel.object_id == object_id).all():
  40. if i.label_id not in label_list:
  41. delete_list.append(i.id)
  42. else:
  43. has_list.append(i.label_id)
  44. for label_id in label_list:
  45. if label_id in has_list:
  46. continue
  47. try:
  48. label = LabelWorkerModel(label_id=label_id, object_id=object_id)
  49. db.add(label)
  50. db.commit()
  51. except Exception as e:
  52. logger.error(e)
  53. db.rollback()
  54. # return False
  55. print(delete_list)
  56. for label_id in delete_list:
  57. try:
  58. db.query(LabelWorkerModel).filter_by(id=label_id).delete()
  59. db.commit()
  60. except Exception as e:
  61. logger.error(e)
  62. db.rollback()
  63. return True