Skip to content

Commit

Permalink
Merge fe56887 into 7937b23
Browse files Browse the repository at this point in the history
  • Loading branch information
MisterPhilip committed May 20, 2024
2 parents 7937b23 + fe56887 commit 90e3da7
Show file tree
Hide file tree
Showing 9 changed files with 743 additions and 29 deletions.
1 change: 1 addition & 0 deletions babybuddy/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,5 @@ class Meta:
"dashboard_hide_age",
"language",
"timezone",
"pagination_count",
]
633 changes: 633 additions & 0 deletions babybuddy/migrations/0031_alter_settings_timezone.py

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions babybuddy/migrations/0032_settings_pagination_count.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 5.0.6 on 2024-05-13 02:50

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("babybuddy", "0031_alter_settings_timezone"),
]

operations = [
migrations.AddField(
model_name="settings",
name="pagination_count",
field=models.PositiveIntegerField(
choices=[
(10, "10 Per Page"),
(25, "25 Per Page"),
(50, "50 Per Page"),
(100, "100 Per Page"),
],
default=25,
verbose_name="Items Per Page",
),
),
]
12 changes: 12 additions & 0 deletions babybuddy/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,18 @@ class Settings(models.Model):
max_length=100,
verbose_name=_("Timezone"),
)
pagination_count = models.PositiveIntegerField(
choices=[
(10, _("%(count)d Per Page") % {"count": 10}),
(25, _("%(count)d Per Page") % {"count": 25}),
(50, _("%(count)d Per Page") % {"count": 50}),
(100, _("%(count)d Per Page") % {"count": 100}),
(250, _("%(count)d Per Page") % {"count": 250}),
(0, _("Show All")),
],
default=25,
verbose_name=_("Items Per Page"),
)

def __str__(self):
return str(format_lazy(_("{user}'s Settings"), user=self.user))
Expand Down
5 changes: 5 additions & 0 deletions babybuddy/templates/babybuddy/user_settings_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ <h1>{% trans "User Settings" %}</h1>
{% include 'babybuddy/form_field.html' %}
{% endwith %}
</div>
<div class="form-group row">
{% with form_settings.pagination_count as field %}
{% include 'babybuddy/form_field.html' %}
{% endwith %}
</div>
</fieldset>
<fieldset>
<legend>{% trans "Dashboard" %}</legend>
Expand Down
12 changes: 12 additions & 0 deletions babybuddy/tests/tests_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def setUpClass(cls):
"language": "en-US",
"timezone": "UTC",
"next": "/user/settings/",
"pagination_count": 25,
}

def test_change_password(self):
Expand Down Expand Up @@ -259,6 +260,17 @@ def test_user_settings_dashboard_refresh_rate(self):
self.user.settings.dashboard_refresh_rate, datetime.timedelta(seconds=300)
)

def test_user_settings_pagination_count(self):
self.c.login(**self.credentials)

params = self.settings_template.copy()
params["pagination_count"] = 25

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.pagination_count, 25)

def test_user_settings_dashboard_hide_age(self):
self.c.login(**self.credentials)

Expand Down
5 changes: 5 additions & 0 deletions babybuddy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ def get_context_data(self, **kwargs):
return context


class BabyBuddyPaginatedView(View):
def get_paginate_by(self, queryset):
return self.request.user.settings.pagination_count


@method_decorator(csrf_protect, name="dispatch")
@method_decorator(never_cache, name="dispatch")
@method_decorator(require_POST, name="dispatch")
Expand Down
23 changes: 23 additions & 0 deletions core/migrations/0034_alter_tag_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.0.6 on 2024-05-13 02:38

import django.db.models.functions.text
from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("core", "0033_heightpercentile_and_more"),
]

operations = [
migrations.AlterModelOptions(
name="tag",
options={
"default_permissions": ("view", "add", "change", "delete"),
"ordering": [django.db.models.functions.text.Lower("name")],
"verbose_name": "Tag",
"verbose_name_plural": "Tags",
},
),
]
54 changes: 25 additions & 29 deletions core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormView

from babybuddy.mixins import LoginRequiredMixin, PermissionRequiredMixin
from babybuddy.views import BabyBuddyFilterView
from babybuddy.views import BabyBuddyFilterView, BabyBuddyPaginatedView
from core import filters, forms, models, timeline


Expand Down Expand Up @@ -73,11 +73,10 @@ def get_success_message(self, cleaned_data):
}


class BMIList(PermissionRequiredMixin, BabyBuddyFilterView):
class BMIList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.BMI
template_name = "core/bmi_list.html"
permission_required = ("core.view_bmi",)
paginate_by = 10
filterset_class = filters.BMIFilter


Expand All @@ -101,11 +100,10 @@ class BMIDelete(CoreDeleteView):
success_url = reverse_lazy("core:bmi-list")


class ChildList(PermissionRequiredMixin, BabyBuddyFilterView):
class ChildList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Child
template_name = "core/child_list.html"
permission_required = ("core.view_child",)
paginate_by = 10
filterset_fields = ("first_name", "last_name")


Expand Down Expand Up @@ -151,11 +149,12 @@ def get_success_message(self, cleaned_data):
return success_message % cleaned_data


