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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from django.conf.urls.defaults import patterns, url
  2. from django.contrib.admin.views.decorators import staff_member_required
  3. from oscar.core.application import Application
  4. from oscar.apps.dashboard.promotions import views
  5. from oscar.apps.promotions.conf import PROMOTION_CLASSES
  6. from oscar.apps.dashboard.nav import register, Node
  7. node = Node('Content blocks')
  8. node.add_child(Node('All blocks', 'dashboard:promotion-list'))
  9. node.add_child(Node('By page', 'dashboard:promotion-list-by-page'))
  10. register(node)
  11. class PromotionsDashboardApplication(Application):
  12. name = None
  13. list_view = views.ListView
  14. page_list = views.PageListView
  15. page_detail = views.PageDetailView
  16. create_redirect_view = views.CreateRedirectView
  17. delete_page_promotion_view = views.DeletePagePromotionView
  18. for klass in PROMOTION_CLASSES:
  19. locals()['create_%s_view' % klass.classname()] = \
  20. getattr(views, 'Create%sView' % klass.__name__)
  21. locals()['update_%s_view' % klass.classname()] = \
  22. getattr(views, 'Update%sView' % klass.__name__)
  23. locals()['delete_%s_view' % klass.classname()] = \
  24. getattr(views, 'Delete%sView' % klass.__name__)
  25. def get_urls(self):
  26. urlpatterns = patterns('',
  27. url(r'^$', self.list_view.as_view(), name='promotion-list'),
  28. url(r'^pages/$', self.page_list.as_view(), name='promotion-list-by-page'),
  29. url(r'^pages/(?P<path>.+)/$', self.page_detail.as_view(), name='promotion-list-by-url'),
  30. url(r'^create/$',
  31. self.create_redirect_view.as_view(),
  32. name='promotion-create-redirect'),
  33. url(r'^page-promotion/(?P<pk>\d+)/$',
  34. self.delete_page_promotion_view.as_view(), name='pagepromotion-delete')
  35. )
  36. for klass in PROMOTION_CLASSES:
  37. code = klass.classname()
  38. urlpatterns += patterns('',
  39. url(r'create/%s/' % code,
  40. getattr(self, 'create_%s_view' % code).as_view(),
  41. name='promotion-create-%s' % code),
  42. url(r'^update/(?P<ptype>%s)/(?P<pk>\d+)/$' % code,
  43. getattr(self, 'update_%s_view' % code).as_view(),
  44. name='promotion-update'),
  45. url(r'^delete/(?P<ptype>%s)/(?P<pk>\d+)/$' % code,
  46. getattr(self, 'delete_%s_view' % code).as_view(),
  47. name='promotion-delete')
  48. )
  49. return self.post_process_urls(urlpatterns)
  50. def get_url_decorator(self, url_name):
  51. return staff_member_required
  52. application = PromotionsDashboardApplication()