You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

app.py 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from django.conf.urls.defaults import patterns, url, include
  2. from oscar.core.application import Application
  3. from oscar.apps.product.views import ItemDetailView, ProductListView, CategoryView
  4. from oscar.apps.product.reviews.app import application as reviews_app
  5. class BaseProductApplication(Application):
  6. name = 'products'
  7. detail_view = ItemDetailView
  8. list_view = ProductListView
  9. category_view = CategoryView
  10. def get_urls(self):
  11. urlpatterns = super(BaseProductApplication, self).get_urls()
  12. urlpatterns += patterns('',
  13. url(r'^$', self.list_view.as_view(), name='list'),
  14. url(r'^(?P<item_slug>[\w-]*)-(?P<pk>\d+)/$', self.detail_view.as_view(), name='detail'),
  15. url(r'^(?P<category_slug>[\w-]+(/[\w-]+)*)/$', self.category_view.as_view(), name='category')
  16. )
  17. return urlpatterns
  18. class ReviewsApplication(Application):
  19. reviews_app = reviews_app
  20. def get_urls(self):
  21. urlpatterns = super(ReviewsApplication, self).get_urls()
  22. urlpatterns += patterns('',
  23. url(r'^(?P<item_slug>[\w-]*)-(?P<item_pk>\d+)/reviews/', include(self.reviews_app.urls)),
  24. )
  25. return urlpatterns
  26. class NavigationApplication(Application):
  27. backend = None
  28. def get_urls(self):
  29. urlpatterns = super(NavigationApplication, self).get_urls()
  30. urlpatterns += patterns('',
  31. url(r'^', include(self.backend.urls))
  32. )
  33. return urlpatterns
  34. class ProductApplication(BaseProductApplication, ReviewsApplication):
  35. """
  36. Composite class combining Products with Reviews
  37. """
  38. application = ProductApplication()