55from django .urls import reverse
66from django .views .generic import RedirectView , TemplateView , View
77
8- from cbv .models import Klass , Module , ProjectVersion
8+ from cbv .models import DjangoURLService , Klass , Module , ProjectVersion
99from cbv .queries import NavBuilder
1010
1111
@@ -46,9 +46,17 @@ def get_context_data(self, **kwargs):
4646 latest_version = Klass .objects .select_related (
4747 "module__project_version"
4848 ).get_latest_version (module_name = klass .module .name , class_name = klass .name )
49-
50- canonical_url_path = latest_version .get_absolute_url ()
51- best_current_path = klass .get_absolute_url ()
49+ url_service = DjangoURLService ()
50+ canonical_url_path = url_service .class_detail (
51+ class_name = latest_version .name ,
52+ module_name = latest_version .module .name ,
53+ version_number = latest_version .module .project_version .version_number ,
54+ )
55+ best_current_path = url_service .class_detail (
56+ class_name = klass .name ,
57+ module_name = klass .module .name ,
58+ version_number = klass .module .project_version .version_number ,
59+ )
5260 if best_current_path != self .request .path :
5361 push_state_url = best_current_path
5462 else :
@@ -98,7 +106,11 @@ def get_redirect_url(self, **kwargs):
98106 except Klass .DoesNotExist :
99107 raise http .Http404
100108
101- return klass .get_absolute_url ()
109+ return DjangoURLService ().class_detail (
110+ class_name = klass .name ,
111+ module_name = klass .module .name ,
112+ version_number = klass .module .project_version .version_number ,
113+ )
102114
103115
104116@attrs .frozen
@@ -148,7 +160,18 @@ def get_context_data(self, **kwargs):
148160 klasses = Klass .objects .filter (module = module ).select_related (
149161 "module__project_version"
150162 )
151- klass_list = [KlassData (name = k .name , url = k .get_absolute_url ()) for k in klasses ]
163+ url_service = DjangoURLService ()
164+ klass_list = [
165+ KlassData (
166+ name = k .name ,
167+ url = url_service .class_detail (
168+ class_name = k .name ,
169+ module_name = k .module .name ,
170+ version_number = k .module .project_version .version_number ,
171+ ),
172+ )
173+ for k in klasses
174+ ]
152175
153176 latest_version = (
154177 Module .objects .filter (
@@ -197,6 +220,7 @@ def get_context_data(self, **kwargs):
197220 nav_builder = NavBuilder ()
198221 version_switcher = nav_builder .make_version_switcher (project_version )
199222 nav = nav_builder .get_nav_data (project_version )
223+ url_service = DjangoURLService ()
200224 return {
201225 "nav" : nav ,
202226 "object_list" : [
@@ -207,7 +231,11 @@ def get_context_data(self, **kwargs):
207231 module_long_name = class_ .module .long_name ,
208232 module_name = class_ .module .name ,
209233 module_short_name = class_ .module .short_name ,
210- url = class_ .get_absolute_url (),
234+ url = url_service .class_detail (
235+ class_name = class_ .name ,
236+ module_name = class_ .module .name ,
237+ version_number = project_version .version_number ,
238+ ),
211239 )
212240 for class_ in Klass .objects .filter (
213241 module__project_version = project_version
@@ -226,6 +254,7 @@ def get_context_data(self, **kwargs):
226254 nav_builder = NavBuilder ()
227255 version_switcher = nav_builder .make_version_switcher (project_version )
228256 nav = nav_builder .get_nav_data (project_version )
257+ url_service = DjangoURLService ()
229258 return {
230259 "nav" : nav ,
231260 "object_list" : [
@@ -236,7 +265,11 @@ def get_context_data(self, **kwargs):
236265 module_long_name = class_ .module .long_name ,
237266 module_name = class_ .module .name ,
238267 module_short_name = class_ .module .short_name ,
239- url = class_ .get_absolute_url (),
268+ url = url_service .class_detail (
269+ class_name = class_ .name ,
270+ module_name = class_ .module .name ,
271+ version_number = project_version .version_number ,
272+ ),
240273 )
241274 for class_ in Klass .objects .filter (
242275 module__project_version = project_version
@@ -259,10 +292,20 @@ def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
259292 "name" ,
260293 )
261294
295+ url_service = DjangoURLService ()
262296 urls = [{"location" : reverse ("home" ), "priority" : 1.0 }]
263297 for klass in klasses :
264298 priority = 0.9 if klass .module .project_version == latest_version else 0.5
265- urls .append ({"location" : klass .get_absolute_url (), "priority" : priority })
299+ urls .append (
300+ {
301+ "location" : url_service .class_detail (
302+ class_name = klass .name ,
303+ module_name = klass .module .name ,
304+ version_number = klass .module .project_version .version_number ,
305+ ),
306+ "priority" : priority ,
307+ }
308+ )
266309 return {"urlset" : urls }
267310
268311
0 commit comments