- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
def comment_absolute_url(request, pid):
"""
This is a function which return paginated absolute URL for comment.
It replaces default comment.get_absolute_url()
"""
comment = Comment.objects.get(id=pid)
pagination_interval = 25 # will be defined by user settings in future
all_comments = Comment.objects.filter(content_type=comment.content_type, object_pk=comment.object_pk,
is_public=True, is_removed=False)
# I will post it to govnokod.ru, okay? ;)
dummy_counter = int(0)
needed_page = int(dummy_counter / pagination_interval) + 1
for dummy_comment in all_comments:
dummy_counter = dummy_counter + 1
if dummy_comment.id == comment.id:
needed_page = int(dummy_counter / pagination_interval) + 1
# making an URL
if comment.content_type.name == "forum post":
item = ForumPost.objects.get(id=comment.object_pk)
url_prefix = "forum/%s/%i" % (item.forum.url, item.id)
elif comment.content_type.name == "new":
item = New.objects.get(id=comment.object_pk)
url_prefix = "news/%i" % item.id
fixed_url = "/%s/?page=%i#%i" % (url_prefix, needed_page, int(pid))
return fixed_url
В Django есть достаточно няшный comments framework. А ещё там есть такой же няшный paginator. А вот вместе их подружить разработчики django почему-то постеснялись, и поэтому comment.get_absolute_url() нихрена не знает о существовании paginator-а. Эта функция призвана помочь безумному автору сослаться на коммент.
Веселье начинается от dummy_counter-а.
Комментарии (0) RSS
Добавить комментарий