From c6e69496cf747f5577915d8ea0055477bfbe0b6f Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Tue, 27 Oct 2020 23:06:25 +0100 Subject: [PATCH] Initial setup --- src/newsreader/accounts/forms.py | 4 +++- .../migrations/0013_user_auto_mark_read.py | 20 +++++++++++++++++++ src/newsreader/accounts/models.py | 9 +++++++++ .../js/pages/homepage/components/PostModal.js | 2 ++ src/newsreader/news/core/views.py | 1 + 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/newsreader/accounts/migrations/0013_user_auto_mark_read.py diff --git a/src/newsreader/accounts/forms.py b/src/newsreader/accounts/forms.py index 7a29f99..6247eff 100644 --- a/src/newsreader/accounts/forms.py +++ b/src/newsreader/accounts/forms.py @@ -1,9 +1,11 @@ from django import forms from newsreader.accounts.models import User +from newsreader.core.forms import CheckboxInput class UserSettingsForm(forms.ModelForm): class Meta: model = User - fields = ("first_name", "last_name") + fields = ("first_name", "last_name", "auto_mark_read") + widgets = {"auto_mark_read": CheckboxInput} diff --git a/src/newsreader/accounts/migrations/0013_user_auto_mark_read.py b/src/newsreader/accounts/migrations/0013_user_auto_mark_read.py new file mode 100644 index 0000000..3d975e0 --- /dev/null +++ b/src/newsreader/accounts/migrations/0013_user_auto_mark_read.py @@ -0,0 +1,20 @@ +# Generated by Django 3.0.7 on 2020-10-27 21:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [("accounts", "0012_remove_user_task")] + + operations = [ + migrations.AddField( + model_name="user", + name="auto_mark_read", + field=models.BooleanField( + default=True, + help_text="Wether posts should be marked as read after x amount of seconds of reading", + verbose_name="Auto read marking", + ), + ) + ] diff --git a/src/newsreader/accounts/models.py b/src/newsreader/accounts/models.py index 2451445..c46dd93 100644 --- a/src/newsreader/accounts/models.py +++ b/src/newsreader/accounts/models.py @@ -45,6 +45,15 @@ class User(AbstractUser): twitter_oauth_token = models.CharField(max_length=255, blank=True, null=True) twitter_oauth_token_secret = models.CharField(max_length=255, blank=True, null=True) + # settings + auto_mark_read = models.BooleanField( + _("Auto read marking"), + default=True, + help_text=_( + "Wether posts should be marked as read after x amount of seconds of reading" + ), + ) + username = None objects = UserManager() diff --git a/src/newsreader/js/pages/homepage/components/PostModal.js b/src/newsreader/js/pages/homepage/components/PostModal.js index 153f2a8..a17afbd 100644 --- a/src/newsreader/js/pages/homepage/components/PostModal.js +++ b/src/newsreader/js/pages/homepage/components/PostModal.js @@ -12,6 +12,7 @@ import { } from '../constants.js'; import { formatDatetime } from '../../../utils.js'; +// TODO add "Mark as read" button class PostModal extends React.Component { modalListener = ::this.modalListener; readTimer = null; @@ -21,6 +22,7 @@ class PostModal extends React.Component { const markPostRead = this.props.markPostRead; const token = Cookies.get('csrftoken'); + // TODO set timer depending on user setting if (!post.read) { this.readTimer = setTimeout(markPostRead, 3000, post, token); } diff --git a/src/newsreader/news/core/views.py b/src/newsreader/news/core/views.py index 18ec95c..c2ff4d5 100644 --- a/src/newsreader/news/core/views.py +++ b/src/newsreader/news/core/views.py @@ -27,6 +27,7 @@ class NewsView(TemplateView): ), "categoriesUrl": reverse_lazy("news:core:category-update", args=(0,)), "timezone": settings.TIME_ZONE, + "autoMarking": self.request.user.auto_mark_read, }, }