diff --git a/data/polls.json b/data/polls.json index d4dcbcd..558b94f 100644 --- a/data/polls.json +++ b/data/polls.json @@ -8,9 +8,6 @@ "end_date": "2023-09-29T20:31:49Z", "short_description": "Cool kids have polls", "long_description": "No description provide for this poll.", - "up_vote_count": 5, - "down_vote_count": 0, - "participant_count": 6, "tags": [] } }, @@ -23,9 +20,6 @@ "end_date": "2023-10-18T23:50:19Z", "short_description": "Cool kids have polls", "long_description": "No description provide for this poll.", - "up_vote_count": 1, - "down_vote_count": 0, - "participant_count": 0, "tags": [] } }, @@ -38,9 +32,6 @@ "end_date": "2023-11-28T19:50:53Z", "short_description": "Cool kids have polls", "long_description": "No description provide for this poll.", - "up_vote_count": 1, - "down_vote_count": 0, - "participant_count": 0, "tags": [] } }, @@ -53,9 +44,6 @@ "end_date": "2023-09-29T17:51:18Z", "short_description": "Cool kids have polls", "long_description": "No description provide for this poll.", - "up_vote_count": 10, - "down_vote_count": 0, - "participant_count": 0, "tags": [] } }, @@ -144,7 +132,7 @@ "model": "polls.vote", "pk": 2, "fields": { - "choice": 2, + "choice": 1, "user": 3, "question": 1 } @@ -153,7 +141,7 @@ "model": "polls.vote", "pk": 3, "fields": { - "choice": 1, + "choice": 2, "user": 2, "question": 1 } @@ -248,6 +236,24 @@ "question": 3 } }, +{ + "model": "polls.vote", + "pk": 14, + "fields": { + "choice": 7, + "user": 3, + "question": 4 + } +}, +{ + "model": "polls.vote", + "pk": 15, + "fields": { + "choice": 2, + "user": 6, + "question": 1 + } +}, { "model": "polls.sentimentvote", "pk": 1, @@ -256,5 +262,104 @@ "question": 1, "vote_types": false } +}, +{ + "model": "polls.sentimentvote", + "pk": 2, + "fields": { + "user": 2, + "question": 2, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 3, + "fields": { + "user": 2, + "question": 4, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 4, + "fields": { + "user": 2, + "question": 3, + "vote_types": false + } +}, +{ + "model": "polls.sentimentvote", + "pk": 5, + "fields": { + "user": 2, + "question": 1, + "vote_types": false + } +}, +{ + "model": "polls.sentimentvote", + "pk": 6, + "fields": { + "user": 6, + "question": 1, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 7, + "fields": { + "user": 6, + "question": 3, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 8, + "fields": { + "user": 6, + "question": 4, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 9, + "fields": { + "user": 3, + "question": 1, + "vote_types": false + } +}, +{ + "model": "polls.sentimentvote", + "pk": 10, + "fields": { + "user": 3, + "question": 3, + "vote_types": true + } +}, +{ + "model": "polls.sentimentvote", + "pk": 11, + "fields": { + "user": 3, + "question": 4, + "vote_types": false + } +}, +{ + "model": "polls.sentimentvote", + "pk": 12, + "fields": { + "user": 3, + "question": 2, + "vote_types": true + } } ] diff --git a/polls/admin.py b/polls/admin.py index 66a4b82..5219f0b 100644 --- a/polls/admin.py +++ b/polls/admin.py @@ -13,11 +13,10 @@ class QuestionAdmin(admin.ModelAdmin): (None, {"fields": ["question_text"]}), ("Published date", {"fields": ["pub_date"], "classes": ["collapse"]}), ("End date", {"fields": ["end_date"], "classes": ["collapse"]}), - ("Sentiment Vote count", {"fields": ["up_vote_count", "down_vote_count"]}), ] list_display = ["question_text", "pub_date", "end_date", "was_published_recently", "can_vote"] inlines = [ChoiceInline] - list_filter = ["pub_date", ] + list_filter = ["pub_date", "end_date"] search_fields = ["question_text"] diff --git a/polls/migrations/0014_remove_question_down_vote_count_and_more.py b/polls/migrations/0014_remove_question_down_vote_count_and_more.py new file mode 100644 index 0000000..7d477b8 --- /dev/null +++ b/polls/migrations/0014_remove_question_down_vote_count_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.4 on 2023-09-14 19:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('polls', '0013_alter_vote_question'), + ] + + operations = [ + migrations.RemoveField( + model_name='question', + name='down_vote_count', + ), + migrations.RemoveField( + model_name='question', + name='participant_count', + ), + migrations.RemoveField( + model_name='question', + name='up_vote_count', + ), + ] diff --git a/polls/models.py b/polls/models.py index 10be79f..70995ff 100644 --- a/polls/models.py +++ b/polls/models.py @@ -12,7 +12,6 @@ Attributes: from django.db import models, IntegrityError from django.utils import timezone from django.contrib import admin -from django.core.validators import MaxValueValidator, MinValueValidator from django.db.models import Sum from django.contrib.auth.models import User @@ -49,10 +48,6 @@ class Question(models.Model): long_description = models.TextField(max_length=2000, default="No description provide for this poll.") tags = models.ManyToManyField(Tag, blank=True) - up_vote_count = models.PositiveIntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(2147483647)]) - down_vote_count = models.PositiveIntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(2147483647)]) - participant_count = models.PositiveIntegerField(default=0, validators=[MinValueValidator(0), MaxValueValidator(2147483647)]) - def was_published_recently(self): """ Checks if the question was published recently or not. @@ -164,7 +159,6 @@ class Question(models.Model): def upvote(self, user): try: self.sentimentvote_set.create(user=user, question=self, vote_types=True) - self.up_vote_count += 1 self.save() except IntegrityError: vote = self.sentimentvote_set.filter(user=user) @@ -175,11 +169,9 @@ class Question(models.Model): return False return True - def downvote(self, user): try: self.sentimentvote_set.create(user=user, question=self, vote_types=False) - self.up_vote_count += 1 self.save() except IntegrityError: vote = self.sentimentvote_set.filter(user=user) @@ -190,6 +182,14 @@ class Question(models.Model): return False return True + @property + def up_vote_count(self): + return self.sentimentvote_set.filter(question=self, vote_types=True).count() + + @property + def down_vote_count(self): + return self.sentimentvote_set.filter(question=self, vote_types=False).count() + class Choice(models.Model): """ diff --git a/polls/templates/polls/results.html b/polls/templates/polls/results.html index fd632a5..b82fc9c 100644 --- a/polls/templates/polls/results.html +++ b/polls/templates/polls/results.html @@ -11,6 +11,16 @@
+
+ {% csrf_token %} + +
+
+ {% csrf_token %} + +