diff --git a/babybuddy/admin.py b/babybuddy/admin.py index 0eb69815..285017cb 100644 --- a/babybuddy/admin.py +++ b/babybuddy/admin.py @@ -14,7 +14,7 @@ class SettingsInline(admin.StackedInline): can_delete = False fieldsets = ( (_('Dashboard'), { - 'fields': ('dashboard_refresh_rate',) + 'fields': ('dashboard_refresh_rate', 'dashboard_hide_empty',) }), ) diff --git a/babybuddy/forms.py b/babybuddy/forms.py index 4f0a7fbd..3bb49dfe 100644 --- a/babybuddy/forms.py +++ b/babybuddy/forms.py @@ -41,4 +41,9 @@ class UserPasswordForm(PasswordChangeForm): class UserSettingsForm(forms.ModelForm): class Meta: model = Settings - fields = ['dashboard_refresh_rate', 'language', 'timezone'] + fields = [ + 'dashboard_refresh_rate', + 'dashboard_hide_empty', + 'language', + 'timezone' + ] diff --git a/babybuddy/migrations/0014_settings_hide_empty.py b/babybuddy/migrations/0014_settings_hide_empty.py new file mode 100644 index 00000000..7afe1c76 --- /dev/null +++ b/babybuddy/migrations/0014_settings_hide_empty.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.5 on 2021-01-19 23:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('babybuddy', '0013_auto_20210411_1241'), + ] + + operations = [ + migrations.AddField( + model_name='settings', + name='dashboard_hide_empty', + field=models.BooleanField(default=False, verbose_name='Hide Empty Dashboard Cards'), + ), + ] diff --git a/babybuddy/models.py b/babybuddy/models.py index d42f1b3e..90b708f3 100644 --- a/babybuddy/models.py +++ b/babybuddy/models.py @@ -34,6 +34,11 @@ class Settings(models.Model): (timezone.timedelta(minutes=15), _('15 min.')), (timezone.timedelta(minutes=30), _('30 min.')), ]) + dashboard_hide_empty = models.BooleanField( + verbose_name=_('Hide Empty Dashboard Cards'), + default=False, + editable=True + ) language = models.CharField( choices=settings.LANGUAGES, default=settings.LANGUAGE_CODE, diff --git a/babybuddy/templates/babybuddy/user_settings_form.html b/babybuddy/templates/babybuddy/user_settings_form.html index 9eaf4888..77f188db 100644 --- a/babybuddy/templates/babybuddy/user_settings_form.html +++ b/babybuddy/templates/babybuddy/user_settings_form.html @@ -64,6 +64,11 @@ {% include 'babybuddy/form_field.html' %} {% endwith %} +
+ {% with form_settings.dashboard_hide_empty as field %} + {% include 'babybuddy/form_field.html' %} + {% endwith %} +
{% trans "API" %} diff --git a/babybuddy/tests/tests_forms.py b/babybuddy/tests/tests_forms.py index 71af390c..2a99e76f 100644 --- a/babybuddy/tests/tests_forms.py +++ b/babybuddy/tests/tests_forms.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +import datetime + from django.contrib.auth.models import User from django.core.management import call_command from django.test import Client as HttpClient, override_settings, TestCase @@ -132,3 +134,26 @@ class FormsTestCase(TestCase): self.assertEqual(page.status_code, 200) self.assertEqual(timezone.get_current_timezone_name(), params['timezone']) + + def test_user_settings_dashboard_hide_empty_on(self): + self.c.login(**self.credentials) + + params = self.settings_template.copy() + params['dashboard_hide_empty'] = 'on' + + page = self.c.post('/user/settings/', data=params, follow=True) + self.assertEqual(page.status_code, 200) + self.user.refresh_from_db() + self.assertTrue(self.user.settings.dashboard_hide_empty) + + def test_user_settings_dashboard_refresh_rate(self): + self.c.login(**self.credentials) + + params = self.settings_template.copy() + params['dashboard_refresh_rate'] = '0:05:00' + + page = self.c.post('/user/settings/', data=params, follow=True) + self.assertEqual(page.status_code, 200) + self.user.refresh_from_db() + self.assertEqual(self.user.settings.dashboard_refresh_rate, + datetime.timedelta(seconds=300)) diff --git a/dashboard/templates/cards/base.html b/dashboard/templates/cards/base.html index 40bb0648..8aac9ad7 100644 --- a/dashboard/templates/cards/base.html +++ b/dashboard/templates/cards/base.html @@ -1,11 +1,13 @@ -
-
- - {% block header %}{% endblock %} +{% if not empty or not hide_empty %} +
+
+ + {% block header %}{% endblock %} +
+
+ {% block title %}{% endblock %} +
{% block content %}{% endblock %}
+
+ {% block listgroup %}{% endblock %}
-
- {% block title %}{% endblock %} -
{% block content %}{% endblock %}
-
- {% block listgroup %}{% endblock %} -
\ No newline at end of file +{% endif %} diff --git a/dashboard/templates/cards/statistics.html b/dashboard/templates/cards/statistics.html index 3a6c1abd..3485a515 100644 --- a/dashboard/templates/cards/statistics.html +++ b/dashboard/templates/cards/statistics.html @@ -1,40 +1,46 @@ {% load duration i18n %} -
-
- - {% trans "Statistics" %} -
-
-