diff --git a/gnuviechadmin/hostingpackages/urls.py b/gnuviechadmin/hostingpackages/urls.py index 2f9b810..e0999e9 100644 --- a/gnuviechadmin/hostingpackages/urls.py +++ b/gnuviechadmin/hostingpackages/urls.py @@ -12,6 +12,7 @@ from .views import ( CreateCustomerHostingPackage, CreateHostingPackage, CustomerHostingPackageDetails, + CustomerHostingPackageList, HostingOptionChoices, ) @@ -20,10 +21,12 @@ urlpatterns = patterns( '', url(r'^create$', CreateHostingPackage.as_view(), name='create_hosting_package'), - url(r'^(?P[\w0-9@.+-_]+)/create$', + url(r'^(?P[\w0-9@.+-]+)/$', + CustomerHostingPackageList.as_view(), name='hosting_packages'), + url(r'^(?P[\w0-9@.+-]+)/create$', CreateCustomerHostingPackage.as_view(), name='create_customer_hosting_package'), - url(r'^(?P[\w0-9@.+-_]+)/hostingpackage/(?P\d+)/$', + url(r'^(?P[\w0-9@.+-]+)/(?P\d+)/$', CustomerHostingPackageDetails.as_view(), name='hosting_package_details'), url(r'^allpackages/', diff --git a/gnuviechadmin/hostingpackages/views.py b/gnuviechadmin/hostingpackages/views.py index de6b029..abe265e 100644 --- a/gnuviechadmin/hostingpackages/views.py +++ b/gnuviechadmin/hostingpackages/views.py @@ -103,10 +103,13 @@ class CustomerHostingPackageDetails(StaffOrSelfLoginRequiredMixin, DetailView): """ model = CustomerHostingPackage context_object_name = 'hostingpackage' + customer = None def get_customer_object(self): - return get_object_or_404( - get_user_model(), username=self.kwargs['user']) + if self.customer is None: + self.customer = get_object_or_404( + get_user_model(), username=self.kwargs['user']) + return self.customer def get_context_data(self, **kwargs): context = super(CustomerHostingPackageDetails, self).get_context_data( @@ -128,10 +131,39 @@ class CustomerHostingPackageDetails(StaffOrSelfLoginRequiredMixin, DetailView): class AllCustomerHostingPackageList( LoginRequiredMixin, StaffuserRequiredMixin, ListView ): + """ + This view is used for showing a list of all hosting packages. + + """ model = CustomerHostingPackage template_name_suffix = '_admin_list' +class CustomerHostingPackageList(StaffOrSelfLoginRequiredMixin, ListView): + """ + This view is used for showing a list of a customer's hosting packages. + + """ + model = CustomerHostingPackage + customer = None + + def get_customer_object(self): + if self.customer is None: + self.customer = get_object_or_404( + get_user_model(), username=self.kwargs['user']) + return self.customer + + def get_context_data(self, **kwargs): + context = super(CustomerHostingPackageList, self).get_context_data( + **kwargs) + context['customer'] = self.get_customer_object() + return context + + def get_queryset(self): + return super(CustomerHostingPackageList, self).get_queryset().filter( + customer__username=self.kwargs['user']) + + class HostingOptionChoices( LoginRequiredMixin, StaffuserRequiredMixin, DetailView ): diff --git a/gnuviechadmin/templates/base.html b/gnuviechadmin/templates/base.html index a3f8bc1..3927ac2 100644 --- a/gnuviechadmin/templates/base.html +++ b/gnuviechadmin/templates/base.html @@ -41,13 +41,20 @@ - gnuviechadmin + gnuviechadmin