Skip to content

Commit 5cb85e2

Browse files
committed
refactor(views): DistrictView inherits from DetailView
using DetailView for the DistrictView class simplifies the code and improves readability in the districts/district.html template.
1 parent 62e5262 commit 5cb85e2

File tree

3 files changed

+14
-26
lines changed

3 files changed

+14
-26
lines changed

pems/districts/templates/districts/district.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{% extends "districts/index.html" %}
22

33
{% block headline %}
4-
District {{ district_number }} - {{ district.name }}
4+
District {{ district.number }} - {{ district.name }}
55
{% endblock headline %}
66

77
{% block districts-content %}

pems/districts/views.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.views.generic import TemplateView
1+
from django.views.generic import TemplateView, DetailView
22

33
from .models import District
44

@@ -17,12 +17,10 @@ class IndexView(DistrictContextMixin, TemplateView):
1717
template_name = "districts/index.html"
1818

1919

20-
class DistrictView(DistrictContextMixin, TemplateView):
20+
class DistrictView(DistrictContextMixin, DetailView):
21+
model = District
22+
context_object_name = "district"
2123
template_name = "districts/district.html"
2224

23-
def get_context_data(self, **kwargs):
24-
context = super().get_context_data(**kwargs)
25-
district_number = self.kwargs.get("district")
26-
context["district_number"] = district_number
27-
context["district"] = context.get("districts").get("all").get(number=district_number)
28-
return context
25+
def get_object(self):
26+
return District.objects.get(number__iexact=self.kwargs["district"])
Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22

3+
from django.urls import reverse
34
from pems.districts import views
45
from pems.districts.models import District
56

@@ -23,21 +24,10 @@ def test_template_name(self, view):
2324
assert view.template_name == "districts/index.html"
2425

2526

26-
class TestDistrictView:
27-
@pytest.fixture
28-
def view(app_request):
29-
v = views.DistrictView()
30-
v.setup(app_request, district=1)
31-
32-
return v
27+
@pytest.mark.django_db
28+
def test_district_view(client, model_District):
29+
url = reverse("districts:district", kwargs={"district": 1})
30+
response = client.get(url)
3331

34-
@pytest.mark.django_db
35-
@pytest.mark.usefixtures("model_District")
36-
def test_get_context_data(self, view):
37-
38-
context = view.get_context_data()
39-
40-
assert context["district_number"] == 1
41-
42-
def test_template_name(self, view):
43-
assert view.template_name == "districts/district.html"
32+
assert response.status_code == 200
33+
assert response.context["district"] == model_District

0 commit comments

Comments
 (0)