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 2.4KB

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