Skip to content

Commit e736d2c

Browse files
committed
Refactor AffectedURLsListView into pattern-specific views
1 parent 7a279fc commit e736d2c

File tree

2 files changed

+27
-27
lines changed

2 files changed

+27
-27
lines changed

sde_collections/urls.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,22 +45,22 @@
4545
),
4646
path(
4747
"exclude-pattern/<int:id>/",
48-
view=views.AffectedURLsListView.as_view(),
48+
view=views.ExcludePatternAffectedURLsListView.as_view(),
4949
name="affected_urls",
5050
),
5151
path(
5252
"include-pattern/<int:id>/",
53-
view=views.AffectedURLsListView.as_view(),
53+
view=views.IncludePatternAffectedURLsListView.as_view(),
5454
name="affected_urls",
5555
),
5656
path(
5757
"title-pattern/<int:id>/",
58-
view=views.AffectedURLsListView.as_view(),
58+
view=views.TitlePatternAffectedURLsListView.as_view(),
5959
name="affected_urls",
6060
),
6161
path(
6262
"document-type-pattern/<int:id>/",
63-
view=views.AffectedURLsListView.as_view(),
63+
view=views.DocumentTypePatternAffectedURLsListView.as_view(),
6464
name="affected_urls",
6565
),
6666
path(

sde_collections/views.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -227,44 +227,44 @@ def get_context_data(self, **kwargs):
227227

228228
return context
229229

230-
class AffectedURLsListView(LoginRequiredMixin, ListView):
230+
class BaseAffectedURLsListView(LoginRequiredMixin, ListView):
231231
"""
232-
Display a list of URLs affected by a match pattern
232+
Base view for displaying a list of URLs affected by a match pattern
233233
"""
234-
235234
model = CandidateURL
236235
template_name = "sde_collections/affected_urls.html"
237236
context_object_name = "affected_urls"
237+
pattern_model = None
238+
pattern_type = None
238239

239240
def get_queryset(self):
240-
241-
if 'exclude-pattern' in self.request.path:
242-
self.pattern = ExcludePattern.objects.get(id=self.kwargs["id"])
243-
self.pattern_type = "Exclude"
244-
elif 'include-pattern' in self.request.path:
245-
self.pattern = IncludePattern.objects.get(id=self.kwargs["id"])
246-
self.pattern_type = "Include"
247-
elif 'title-pattern' in self.request.path:
248-
self.pattern = TitlePattern.objects.get(id=self.kwargs["id"])
249-
self.pattern_type = "Title"
250-
elif 'document-type-pattern' in self.request.path:
251-
self.pattern = DocumentTypePattern.objects.get(id=self.kwargs["id"])
252-
self.pattern_type = "Document Type"
253-
else:
254-
return super().get_queryset()
255-
256-
queryset = self.pattern.matched_urls()
257-
return queryset
241+
self.pattern = self.pattern_model.objects.get(id=self.kwargs["id"])
242+
return self.pattern.matched_urls()
258243

259244
def get_context_data(self, **kwargs):
260245
context = super().get_context_data(**kwargs)
261246
context["pattern"] = self.pattern
262-
context["url_count"] = self.pattern.matched_urls().count()
247+
context["url_count"] = self.get_queryset().count()
263248
context["collection"] = self.pattern.collection
264249
context["pattern_type"] = self.pattern_type
265-
266250
return context
267251

252+
class ExcludePatternAffectedURLsListView(BaseAffectedURLsListView):
253+
pattern_model = ExcludePattern
254+
pattern_type = "Exclude"
255+
256+
class IncludePatternAffectedURLsListView(BaseAffectedURLsListView):
257+
pattern_model = IncludePattern
258+
pattern_type = "Include"
259+
260+
class TitlePatternAffectedURLsListView(BaseAffectedURLsListView):
261+
pattern_model = TitlePattern
262+
pattern_type = "Title"
263+
264+
class DocumentTypePatternAffectedURLsListView(BaseAffectedURLsListView):
265+
pattern_model = DocumentTypePattern
266+
pattern_type = "Document Type"
267+
268268
class SdeDashboardView(LoginRequiredMixin, ListView):
269269
model = Collection
270270
template_name = "sde_collections/sde_dashboard.html"

0 commit comments

Comments
 (0)