class DiaperChangeList(PermissionRequiredMixin, BabyBuddyFilterView):
class DiaperChangeList(
PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView
):
model = models.DiaperChange
template_name = "core/diaperchange_list.html"
permission_required = ("core.view_diaperchange",)
paginate_by = 10
filterset_class = filters.DiaperChangeFilter


Expand All @@ -179,11 +178,10 @@ class DiaperChangeDelete(CoreDeleteView):
success_url = reverse_lazy("core:diaperchange-list")


class FeedingList(PermissionRequiredMixin, BabyBuddyFilterView):
class FeedingList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Feeding
template_name = "core/feeding_list.html"
permission_required = ("core.view_feeding",)
paginate_by = 10
filterset_class = filters.FeedingFilter


Expand Down Expand Up @@ -214,11 +212,12 @@ class FeedingDelete(CoreDeleteView):
success_url = reverse_lazy("core:feeding-list")


class HeadCircumferenceList(PermissionRequiredMixin, BabyBuddyFilterView):
class HeadCircumferenceList(
PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView
):
model = models.HeadCircumference
template_name = "core/head_circumference_list.html"
permission_required = ("core.view_head_circumference",)
paginate_by = 10
filterset_class = filters.HeadCircumferenceFilter


Expand All @@ -245,11 +244,10 @@ class HeadCircumferenceDelete(CoreDeleteView):
success_url = reverse_lazy("core:head-circumference-list")


class HeightList(PermissionRequiredMixin, BabyBuddyFilterView):
class HeightList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Height
template_name = "core/height_list.html"
permission_required = ("core.view_height",)
paginate_by = 10
filterset_class = filters.HeightFilter


Expand All @@ -273,11 +271,10 @@ class HeightDelete(CoreDeleteView):
success_url = reverse_lazy("core:height-list")


class NoteList(PermissionRequiredMixin, BabyBuddyFilterView):
class NoteList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Note
template_name = "core/note_list.html"
permission_required = ("core.view_note",)
paginate_by = 10
filterset_class = filters.NoteFilter


Expand All @@ -301,11 +298,10 @@ class NoteDelete(CoreDeleteView):
success_url = reverse_lazy("core:note-list")


class PumpingList(PermissionRequiredMixin, BabyBuddyFilterView):
class PumpingList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Pumping
template_name = "core/pumping_list.html"
permission_required = ("core.view_pumping",)
paginate_by = 10
filterset_class = filters.PumpingFilter


Expand All @@ -331,11 +327,10 @@ class PumpingDelete(CoreDeleteView):
success_url = reverse_lazy("core:pumping-list")


class SleepList(PermissionRequiredMixin, BabyBuddyFilterView):
class SleepList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Sleep
template_name = "core/sleep_list.html"
permission_required = ("core.view_sleep",)
paginate_by = 10
filterset_class = filters.SleepFilter


Expand All @@ -359,11 +354,12 @@ class SleepDelete(CoreDeleteView):
success_url = reverse_lazy("core:sleep-list")


class TagAdminList(PermissionRequiredMixin, BabyBuddyFilterView):
class TagAdminList(
PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView
):
model = models.Tag
template_name = "core/tag_list.html"
permission_required = ("core.view_tags",)
paginate_by = 10
filterset_class = filters.TagFilter

def get_queryset(self):
Expand Down Expand Up @@ -420,11 +416,12 @@ def get_queryset(self):
return qs.annotate(Count("core_tagged_items"))


class TemperatureList(PermissionRequiredMixin, BabyBuddyFilterView):
class TemperatureList(
PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView
):
model = models.Temperature
template_name = "core/temperature_list.html"
permission_required = ("core.view_temperature",)
paginate_by = 10
filterset_class = filters.TemperatureFilter


Expand Down Expand Up @@ -469,11 +466,10 @@ def get_context_data(self, **kwargs):
return context


class TimerList(PermissionRequiredMixin, BabyBuddyFilterView):
class TimerList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Timer
template_name = "core/timer_list.html"
permission_required = ("core.view_timer",)
paginate_by = 10
filterset_fields = ("user",)


Expand Down Expand Up @@ -553,11 +549,12 @@ class TimerDelete(CoreDeleteView):
success_url = reverse_lazy("core:timer-list")


class TummyTimeList(PermissionRequiredMixin, BabyBuddyFilterView):
class TummyTimeList(
PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView
):
model = models.TummyTime
template_name = "core/tummytime_list.html"
permission_required = ("core.view_tummytime",)
paginate_by = 10
filterset_class = filters.TummyTimeFilter


Expand All @@ -581,11 +578,10 @@ class TummyTimeDelete(CoreDeleteView):
success_url = reverse_lazy("core:tummytime-list")


class WeightList(PermissionRequiredMixin, BabyBuddyFilterView):
class WeightList(PermissionRequiredMixin, BabyBuddyPaginatedView, BabyBuddyFilterView):
model = models.Weight
template_name = "core/weight_list.html"
permission_required = ("core.view_weight",)
paginate_by = 10
filterset_class = filters.WeightFilter


Expand Down

0 comments on commit 90e3da7

Please sign in to comment.