diff --git a/apps/rp/factories.py b/apps/rp/factories.py new file mode 100644 index 0000000000000000000000000000000000000000..ece7e383a6e24aefa7b7cc35f8accd3ea61292c7 --- /dev/null +++ b/apps/rp/factories.py @@ -0,0 +1,12 @@ +import factory + +from .models import Article + + +class ArticleFactory(factory.django.DjangoModelFactory): + class Meta: + model = Article + url = factory.Faker("url") + lang = "en" + title = factory.Faker("sentence", nb_words=4) + extracts = factory.Faker("text") diff --git a/apps/rp/migrations/0004_auto_20170422_1906.py b/apps/rp/migrations/0004_auto_20170422_1906.py new file mode 100644 index 0000000000000000000000000000000000000000..03e14ea066c8ca60bb74532aba2b0fc87367ef70 --- /dev/null +++ b/apps/rp/migrations/0004_auto_20170422_1906.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2017-04-22 19:06 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rp', '0003_auto_20170422_1432'), + ] + + operations = [ + migrations.RemoveField( + model_name='undvotes', + name='user', + ), + migrations.AddField( + model_name='undvotes', + name='username', + field=models.CharField(default='', max_length=255), + preserve_default=False, + ), + ] diff --git a/apps/rp/models/article.py b/apps/rp/models/article.py index 3c3c6e4887d20916910525d98eb3361e74406492..cbe931ab76a0e50d36510dfe09d0d868a1bcd39b 100644 --- a/apps/rp/models/article.py +++ b/apps/rp/models/article.py @@ -20,6 +20,8 @@ class Article(UnDVotedMixin): tags = TaggableManager() + # TODO: adds links to user + class Meta: verbose_name = _("Article") verbose_name_plural = _("Articles") diff --git a/apps/rp/models/vote.py b/apps/rp/models/vote.py index 540bf44ef386266d3704e0987d99ef6ccbb7ec37..5e2e83ea21c9732928e5931ceff0bdc8f872d9e1 100644 --- a/apps/rp/models/vote.py +++ b/apps/rp/models/vote.py @@ -3,7 +3,6 @@ from django.db.models import Sum, F from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.fields import GenericRelation from django.contrib.contenttypes.models import ContentType -from django.contrib.auth.models import User from django.utils.translation import ugettext_lazy as _ @@ -11,13 +10,12 @@ class UnDVotes(models.Model): """ Up and down vote model """ - user = models.ForeignKey( - User, - on_delete=models.CASCADE, - ) - #: Upvote, True for upvote, false for downvote - score = models.IntegerField(default=True) + #: username + username = models.CharField(max_length=255, null=False) + + #: Score of the vote + score = models.IntegerField(default=1) # Django generic relation content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) object_id = models.PositiveIntegerField() @@ -44,11 +42,11 @@ class UnDVotedMixin(models.Model): class Meta: abstract = True - def upvote(self, user): + def upvote(self, username): diff_score = 0 try: # Already voted content - vote = self.und_votes.get(user=user) + vote = self.und_votes.get(username=username) if vote.score == 1: # Cancel previous upvote vote.delete() @@ -59,18 +57,18 @@ class UnDVotedMixin(models.Model): vote.save() diff_score = 2 except: - vote = UnDVotes(content_object=self, user=user, score=1) + vote = UnDVotes(content_object=self, username=username, score=1) vote.save() diff_score = 1 self.__class__.objects.filter(id=self.id).update( und_score=F("und_score") + diff_score) - def downvote(self, user): + def downvote(self, username): diff_score = 0 try: # Already voted content - vote = self.und_votes.get(user=user) + vote = self.und_votes.get(username=username) if vote.score == -1: # Cancel previous downvote vote.delete() @@ -81,7 +79,7 @@ class UnDVotedMixin(models.Model): vote.save() diff_score = -2 except: - vote = UnDVotes(content_object=self, user=user, score=-1) + vote = UnDVotes(content_object=self, username=username, score=-1) vote.save() diff_score = -1 diff --git a/apps/rp/tests.py b/apps/rp/tests.py deleted file mode 100644 index 7ce503c2dd97ba78597f6ff6e4393132753573f6..0000000000000000000000000000000000000000 --- a/apps/rp/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/rp/tests/__init__.py b/apps/rp/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391