diff --git a/blogproject/blogapp/admin.py b/blogproject/blogapp/admin.py index c0b4291..57101fb 100644 --- a/blogproject/blogapp/admin.py +++ b/blogproject/blogapp/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Post, Comment, Category +from .models import Post, Comment, Category,PostLiked class PostAdmin(admin.ModelAdmin): list_display = ['title', 'get_full_name', 'post_date', 'category', 'nr_comments', 'likes', 'visible'] @@ -20,6 +20,13 @@ class CommentAdmin(admin.ModelAdmin): list_display = ['author', 'post', 'comment_date', 'visible'] search_fields = ['author', 'post__title'] + +@admin.register(PostLiked) +class PostLikedAdmin(admin.ModelAdmin): + list_display = ['name', 'post_id', ] + search_fields = ['name', 'post_id'] + + @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): list_display = ['name', 'get_nr_posts', 'nr_comments', 'nr_likes'] diff --git a/blogproject/blogapp/models.py b/blogproject/blogapp/models.py index b803de5..8745c60 100644 --- a/blogproject/blogapp/models.py +++ b/blogproject/blogapp/models.py @@ -24,6 +24,12 @@ def __str__(self): def get_absolute_url(self): return reverse('blog:PostDetailView', args=[self.pk]) + +class PostLiked(models.Model): + name = models.ForeignKey(User, on_delete=models.CASCADE) + post_id = models.CharField(max_length=(5),blank=True) + + class Comment(models.Model): body = models.TextField() author = models.CharField(max_length=128) diff --git a/blogproject/blogapp/views.py b/blogproject/blogapp/views.py index f39a965..30ca49f 100644 --- a/blogproject/blogapp/views.py +++ b/blogproject/blogapp/views.py @@ -5,7 +5,7 @@ from django.views.generic import ListView from django.views.generic import CreateView, UpdateView from django.contrib import messages -from .models import Post, Comment, Category +from .models import Post, Comment, Category,PostLiked from django.contrib.auth import authenticate, login, logout def MainView(request): @@ -36,11 +36,18 @@ def PostDetailView(request, pk): return redirect('compapp:NoAccess') def LikePost(request, pk): + user = request.user post = Post.objects.get(pk=pk) - post.likes = post.likes + 1 - post.save() - messages.info(request, 'I\'m glad you liked the article. Thank you for reading!') - return redirect('blog:PostDetailView', pk) + postlike = PostLiked.objects.filter(name=user,post_id=pk).exists() + if postlike: + return redirect('blog:PostDetailView', pk) + else: + likeduser = PostLiked.objects.create(name=user,post_id=pk) + likeduser.save() + post.likes = post.likes + 1 + post.save() + messages.info(request, 'I\'m glad you liked the article. Thank you for reading!') + return redirect('blog:PostDetailView', pk) @method_decorator(login_required(), 'dispatch') class PostCreateView(CreateView):