def get_absolute_url(self): """ Django permalink """ if getters.use_slugs_for_url(): return ("sodes_single", [str(self.slug)]) else: return ("sodes_single", [str(self.category.slug), str(self.chronology)])
def test_urls_404(self): """ Test correct 404s based on settings """ base_url = reverse("sodes.views.index") cat_url = "%s%s/%s/" % (base_url, self.sode.category.slug, self.sode.chronology) slug_url = "%s%s/" % (base_url, self.sode.slug) if getters.use_slugs_for_url(): response = self.client.get(slug_url) self.assertEquals(response.status_code, 200) response = self.client.get(cat_url) self.assertEquals(response.status_code, 404) else: response = self.client.get(slug_url) self.assertEquals(response.status_code, 404) response = self.client.get(cat_url) self.assertEquals(response.status_code, 200)
def test_urls_no_reverse(self): """ URL conf for single sode should change based on settings """ if getters.use_slugs_for_url(): with self.assertRaises(NoReverseMatch): reverse( "sodes.views.single_by_category", kwargs={"category": self.sode.category.slug, "chronology": self.sode.chronology}, ) reverse("sodes.views.single_by_slug", kwargs={"slug": self.sode.slug}) else: with self.assertRaises(NoReverseMatch): reverse("sodes.views.single_by_slug", kwargs={"slug": self.sode.slug}) reverse( "sodes.views.single_by_category", kwargs={"category": self.sode.category.slug, "chronology": self.sode.chronology}, )
""" url confs for sodes """ from django.conf.urls.defaults import * from sodes.util.getters import use_slugs_for_url urlpatterns = patterns('sodes.views', url(r'^$', 'index', {"template_name": "sodes/index.html"}, name="sodes_index"), url(r'^archives/(?P<year>\d+)/(?P<month>\d+)/$', 'archive', {"template_name": "sodes/archive.html"}, name="sodes_archive"), ) if use_slugs_for_url(): urlpatterns += patterns('sodes.views', url(r'^(?P<slug>[\w\-]+)/$', 'single_by_slug', {"template_name": "sodes/single.html"}, name="sodes_single"), ) else: urlpatterns += patterns('sodes.views', url(r'^(?P<category>[\w\-]+)/(?P<chronology>[\w\-]+)/$', 'single_by_category', {"template_name": "sodes/single.html"}, name="sodes_single"), )