http.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. from datetime import date, datetime
  2. from django.conf.urls import url
  3. from django.conf.urls.i18n import i18n_patterns
  4. from django.contrib.sitemaps import GenericSitemap, Sitemap, views
  5. from django.http import HttpResponse
  6. from django.utils import timezone
  7. from django.views.decorators.cache import cache_page
  8. from ..models import I18nTestModel, TestModel
  9. class SimpleSitemap(Sitemap):
  10. changefreq = "never"
  11. priority = 0.5
  12. location = '/location/'
  13. lastmod = datetime.now()
  14. def items(self):
  15. return [object()]
  16. class SimpleI18nSitemap(Sitemap):
  17. changefreq = "never"
  18. priority = 0.5
  19. i18n = True
  20. def items(self):
  21. return I18nTestModel.objects.all()
  22. class EmptySitemap(Sitemap):
  23. changefreq = "never"
  24. priority = 0.5
  25. location = '/location/'
  26. def items(self):
  27. return []
  28. class FixedLastmodSitemap(SimpleSitemap):
  29. lastmod = datetime(2013, 3, 13, 10, 0, 0)
  30. class FixedLastmodMixedSitemap(Sitemap):
  31. changefreq = "never"
  32. priority = 0.5
  33. location = '/location/'
  34. loop = 0
  35. def items(self):
  36. o1 = TestModel()
  37. o1.lastmod = datetime(2013, 3, 13, 10, 0, 0)
  38. o2 = TestModel()
  39. return [o1, o2]
  40. class DateSiteMap(SimpleSitemap):
  41. lastmod = date(2013, 3, 13)
  42. class TimezoneSiteMap(SimpleSitemap):
  43. lastmod = datetime(2013, 3, 13, 10, 0, 0, tzinfo=timezone.get_fixed_timezone(-300))
  44. def testmodelview(request, id):
  45. return HttpResponse()
  46. simple_sitemaps = {
  47. 'simple': SimpleSitemap,
  48. }
  49. simple_i18nsitemaps = {
  50. 'simple': SimpleI18nSitemap,
  51. }
  52. empty_sitemaps = {
  53. 'empty': EmptySitemap,
  54. }
  55. fixed_lastmod_sitemaps = {
  56. 'fixed-lastmod': FixedLastmodSitemap,
  57. }
  58. fixed_lastmod__mixed_sitemaps = {
  59. 'fixed-lastmod-mixed': FixedLastmodMixedSitemap,
  60. }
  61. generic_sitemaps = {
  62. 'generic': GenericSitemap({'queryset': TestModel.objects.all()}),
  63. }
  64. urlpatterns = [
  65. url(r'^simple/index\.xml$', views.index, {'sitemaps': simple_sitemaps}),
  66. url(r'^simple/custom-index\.xml$', views.index,
  67. {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap_index.xml'}),
  68. url(r'^simple/sitemap-(?P<section>.+)\.xml$', views.sitemap,
  69. {'sitemaps': simple_sitemaps},
  70. name='django.contrib.sitemaps.views.sitemap'),
  71. url(r'^simple/sitemap\.xml$', views.sitemap,
  72. {'sitemaps': simple_sitemaps},
  73. name='django.contrib.sitemaps.views.sitemap'),
  74. url(r'^simple/i18n\.xml$', views.sitemap,
  75. {'sitemaps': simple_i18nsitemaps},
  76. name='django.contrib.sitemaps.views.sitemap'),
  77. url(r'^simple/custom-sitemap\.xml$', views.sitemap,
  78. {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap.xml'},
  79. name='django.contrib.sitemaps.views.sitemap'),
  80. url(r'^empty/sitemap\.xml$', views.sitemap,
  81. {'sitemaps': empty_sitemaps},
  82. name='django.contrib.sitemaps.views.sitemap'),
  83. url(r'^lastmod/sitemap\.xml$', views.sitemap,
  84. {'sitemaps': fixed_lastmod_sitemaps},
  85. name='django.contrib.sitemaps.views.sitemap'),
  86. url(r'^lastmod-mixed/sitemap\.xml$', views.sitemap,
  87. {'sitemaps': fixed_lastmod__mixed_sitemaps},
  88. name='django.contrib.sitemaps.views.sitemap'),
  89. url(r'^lastmod/date-sitemap.xml$', views.sitemap,
  90. {'sitemaps': {'date-sitemap': DateSiteMap}},
  91. name='django.contrib.sitemaps.views.sitemap'),
  92. url(r'^lastmod/tz-sitemap.xml$', views.sitemap,
  93. {'sitemaps': {'tz-sitemap': TimezoneSiteMap}},
  94. name='django.contrib.sitemaps.views.sitemap'),
  95. url(r'^generic/sitemap\.xml$', views.sitemap,
  96. {'sitemaps': generic_sitemaps},
  97. name='django.contrib.sitemaps.views.sitemap'),
  98. url(r'^cached/index\.xml$', cache_page(1)(views.index),
  99. {'sitemaps': simple_sitemaps, 'sitemap_url_name': 'cached_sitemap'}),
  100. url(r'^cached/sitemap-(?P<section>.+)\.xml', cache_page(1)(views.sitemap),
  101. {'sitemaps': simple_sitemaps}, name='cached_sitemap')
  102. ]
  103. urlpatterns += i18n_patterns(
  104. url(r'^i18n/testmodel/(?P<id>\d+)/$', testmodelview, name='i18n_testmodel'),
  105. )