소스 검색

Paginate html report results

master
Asia Biega 13 년 전
부모
커밋
f22ea6f7c7

+ 2
- 2
oscar/apps/analytics/reports.py 파일 보기

@@ -32,7 +32,7 @@ class ProductReportCSVFormatter(ReportCSVFormatter):
32 32
 
33 33
 
34 34
 class ProductReportHTMLFormatter(ReportHTMLFormatter):
35
-    template = 'dashboard/reports/partials/product_report.html'
35
+    filename_template = 'dashboard/reports/partials/product_report.html'
36 36
 
37 37
 
38 38
 class ProductReportGenerator(ReportGenerator):
@@ -84,7 +84,7 @@ class UserReportCSVFormatter(ReportCSVFormatter):
84 84
 
85 85
 
86 86
 class UserReportHTMLFormatter(ReportHTMLFormatter):
87
-    template = 'dashboard/reports/partials/user_report.html'
87
+    filename_template = 'dashboard/reports/partials/user_report.html'
88 88
 
89 89
 
90 90
 class UserReportGenerator(ReportGenerator):

+ 2
- 3
oscar/apps/basket/reports.py 파일 보기

@@ -45,7 +45,7 @@ class OpenBasketReportCSVFormatter(ReportCSVFormatter):
45 45
 
46 46
 
47 47
 class OpenBasketReportHTMLFormatter(ReportHTMLFormatter):
48
-    template = 'dashboard/reports/partials/open_basket_report.html'
48
+    filename_template = 'dashboard/reports/partials/open_basket_report.html'
49 49
 
50 50
 
51 51
 class OpenBasketReportGenerator(ReportGenerator):
@@ -101,7 +101,7 @@ class SubmittedBasketReportCSVFormatter(ReportCSVFormatter):
101 101
 
102 102
 
103 103
 class SubmittedBasketReportHTMLFormatter(ReportHTMLFormatter):
104
-    template = 'dashboard/reports/partials/submitted_basket_report.html'
104
+    filename_template = 'dashboard/reports/partials/submitted_basket_report.html'
105 105
 
106 106
 
107 107
 class SubmittedBasketReportGenerator(ReportGenerator):
@@ -123,4 +123,3 @@ class SubmittedBasketReportGenerator(ReportGenerator):
123 123
         }
124 124
         baskets = Basket._default_manager.filter(status=SUBMITTED)
125 125
         return self.formatter.generate_response(baskets, **additional_data)
126
-

+ 2
- 4
oscar/apps/dashboard/reports/reports.py 파일 보기

@@ -27,7 +27,7 @@ class ReportGenerator(object):
27 27
         """
28 28
         Returns the filename for this report
29 29
         """
30
-        return self.filename_template % (self.start_date, self.end_date)
30
+        return self.formatter.filename()
31 31
 
32 32
     def is_available_to(self, user):
