Advertisement
Guest User

Untitled

a guest
Oct 10th, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. def thread_list(request, board_code):
  2.     """Список тредов с последними 3 постами, отсортированный по последнему посту (не точно) """
  3.     op_posts = Post.objects.filter(op=True, board__code=board_code)
  4.  
  5.     #это говно уже знаю как переписать, но это просто количество тредов
  6.     num_threads = len(Post.objects.values("thread_id").annotate(Count("thread_id"))
  7.                       .filter(board__code=board_code).order_by())
  8.     posts = []
  9.     for a in range(num_threads):
  10.         # тут получается в итоге список из оп постов, за которыми следует список из последних трёх постов этого треда
  11.         posts.append(op_posts[a])
  12.         posts.append(Post.objects.filter(op=False, board__code=board_code, thread_id=op_posts[a].thread_id)[:3:-1])
  13.     final = []
  14.     # убирает списки списков, засовывая все посты в один список
  15.     for l in posts:
  16.         if isinstance(l, list):
  17.             for kek in l:
  18.                 final.append(kek)
  19.         else:
  20.             final.append(l)
  21.     #создаю список списков по тредам, то есть внутренний список это оп пост и 3 последних поста в треде
  22.     final_list = [final[x:x + 4] for x in range(0, len(final), 4)]
  23.     f_sorted = []
  24.     allp = Post.objects.filter(board__code='a')
  25.     x = []
  26.     for kek in allp:
  27.         x.append(kek.id)
  28.     last_post = Post.objects.filter(board__code=board_code, id=max(x)).get()
  29.     for kek in final_list:
  30.     #добавляю оп пост и 3 последних поста на первое место, если один из постов последний
  31.         for a in kek:
  32.             if a == last_post:
  33.                 f_sorted.append(kek)
  34.     for kek in final_list:
  35.     #добавляю все остальные, должно же работать?
  36.         if kek not in f_sorted:
  37.             f_sorted.append(kek)
  38.     return render(request, 'board/thread_list.html', {'f_sorted': f_sorted})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement