您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

app.py 3.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # flake8: noqa, because URL syntax is more readable with long lines
  2. import django
  3. from django.conf.urls import patterns, url, include
  4. from django.contrib.auth import views as auth_views
  5. from django.core.urlresolvers import reverse_lazy
  6. from oscar.core.application import Application
  7. from oscar.apps.customer import forms
  8. from oscar.core.loading import get_class
  9. from oscar.views.decorators import login_forbidden
  10. class Shop(Application):
  11. name = None
  12. catalogue_app = get_class('catalogue.app', 'application')
  13. customer_app = get_class('customer.app', 'application')
  14. basket_app = get_class('basket.app', 'application')
  15. checkout_app = get_class('checkout.app', 'application')
  16. promotions_app = get_class('promotions.app', 'application')
  17. search_app = get_class('search.app', 'application')
  18. dashboard_app = get_class('dashboard.app', 'application')
  19. offer_app = get_class('offer.app', 'application')
  20. def get_urls(self):
  21. urls = [
  22. (r'^i18n/', include('django.conf.urls.i18n')),
  23. (r'^catalogue/', include(self.catalogue_app.urls)),
  24. (r'^basket/', include(self.basket_app.urls)),
  25. (r'^checkout/', include(self.checkout_app.urls)),
  26. (r'^accounts/', include(self.customer_app.urls)),
  27. (r'^search/', include(self.search_app.urls)),
  28. (r'^dashboard/', include(self.dashboard_app.urls)),
  29. (r'^offers/', include(self.offer_app.urls)),
  30. # Password reset - as we're using Django's default view functions,
  31. # we can't namespace these urls as that prevents
  32. # the reverse function from working.
  33. url(r'^password-reset/$',
  34. login_forbidden(auth_views.password_reset),
  35. {'password_reset_form': forms.PasswordResetForm,
  36. 'post_reset_redirect': reverse_lazy('password-reset-done')},
  37. name='password-reset'),
  38. url(r'^password-reset/done/$',
  39. login_forbidden(auth_views.password_reset_done),
  40. name='password-reset-done')]
  41. # Django <=1.5: uses uidb36 to encode the user's primary key
  42. # Django 1.6: uses uidb64 to encode the user's primary key, but
  43. # but supports legacy links
  44. # Django > 1.7: used uidb64 to encode the user's primary key
  45. # see https://docs.djangoproject.com/en/dev/releases/1.6/#django-contrib-auth-password-reset-uses-base-64-encoding-of-user-pk
  46. if django.VERSION < (1, 6):
  47. urls.append(
  48. url(r'^password-reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
  49. login_forbidden(auth_views.password_reset_confirm),
  50. {'post_reset_redirect': reverse_lazy('password-reset-complete')},
  51. name='password-reset-confirm'))
  52. else:
  53. urls.append(
  54. url(r'^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
  55. login_forbidden(auth_views.password_reset_confirm),
  56. {'post_reset_redirect': reverse_lazy('password-reset-complete')},
  57. name='password-reset-confirm'))
  58. if django.VERSION < (1, 7):
  59. urls.append(
  60. url(r'^password-reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
  61. login_forbidden(auth_views.password_reset_confirm_uidb36),
  62. {'post_reset_redirect': reverse_lazy('password-reset-complete')}))
  63. urls += [
  64. url(r'^password-reset/complete/$',
  65. login_forbidden(auth_views.password_reset_complete),
  66. name='password-reset-complete'),
  67. (r'', include(self.promotions_app.urls)),
  68. ]
  69. return patterns('', *urls)
  70. # 'shop' kept for legacy projects - 'application' is a better name
  71. shop = application = Shop()