33 33
         """
@@ -59,6 +59,4 @@ class ReportCSVFormatter(ReportFormatter):
59 59
 class ReportHTMLFormatter(ReportFormatter):
60 60
 
61 61
     def generate_response(self, objects, **kwargs):
62
-        template = loader.get_template(self.template)
63
-        ctx = Context({'objects': objects})
64
-        return template.render(ctx)
62
+        return objects

+ 13
- 5
oscar/apps/dashboard/reports/views.py 파일 보기

@@ -1,14 +1,16 @@
1 1
 from django.http import HttpResponse, HttpResponseForbidden, Http404
2 2
 from django.template.response import TemplateResponse
3
-from django.views.generic import TemplateView
3
+from django.views.generic import TemplateView, ListView
4 4
 
5 5
 from oscar.core.loading import get_class
6 6
 ReportForm = get_class('dashboard.reports.forms', 'ReportForm')
7 7
 GeneratorRepository = get_class('dashboard.reports.utils', 'GeneratorRepository')
8 8
 
9 9
 
10
-class IndexView(TemplateView):
10
+class IndexView(ListView):
11 11
     template_name = 'dashboard/reports/index.html'
12
+    paginate_by = 25
13
+    context_object_name = 'objects'
12 14
 
13 15
     def get(self, request, *args, **kwargs):
14 16
         if 'report_type' in request.GET:
@@ -16,19 +18,25 @@ class IndexView(TemplateView):
16 18
             if form.is_valid():
17 19
                 generator = _get_generator(form)
18 20
                 if not generator.is_available_to(request.user):
19
-                    return HttpResponseForbidden("You do not have access to this report")
21
+                    return HttpResponseForbidden("You do not have access"
22
+                                                 " to this report")
20 23
 
21 24
                 report = generator.generate()
22 25
 
23 26
                 if form.cleaned_data['download']:
24 27
                     return report
25 28
                 else:
26
-                    return TemplateResponse(request, self.template_name,
27
-                        {'form': form, 'report': report})
29
+                    self.set_list_view_attrs(generator, report)
30
+                    context = self.get_context_data(object_list=self.queryset)
31
+                    context['form'] = form
32
+                    return self.render_to_response(context)
28 33
         else:
29 34
             form = ReportForm()
30 35
         return TemplateResponse(request, self.template_name, {'form': form})
31 36
 
37
+    def set_list_view_attrs(self, generator, report):
38
+        self.template_name = generator.filename()
39
+        self.object_list = self.queryset = report
32 40
 
33 41
 def _get_generator(form):
34 42
     code = form.cleaned_data['report_type']

+ 1
- 4
oscar/apps/offer/reports.py 파일 보기

@@ -25,7 +25,7 @@ class OfferReportCSVFormatter(ReportCSVFormatter):
25 25
 
26 26
 
27 27
 class OfferReportHTMLFormatter(ReportHTMLFormatter):
28
-    template = 'dashboard/reports/partials/offer_report.html'
28
+    filename_template = 'dashboard/reports/partials/offer_report.html'
29 29
 
30 30
 
31 31
 class OfferReportGenerator(ReportGenerator):
@@ -41,6 +41,3 @@ class OfferReportGenerator(ReportGenerator):
41 41
     def generate(self):
42 42
         offers = ConditionalOffer._default_manager.all()
43 43
         return self.formatter.generate_response(offers)
44
-
45
-    def filename(self):
46
-        return self.filename_template

+ 1
- 1
oscar/apps/order/reports.py 파일 보기

@@ -32,7 +32,7 @@ class OrderReportCSVFormatter(ReportCSVFormatter):
32 32
 
33 33
 
34 34
 class OrderReportHTMLFormatter(ReportHTMLFormatter):
35
-    template = 'dashboard/reports/partials/order_report.html'
35
+    filename_template = 'dashboard/reports/partials/order_report.html'
36 36
 
37 37
 
38 38
 class OrderReportGenerator(ReportGenerator):

+ 1
- 1
oscar/apps/voucher/reports.py 파일 보기

@@ -31,7 +31,7 @@ class VoucherReportCSVFormatter(ReportCSVFormatter):
31 31
 
32 32
 
33 33
 class VoucherReportHTMLFormatter(ReportHTMLFormatter):
34
-    template = 'dashboard/reports/partials/voucher_report.html'
34
+    filename_template = 'dashboard/reports/partials/voucher_report.html'
35 35
 
36 36
 
37 37
 class VoucherReportGenerator(ReportGenerator):

+ 3
- 0
oscar/templates/dashboard/reports/index.html 파일 보기

@@ -35,5 +35,8 @@ Reports | {{ block.super }}
35 35
     {{ report }}
36 36
 {% endif %}
37 37
 
38
+{% block report %}
39
+{% endblock %}
40
+
38 41
 {% endblock dashboard_content %}
39 42
 

+ 7
- 1
oscar/templates/dashboard/reports/partials/offer_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>Offer</th>
@@ -11,4 +13,8 @@
11 13
         <td>{{ offer.total_discount }}</td>
12 14
     </tr>
13 15
     {% endfor %}
14
-</table>
16
+</table>
17
+    {% if page_obj %}
18
+        {% include "catalogue/partials/pagination.html" %}
19
+    {% endif %}
20
+{% endblock %}

+ 7
- 1
oscar/templates/dashboard/reports/partials/open_basket_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>User ID</th>
@@ -25,4 +27,8 @@
25 27
         <td>{{ basket.time_since_creation }}</td>
26 28
     </tr>
27 29
     {% endfor %}
28
-</table>
30
+</table>
31
+    {% if page_obj %}
32
+        {% include "catalogue/partials/pagination.html" %}
33
+    {% endif %}
34
+{% endblock %}

+ 7
- 3
oscar/templates/dashboard/reports/partials/order_report.html 파일 보기

@@ -1,8 +1,9 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5
-        <th></th>
6 7
         <th>Order number</th>
7 8
         <th>User</th>
8 9
         <th>Total incl. tax</th>
@@ -11,7 +12,6 @@
11 12
     </tr>
12 13
     {% for order in objects %}
13 14
     <tr>
14
-        <td><input type="checkbox" name="selected_order" class="selected_order" value="{{ order.id }}"/>
15 15
         <td>{{ order.number }}</td>
16 16
         <td>{{ order.user }}</td>
17 17
         <td>{{ order.total_incl_tax|currency }}</td>
@@ -21,4 +21,8 @@
21 21
         </td>
22 22
     </tr>
23 23
     {% endfor %}
24
-</table>
24
+</table>
25
+    {% if page_obj %}
26
+        {% include "catalogue/partials/pagination.html" %}
27
+    {% endif %}
28
+{% endblock %}

+ 7
- 1
oscar/templates/dashboard/reports/partials/product_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>Product</th>
@@ -15,4 +17,8 @@
15 17
         <td>{{ product.num_purchases }}</td>
16 18
     </tr>
17 19
     {% endfor %}
18
-</table>
20
+</table>
21
+    {% if page_obj %}
22
+        {% include "catalogue/partials/pagination.html" %}
23
+    {% endif %}
24
+{% endblock %}

+ 7
- 1
oscar/templates/dashboard/reports/partials/submitted_basket_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>User ID</th>
@@ -23,4 +25,8 @@
23 25
         <td>{{ basket.time_before_submit }}</td>
24 26
     </tr>
25 27
     {% endfor %}
26
-</table>
28
+</table>
29
+    {% if page_obj %}
30
+        {% include "catalogue/partials/pagination.html" %}
31
+    {% endif %}
32
+{% endblock %}

+ 7
- 1
oscar/templates/dashboard/reports/partials/user_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>Name</th>
@@ -25,4 +27,8 @@
25 27
         <td>{% if user.date_last_order %}{{ user.date_last_order }}{% endif %}</td>
26 28
     </tr>
27 29
     {% endfor %}
28
-</table>
30
+</table>
31
+    {% if page_obj %}
32
+        {% include "catalogue/partials/pagination.html" %}
33
+    {% endif %}
34
+{% endblock %}

+ 7
- 1
oscar/templates/dashboard/reports/partials/voucher_report.html 파일 보기

@@ -1,5 +1,7 @@
1
+{% extends 'dashboard/reports/index.html' %}
1 2
 {% load currency_filters %}
2 3
 
4
+{% block report %}
3 5
 <table class="table table-striped table-bordered">
4 6
     <tr>
5 7
         <th>Voucher code</th>
@@ -15,4 +17,8 @@
15 17
         <td>{{ voucher.total_discount }}</td>
16 18
     </tr>
17 19
     {% endfor %}
18
-</table>
20
+</table>
21
+    {% if page_obj %}
22
+        {% include "catalogue/partials/pagination.html" %}
23
+    {% endif %}
24
+{% endblock %}

Loading…
취소
저장