mirror of
https://github.com/AmanTahiliani/PeerNotes.git
synced 2026-08-07 11:55:12 -04:00
Changed Upvote and Downvote Functionality to be unique
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
# Generated by Django 4.2.11 on 2024-04-12 21:47
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("api", "0006_file_points_peeruser_points"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="file",
|
||||||
|
name="points",
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="file",
|
||||||
|
name="downvotes",
|
||||||
|
field=models.ManyToManyField(
|
||||||
|
related_name="downvoted_file", to=settings.AUTH_USER_MODEL
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="file",
|
||||||
|
name="upvotes",
|
||||||
|
field=models.ManyToManyField(
|
||||||
|
related_name="upvoted_file", to=settings.AUTH_USER_MODEL
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -58,7 +58,13 @@ class File(models.Model):
|
|||||||
Course, on_delete=models.SET_NULL, null=True, related_name="files"
|
Course, on_delete=models.SET_NULL, null=True, related_name="files"
|
||||||
)
|
)
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
points = models.IntegerField(default=0, blank=False)
|
upvotes = models.ManyToManyField(PeerUser, related_name="upvoted_file")
|
||||||
|
downvotes = models.ManyToManyField(PeerUser, related_name="downvoted_file")
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def points(self):
|
||||||
|
return self.upvotes.count() - self.downvotes.count()
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.filename
|
return self.filename
|
||||||
|
|||||||
@@ -112,15 +112,18 @@ class UpvoteFile(APIView):
|
|||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
def post(self, request, file_id):
|
def post(self, request, file_id):
|
||||||
|
user = request.user
|
||||||
update_user_ip(request)
|
update_user_ip(request)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
file = File.objects.get(id=file_id)
|
file = File.objects.get(id=file_id)
|
||||||
file.points += 1
|
if file.downvotes.contains(user):
|
||||||
|
file.downvotes.remove(user)
|
||||||
|
file.upvotes.add(user)
|
||||||
file.save()
|
file.save()
|
||||||
return Response(
|
return Response(
|
||||||
{"msg": f"Upvoted {file.filename}", "file_points": file.points},
|
{"msg": f"Upvoted {file.filename}", "file_points": file.points},
|
||||||
status=status.HTTP_200_OK,
|
status=status.HTTP_200_OK,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error: {str(e)}")
|
print(f"Error: {str(e)}")
|
||||||
@@ -135,11 +138,14 @@ class DownvoteFile(APIView):
|
|||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
def post(self, request, file_id):
|
def post(self, request, file_id):
|
||||||
|
user = request.user
|
||||||
update_user_ip(request)
|
update_user_ip(request)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
file = File.objects.get(id=file_id)
|
file = File.objects.get(id=file_id)
|
||||||
file.points -= 1
|
if file.upvotes.contains(user):
|
||||||
|
file.upvotes.remove(user)
|
||||||
|
file.downvotes.add(user)
|
||||||
file.save()
|
file.save()
|
||||||
return Response(
|
return Response(
|
||||||
{"msg": f"Downvoted {file.filename}", "file_points": file.points},
|
{"msg": f"Downvoted {file.filename}", "file_points": file.points},
|
||||||
|
|||||||
Reference in New Issue
Block a user