Skip to content

Commit

Permalink
Add tag detail page (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
MisterPhilip committed Apr 21, 2024
1 parent fb487b4 commit 4508203
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 2 deletions.
82 changes: 82 additions & 0 deletions core/templates/core/tag_detail.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
{% extends 'babybuddy/page.html' %}
{% load i18n %}
{% block title %}
{% if request.resolver_match.url_name == 'tag-update' %}
{% trans "Update a Tag" %}
{% else %}
{% trans "Add a Tag" %}
{% endif %}
{% endblock %}
{% block breadcrumbs %}
<li class="breadcrumb-item">
<a href="{% url 'core:tag-list' %}">{% trans "Tags" %}</a>
</li>
<li class="breadcrumb-item active">{{ object }}</li>
{% endblock %}
{% block content %}
<h1>{{ object }}</h1>
<div class="container">
<div class="row gy-4">
<div class="col-12 col-md-6">
<h3>{% trans "Tagged Measurements" %}</h3>
<div class="list-group">
<a href="{% url 'core:bmi-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "BMI Measurements" %}
<span class="badge bg-dark rounded-pill">{{ tag.bmi__count|default:0 }}</span>
</a>
<a href="{% url 'core:head-circumference-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Head Circumference Measurements" %}
<span class="badge bg-dark rounded-pill">{{ tag.headcircumference__count|default:0 }}</span>
</a>
<a href="{% url 'core:height-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Height Measurements" %}
<span class="badge bg-dark rounded-pill">{{ tag.height__count|default:0 }}</span>
</a>
<a href="{% url 'core:temperature-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Temperature Measurements" %}
<span class="badge bg-dark rounded-pill">{{ tag.temperature__count|default:0 }}</span>
</a>
<a href="{% url 'core:weight-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Weight Measurements" %}
<span class="badge bg-dark rounded-pill">{{ tag.weight__count|default:0 }}</span>
</a>
</div>
</div>
<div class="col-12 col-md-6">
<h3>{% trans "Tagged Activities" %}</h3>
<div class="list-group">
<a href="{% url 'core:diaperchange-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Diaper Changes" %}
<span class="badge bg-dark rounded-pill">{{ tag.diaperchange__count|default:0 }}</span>
</a>
<a href="{% url 'core:feeding-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Feedings" %}
<span class="badge bg-dark rounded-pill">{{ tag.feeding__count|default:0 }}</span>
</a>
<a href="{% url 'core:pumping-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Pumpings" %}
<span class="badge bg-dark rounded-pill">{{ tag.pumping__count|default:0 }}</span>
</a>
<a href="{% url 'core:sleep-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Sleeps" %}
<span class="badge bg-dark rounded-pill">{{ tag.sleep__count|default:0 }}</span>
</a>
<a href="{% url 'core:tummytime-list' %}?tag={{ object.id }}&filtered=1"
class="list-group-item d-flex justify-content-between align-items-center list-group-item-action">
{% trans "Tummy Times" %}
<span class="badge bg-dark rounded-pill">{{ tag.tummytime__count|default:0 }}</span>
</a>
</div>
</div>
</div>
</div>
{% endblock %}
4 changes: 3 additions & 1 deletion core/templates/core/tag_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ <h1>
{% endif %}
</div>
</td>
<td>{{ tag.name }}</td>
<td>
<a href="{% url 'core:tag-detail' tag.slug %}">{{ tag.name }}</a>
</td>
<td class="text-center">
<span class="badge badge-pill"
style="background-color:{{ tag.color }};
Expand Down
3 changes: 3 additions & 0 deletions core/tests/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ def test_tags_views(self):
entry = models.Tag.objects.first()
page = self.c.get("/tags/{}/".format(entry.id))
self.assertEqual(page.status_code, 200)
entry = models.Tag.objects.first()
page = self.c.get("/tags/{}/edit".format(entry.id))
self.assertEqual(page.status_code, 200)
page = self.c.get("/tags/{}/delete/".format(entry.id))
self.assertEqual(page.status_code, 200)

Expand Down
3 changes: 2 additions & 1 deletion core/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@
),
path("tags/", views.TagAdminList.as_view(), name="tag-list"),
path("tags/add/", views.TagAdminAdd.as_view(), name="tag-add"),
path("tags/<str:slug>/", views.TagAdminUpdate.as_view(), name="tag-update"),
path("tags/<str:slug>/", views.TagAdminDetail.as_view(), name="tag-detail"),
path("tags/<str:slug>/edit", views.TagAdminUpdate.as_view(), name="tag-update"),
path("tags/<str:slug>/delete/", views.TagAdminDelete.as_view(), name="tag-delete"),
path("timers/", views.TimerList.as_view(), name="timer-list"),
path("timers/add/", views.TimerAdd.as_view(), name="timer-add"),
Expand Down
21 changes: 21 additions & 0 deletions core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,27 @@ def get_queryset(self):
return qs.annotate(Count("core_tagged_items"))


class TagAdminDetail(PermissionRequiredMixin, DetailView):
model = models.Tag
permission_required = ("core.view_tags",)

def get_queryset(self):
qs = super().get_queryset()
qs = qs.annotate(
Count("feeding"),
Count("diaperchange"),
Count("pumping"),
Count("sleep"),
Count("tummytime"),
Count("bmi"),
Count("headcircumference"),
Count("height"),
Count("temperature"),
Count("weight"),
)
return qs


class TagAdminAdd(CoreAddView):
model = models.Tag
permission_required = ("core.add_tag",)
Expand Down

0 comments on commit 4508203

Please sign in to comment.