page_utils.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:虎
  5. @file: page_utils.py
  6. @date:2024/11/21 10:32
  7. @desc:
  8. """
  9. from math import ceil
  10. def page(query_set, page_size, handler, is_the_task_interrupted=lambda: False):
  11. """
  12. @param query_set: 查询query_set
  13. @param page_size: 每次查询大小
  14. @param handler: 数据处理器
  15. @param is_the_task_interrupted: 任务是否被中断
  16. @return:
  17. """
  18. query = query_set.order_by("id")
  19. count = query_set.count()
  20. for i in range(0, ceil(count / page_size)):
  21. if is_the_task_interrupted():
  22. return
  23. offset = i * page_size
  24. paragraph_list = query.all()[offset: offset + page_size]
  25. handler(paragraph_list)
  26. def page_desc(query_set, page_size, handler, is_the_task_interrupted=lambda: False):
  27. """
  28. @param query_set: 查询query_set
  29. @param page_size: 每次查询大小
  30. @param handler: 数据处理器
  31. @param is_the_task_interrupted: 任务是否被中断
  32. @return:
  33. """
  34. query = query_set.order_by("id")
  35. count = query_set.count()
  36. for i in sorted(range(0, ceil(count / page_size)), reverse=True):
  37. if is_the_task_interrupted():
  38. return
  39. offset = i * page_size
  40. paragraph_list = query.all()[offset: offset + page_size]
  41. handler(paragraph_list)