diff --git a/project/showcase_site/factory.py b/project/showcase_site/factory.py index 121e6dc5963f346599c8c4ba745054775ff3ec80..c58be2aac63d887e312fa3bfe026bda17073b567 100644 --- a/project/showcase_site/factory.py +++ b/project/showcase_site/factory.py @@ -20,7 +20,6 @@ class ArticleFactory(factory.DjangoModelFactory): title = factory.Faker('sentence', locale='fr') content = factory.Faker('text', max_nb_chars=2000, locale='fr') introduction = factory.Faker('text', max_nb_chars=200, locale='fr') - published = factory.Faker('date') pinned = factory.Iterator((True, False, False, False)) diff --git a/project/showcase_site/migrations/0002_auto_20180512_1643.py b/project/showcase_site/migrations/0002_auto_20180512_1643.py new file mode 100644 index 0000000000000000000000000000000000000000..0f59d5fc7fd7f541c5534866979642ade4ee2b01 --- /dev/null +++ b/project/showcase_site/migrations/0002_auto_20180512_1643.py @@ -0,0 +1,24 @@ +# Generated by Django 2.0.5 on 2018-05-12 14:43 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('showcase_site', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='article', + name='published', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='publié le'), + ), + migrations.AlterField( + model_name='partner', + name='start_date', + field=models.DateField(blank=True, help_text='Laisser vide si inconnu. (Cette information est stockée pour historique uniquement.)', null=True, verbose_name='début du partenariat'), + ), + ] diff --git a/project/showcase_site/models.py b/project/showcase_site/models.py index 1db8bdd5c09b38d721081c3ed41d0a39a1739bf1..27827640b8bcd97ed35fc013507d152384a9a3dc 100644 --- a/project/showcase_site/models.py +++ b/project/showcase_site/models.py @@ -1,11 +1,9 @@ """Showcase site models.""" -from datetime import timedelta from django.db import models from django.shortcuts import reverse from django.utils.text import slugify from django.utils.timezone import now -from dry_rest_permissions.generics import authenticated_users from markdownx.models import MarkdownxField @@ -32,24 +30,7 @@ class Category(models.Model): class Article(models.Model): - """Represents a piece of news. - - Fields - ------ - title : str - Title of the news. - slug : str - A brief label identifying the article. - It is generated from the title on creation. - However, it is not used for the article's API URL. - content : str - Full content of the news. - published : date - Date the article was published. Today's date by default. - image : Image - An image to illustrate the article. - pinned : bool - """ + """Represents a piece of news.""" title = models.CharField('titre', max_length=300, help_text="Titre de l'article") @@ -68,7 +49,7 @@ class Article(models.Model): content = MarkdownxField( 'contenu', help_text="Contenu complet de l'article (Markdown est supporté).") - published = models.DateTimeField('publié le', auto_now_add=True) + published = models.DateTimeField('publié le', default=now) modified = models.DateTimeField( 'modifié le', auto_now=True) image = models.ImageField('illustration', blank=True, null=True, @@ -112,12 +93,6 @@ class Article(models.Model): """Return the article's absolute url.""" return reverse('api:article-detail', args=[str(self.slug)]) - @property - def was_modified(self): - """Return whether the article has been modified at least once.""" - return self.modified - self.published > timedelta(seconds=1) - was_modified.fget.short_description = 'Modifié' - # Permissions @staticmethod @@ -265,7 +240,7 @@ class Partner(models.Model): ) ) start_date = models.DateField( - 'début du partenariat', default=now, blank=True, null=True, + 'début du partenariat', blank=True, null=True, help_text=( "Laisser vide si inconnu. " "(Cette information est stockée pour historique uniquement.)" diff --git a/project/showcase_site/serializers.py b/project/showcase_site/serializers.py index dbf2e6f4fbd4d72ab60d110cc9fc93cfd0e60d91..7bfd0ffe38cb9eb0591ef44844c68c8cc8f81a2c 100644 --- a/project/showcase_site/serializers.py +++ b/project/showcase_site/serializers.py @@ -48,11 +48,6 @@ class ArticleSerializer(serializers.HyperlinkedModelSerializer): content = MarkdownField() categories = CategoryField(many=True, required=False) - modified = serializers.SerializerMethodField() - - def get_modified(self, obj: Article): - """Only expose modified if article has already been modified.""" - return obj.was_modified and obj.modified or None class Meta: # noqa model = Article diff --git a/project/tests/test_showcase_site/test_article.py b/project/tests/test_showcase_site/test_article.py index 7be08db1ef8592635ec004fe6e6fa0db7bd0fabc..d77151fd8622a265c31105716d3cf9f6a5d8a595 100644 --- a/project/tests/test_showcase_site/test_article.py +++ b/project/tests/test_showcase_site/test_article.py @@ -84,12 +84,6 @@ class ArticleTest(ModelTestCase): ArticleFactory.create(title='first article') ArticleFactory.create(title='second article') - def test_was_modified(self): - self.assertFalse(self.obj.was_modified) - sleep(1) - self.obj.save() - self.assertTrue(self.obj.was_modified) - class CleanCategoriesTest(TestCase): """Test the clean_categories pre_delete signal on Article.""" diff --git a/project/tests/test_showcase_site/test_article_api.py b/project/tests/test_showcase_site/test_article_api.py index ffcef749fdaeff88001a1f14cda27b9fbad7e008..0f459638ff54496f3065c1d419ff1fa33f20fd4d 100644 --- a/project/tests/test_showcase_site/test_article_api.py +++ b/project/tests/test_showcase_site/test_article_api.py @@ -66,11 +66,3 @@ class TestArticleSerializer(SerializerTestCaseMixin, TestCase): expected = set(self.serializer.data['categories']) actual = set(c.title for c in self.obj.categories.all()) self.assertEqual(actual, expected) - - def test_modified_only_contained_if_was_modified(self): - obj = self.get_object() - self.assertIsNone(self.serializer.data['modified']) - sleep(1) - obj.save() - serializer = self.get_serializer(obj) - self.assertIsNotNone(serializer.data['modified']) diff --git a/project/tests/test_showcase_site/test_partner.py b/project/tests/test_showcase_site/test_partner.py index 1f0cea191efb17b307efb4354c7d80bb4a81b606..1064401ee62100885e04bf406addca7e27542a14 100644 --- a/project/tests/test_showcase_site/test_partner.py +++ b/project/tests/test_showcase_site/test_partner.py @@ -1,7 +1,5 @@ """Partner model tests.""" -from django.utils.timezone import now - from showcase_site.factory import PartnerFactory from showcase_site.models import Partner from tests.utils import ModelTestCase @@ -33,7 +31,6 @@ class PartnerTest(ModelTestCase): }, 'start_date': { 'verbose_name': 'début du partenariat', - 'default': now, } } model_tests = {