def update_post_views(post, request, minutes=10): "Views are updated per user session" ip = html.get_ip(request) now = datetime.now() since = now - timedelta(minutes=minutes) # one view per hour will be counted per each IP address if not PostView.objects.filter(ip=ip, post=post, date__gt=since): # messages.info(request, "created post view for %s" % post.title) PostView.objects.create(ip=ip, post=post, date=now) post.views += 1 Post.objects.filter(id=post.id).update(views=F("views") + 1, rank=html.rank(post)) return post
def update_post_views(post, request, minutes=settings.POST_VIEW_UPDATE): "Views are updated per user session" ip = html.get_ip(request) now = datetime.now() since = now - timedelta(minutes=minutes) # one view per hour will be counted per each IP address if not PostView.objects.filter(ip=ip, post=post, date__gt=since): #messages.info(request, "created post view for %s" % post.title) PostView.objects.create(ip=ip, post=post, date=now) post.views += 1 Post.objects.filter(id=post.id).update(views = F('views') + 1, rank=html.rank(post) ) return post
def reapply_ranks(): "Applies the new ranking system on all posts" total = models.Post.objects.filter(type__in=POST_TOPLEVEL).count() print "*** applying ranks for %s posts " % total posts = models.Post.objects.filter(type__in=POST_TOPLEVEL).order_by("id") # disconnect post related signals to speed up update # signals.pre_save.disconnect( models.verify_post, sender=models.Post ) # signals.post_save.disconnect( models.finalize_post, sender=models.Post) counter = count(1) for index, post in izip(counter, posts): if (index % 250) == 0: perc = 100.0 * index / total print "*** commiting %s, %4.1f%%" % (index, perc) transaction.commit() post.rank = html.rank(post) post.save() transaction.commit()
def reapply_ranks(): "Applies the new ranking system on all posts" total = models.Post.objects.filter(type__in=POST_TOPLEVEL).count() print "*** applying ranks for %s posts " % total posts = models.Post.objects.filter(type__in=POST_TOPLEVEL).order_by('id') # disconnect post related signals to speed up update #signals.pre_save.disconnect( models.verify_post, sender=models.Post ) #signals.post_save.disconnect( models.finalize_post, sender=models.Post) counter = count(1) for index, post in izip(counter, posts): if (index % 250) == 0: perc = 100.0 * index / total print "*** commiting %s, %4.1f%%" % (index, perc) transaction.commit() post.rank = html.rank(post) post.save() transaction.commit()
def set_rank(self): self.rank = html.rank(self)