from django.conf.urls import patterns, url from django.contrib.auth.decorators import login_required from django.views import generic from oscar.apps.customer import views from oscar.apps.customer.notifications import views as notification_views from oscar.apps.customer.alerts import views as alert_views from oscar.apps.customer.wishlists import views as wishlists_views from oscar.core.application import Application class CustomerApplication(Application): name = 'customer' summary_view = views.AccountSummaryView order_history_view = views.OrderHistoryView order_detail_view = views.OrderDetailView anon_order_detail_view = views.AnonymousOrderDetailView order_line_view = views.OrderLineView address_list_view = views.AddressListView address_create_view = views.AddressCreateView address_update_view = views.AddressUpdateView address_delete_view = views.AddressDeleteView address_change_status_view = views.AddressChangeStatusView email_list_view = views.EmailHistoryView email_detail_view = views.EmailDetailView login_view = views.AccountAuthView logout_view = views.LogoutView register_view = views.AccountRegistrationView profile_view = views.ProfileView profile_update_view = views.ProfileUpdateView change_password_view = views.ChangePasswordView notification_inbox_view = notification_views.InboxView notification_archive_view = notification_views.ArchiveView notification_update_view = notification_views.UpdateView notification_detail_view = notification_views.DetailView alert_list_view = alert_views.ProductAlertListView alert_create_view = alert_views.ProductAlertCreateView alert_confirm_view = alert_views.ProductAlertConfirmView alert_cancel_view = alert_views.ProductAlertCancelView wishlists_add_product_view = wishlists_views.WishListAddProduct wishlists_list_view = wishlists_views.WishListListView wishlists_detail_view = wishlists_views.WishListDetailView wishlists_create_view = wishlists_views.WishListCreateView wishlists_create_with_product_view = wishlists_views.WishListCreateView wishlists_update_view = wishlists_views.WishListUpdateView wishlists_delete_view = wishlists_views.WishListDeleteView wishlists_remove_product_view = wishlists_views.WishListRemoveProduct wishlists_move_product_to_another_view = wishlists_views.WishListMoveProductToAnotherWishList def get_urls(self): urlpatterns = patterns('', url(r'^$', login_required(self.summary_view.as_view()), name='summary'), url(r'^login/$', self.login_view.as_view(), name='login'), url(r'^logout/$', self.logout_view.as_view(), name='logout'), url(r'^register/$', self.register_view.as_view(), name='register'), url(r'^change-password/$', self.change_password_view.as_view(), name='change-password'), # Profile url(r'^profile/$', login_required(self.profile_view.as_view()), name='profile-view'), url(r'^profile/edit/$', login_required(self.profile_update_view.as_view()), name='profile-update'), # Order history url(r'^orders/$', login_required(self.order_history_view.as_view()), name='order-list'), url(r'^order-status/(?P[\w-]*)/(?P\w+)/$', self.anon_order_detail_view.as_view(), name='anon-order'), url(r'^orders/(?P[\w-]*)/$', login_required(self.order_detail_view.as_view()), name='order'), url(r'^orders/(?P[\w-]*)/(?P\d+)$', login_required(self.order_line_view.as_view()), name='order-line'), # Address book url(r'^addresses/$', login_required(self.address_list_view.as_view()), name='address-list'), url(r'^addresses/add/$', login_required(self.address_create_view.as_view()), name='address-create'), url(r'^addresses/(?P\d+)/$', login_required(self.address_update_view.as_view()), name='address-detail'), url(r'^addresses/(?P\d+)/delete/$', login_required(self.address_delete_view.as_view()), name='address-delete'), url(r'^addresses/(?P\d+)/(?Pdefault_for_(billing|shipping))/$', login_required(self.address_change_status_view.as_view()), name='address-change-status'), # Email history url(r'^emails/$', login_required(self.email_list_view.as_view()), name='email-list'), url(r'^emails/(?P\d+)/$', login_required(self.email_detail_view.as_view()), name='email-detail'), # Notifications url(r'^notifications/$', generic.RedirectView.as_view( url='/accounts/notifications/inbox/')), url(r'^notifications/inbox/$', login_required(self.notification_inbox_view.as_view()), name='notifications-inbox'), url(r'^notifications/archive/$', login_required(self.notification_archive_view.as_view()), name='notifications-archive'), url(r'^notifications/update/$', login_required(self.notification_update_view.as_view()), name='notifications-update'), url(r'^notifications/(?P\d+)/$', login_required(self.notification_detail_view.as_view()), name='notifications-detail'), # Alerts url(r'^alerts/$', self.alert_list_view.as_view(), name='alerts-list'), url(r'^alerts/create/(?P\d+)/$', self.alert_create_view.as_view(), name='alert-create'), url(r'^alerts/confirm/(?P[a-z0-9]+)/$', self.alert_confirm_view.as_view(), name='alerts-confirm'), url(r'^alerts/cancel/key/(?P[a-z0-9]+)/$', self.alert_cancel_view.as_view(), name='alerts-cancel-by-key'), url(r'^alerts/cancel/(?P[a-z0-9]+)/$', login_required(self.alert_cancel_view.as_view()), name='alerts-cancel-by-pk'), # Wishlists url(r'wishlists/$', login_required(self.wishlists_list_view.as_view()), name='wishlists-list'), url(r'wishlists/add/(?P\d+)/$', login_required(self.wishlists_add_product_view.as_view()), name='wishlists-add-product'), url(r'wishlists/(?P[a-z0-9]+)/add/(?P\d+)/', login_required(self.wishlists_add_product_view.as_view()), name='wishlists-add-product'), url(r'wishlists/create/$', login_required(self.wishlists_create_view.as_view()), name='wishlists-create'), url(r'wishlists/create/with-product/(?P\d+)/$', login_required(self.wishlists_create_view.as_view()), name='wishlists-create-with-product'), url(r'wishlists/(?P[a-z0-9]+)/$', self.wishlists_detail_view.as_view(), name='wishlists-detail'), url(r'wishlists/(?P[a-z0-9]+)/update/$', login_required(self.wishlists_update_view.as_view()), name='wishlists-update'), url(r'wishlists/(?P[a-z0-9]+)/delete/$', login_required(self.wishlists_delete_view.as_view()), name='wishlists-delete'), url(r'wishlists/(?P[a-z0-9]+)/lines/(?P\d+)/delete/', login_required(self.wishlists_remove_product_view.as_view()), name='wishlists-remove-product'), url(r'wishlists/(?P[a-z0-9]+)/products/(?P\d+)/delete/', login_required(self.wishlists_remove_product_view.as_view()), name='wishlists-remove-product'), url(r'wishlists/(?P[a-z0-9]+)/lines/(?P\d+)/move-to/(?P[a-z0-9]+)/$', login_required(self.wishlists_move_product_to_another_view.as_view()), name='wishlists-move-product-to-another'), ) return self.post_process_urls(urlpatterns) application = CustomerApplication()