Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. class Post(models.Model):
  2. file = models.ImageField(upload_to='images/')
  3. summary = models.TextField(max_length=600)
  4. pub_date = models.DateTimeField(auto_now=True)
  5. user = models.ForeignKey(User, on_delete=models.CASCADE)
  6. likes = models.ManyToManyField(User, through='Like', related_name='likes')
  7.  
  8. def __str__(self):
  9. return self.user.username
  10.  
  11. def pub_date_pretty(self):
  12. return self.pub_date.strftime('%b %e %Y')
  13.  
  14. def summary_pretty(self):
  15. return self.summary[:50]
  16.  
  17. @property
  18. def total_likes(self):
  19. return self.likes.count()
  20.  
  21. class Like(models.Model):
  22. status = models.BooleanField()
  23. post = models.ForeignKey(Post, on_delete=models.CASCADE)
  24. user = models.ForeignKey(User, on_delete=models.CASCADE)
  25.  
  26. def likepost(request, post_id):
  27. if request.method == 'POST':
  28. post = get_object_or_404(Post, pk=post_id)
  29. user = request.user
  30. if post.likes.filter(id=user.id).exists():
  31. tuser = post.likes.filter(id=user.id)
  32. post.likes.remove(user)
  33. if tuser:
  34. return redirect('home', {'tuser': tuser})
  35. else:
  36. return redirect('home')
  37. else:
  38. like = Like()
  39. like.post = post
  40. like.user = user
  41. like.status = False
  42. like.save()
  43. post.likes.add(user)
  44. return redirect('home')
  45.  
  46. {% if tuser %}
  47. <a href="javascript:{document.getElementById('likepost{{ post.id }}').submit()}"><button class="btn btn-primary btn-lg btn-block"><span class="oi oi-caret-top"></span> Unlike {{ post.total_likes }} </button></a>
  48. {% else %}
  49. <a href="javascript:{document.getElementById('likepost{{ post.id }}').submit()}"><button class="btn btn-primary btn-lg btn-block"><span class="oi oi-caret-top"></span> Like {{ post.total_likes }} </button></a>
  50. {% endif %}
  51. <form id="likepost{{ post.id }}" method="POST" action="{% url 'likepost' post.id %}">
  52. {% csrf_token%}
  53. <input type="hidden">
  54. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement