From 0d08d9876b25a0b647c6934c1dca0ecb46c964ea Mon Sep 17 00:00:00 2001
From: Jan Dittberner <jan@dittberner.info>
Date: Sat, 24 Jan 2015 16:23:17 +0100
Subject: [PATCH] implement CustomerHostingPackageDetails view

---
 docs/code/hostingpackages.rst          | 14 +++++++++++
 gnuviechadmin/hostingpackages/urls.py  | 12 ++++++++-
 gnuviechadmin/hostingpackages/views.py | 34 ++++++++++++++++++++++----
 3 files changed, 54 insertions(+), 6 deletions(-)

diff --git a/docs/code/hostingpackages.rst b/docs/code/hostingpackages.rst
index 2d5d077..ad021dc 100644
--- a/docs/code/hostingpackages.rst
+++ b/docs/code/hostingpackages.rst
@@ -22,3 +22,17 @@
 
 .. automodule:: hostingpackages.models
    :members:
+
+
+:py:mod:`views <hostingpackages.views>`
+---------------------------------------
+
+.. automodule:: hostingpackages.views
+   :members:
+
+
+:py:mod:`urls <hostingpackages.urls>`
+-------------------------------------
+
+.. automodule:: hostingpackages.urls
+   :members:
diff --git a/gnuviechadmin/hostingpackages/urls.py b/gnuviechadmin/hostingpackages/urls.py
index 9e7f00d..0280eca 100644
--- a/gnuviechadmin/hostingpackages/urls.py
+++ b/gnuviechadmin/hostingpackages/urls.py
@@ -1,12 +1,22 @@
+"""
+This module defines the URL patterns for hosting package related views.
+
+"""
 from __future__ import absolute_import, unicode_literals
 
 from django.conf.urls import patterns, url
 
-from .views import CreateHostingPackage
+from .views import (
+    CreateHostingPackage,
+    CustomerHostingPackageDetails,
+)
 
 
 urlpatterns = patterns(
     '',
     url(r'^(?P<user>[\w0-9@.+-_]+)/create$', CreateHostingPackage.as_view(),
         name='create_hosting_package'),
+    url(r'^(?P<user>[\w0-9@.+-_]+)/hostingpackage/(?P<pk>\d+)/$',
+        CustomerHostingPackageDetails.as_view(),
+        name='hosting_package_details'),
 )
diff --git a/gnuviechadmin/hostingpackages/views.py b/gnuviechadmin/hostingpackages/views.py
index a29c098..e368088 100644
--- a/gnuviechadmin/hostingpackages/views.py
+++ b/gnuviechadmin/hostingpackages/views.py
@@ -4,18 +4,22 @@ This module defines views related to hosting packages.
 """
 from __future__ import absolute_import, unicode_literals
 
+from django.conf import settings
 from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
 from django.utils.translation import ugettext as _
+from django.views.generic import DetailView
 from django.views.generic.edit import CreateView
-from django.contrib.auth import get_user_model
 from django.contrib import messages
+from django.contrib.auth import get_user_model
 
 from braces.views import (
     LoginRequiredMixin,
     StaffuserRequiredMixin,
 )
 
+from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin
+
 from .forms import CreateHostingPackageForm
 from .models import CustomerHostingPackage
 
@@ -37,13 +41,12 @@ class CreateHostingPackage(
         kwargs.update(self.kwargs)
         return kwargs
 
-    def _get_customer(self):
+    def get_customer_object(self):
         return get_user_model().objects.get(username=self.kwargs['user'])
 
-
     def get_context_data(self, **kwargs):
         context = super(CreateHostingPackage, self).get_context_data(**kwargs)
-        context['customer'] = self._get_customer()
+        context['customer'] = self.get_customer_object()
         return context
 
     def get_success_url(self):
@@ -52,7 +55,7 @@ class CreateHostingPackage(
 
     def form_valid(self, form):
         hostingpackage = form.save(commit=False)
-        hostingpackage.customer = self._get_customer()
+        hostingpackage.customer = self.get_customer_object()
         hostingpackage.save()
         messages.success(
             self.request,
@@ -60,3 +63,24 @@ class CreateHostingPackage(
                 name=hostingpackage.name)
         )
         return redirect(self.get_success_url())
+
+
+class CustomerHostingPackageDetails(StaffOrSelfLoginRequiredMixin, DetailView):
+    """
+    This view is for showing details of a customer hosting package.
+
+    """
+    model = CustomerHostingPackage
+    context_object_name = 'hostingpackage'
+
+    def get_customer_object(self):
+        return get_user_model().objects.get(username=self.kwargs['user'])
+
+    def get_context_data(self, **kwargs):
+        context = super(CustomerHostingPackageDetails, self).get_context_data(
+            **kwargs)
+        context.update({
+            'customer': self.get_customer_object(),
+            'uploadserver': settings.OSUSER_UPLOAD_SERVER,
+        })
+        return context