Selaa lähdekoodia

made product reviews work with my URLs

master
Andrew Ingram 14 vuotta sitten
vanhempi
commit
553d3b4ee2

+ 1
- 0
examples/vanilla/settings.py Näytä tiedosto

@@ -191,6 +191,7 @@ INSTALLED_APPS = (
191 191
     'oscar.apps.shipping',
192 192
     'oscar.apps.order_management',
193 193
     'oscar.apps.product',
194
+    'oscar.apps.product.reviews',
194 195
     'oscar.apps.basket',
195 196
     'oscar.apps.payment',
196 197
     'oscar.apps.payment.datacash',

+ 1
- 0
oscar/apps/product/__init__.py Näytä tiedosto

@@ -14,6 +14,7 @@ class ProductApplication(Application):
14 14
             url(r'^$', self.list_view.as_view(), name='list'),
15 15
             url(r'^(?P<item_class_slug>[\w-]+)/$', self.class_list_view.as_view(), name='class-list'),            
16 16
             url(r'^(?P<item_class_slug>[\w-]+)/(?P<item_slug>[\w-]*)-(?P<pk>\d+)/$', self.detail_view.as_view(), name='detail'),
17
+            url(r'^(?P<item_class_slug>[\w-]+)/(?P<item_slug>[\w-]*)-(?P<item_id>\d+)/review/', include('oscar.apps.product.reviews.urls')),         
17 18
         )
18 19
         return urlpatterns
19 20
 

+ 2
- 2
oscar/apps/product/reviews/abstract_models.py Näytä tiedosto

@@ -24,7 +24,7 @@ class AbstractProductReview(models.Model):
24 24
     """
25 25
     
26 26
     # Note we keep the review even if the product is deleted
27
-    product = models.ForeignKey('product.Item', related_name='product', null=True, on_delete=models.SET_NULL)
27
+    product = models.ForeignKey('product.Item', related_name='reviews', null=True, on_delete=models.SET_NULL)
28 28
     
29 29
     SCORE_CHOICES = tuple([(x, x) for x in range(0, 6)])
30 30
     score = models.SmallIntegerField(_("Score"), choices=SCORE_CHOICES)
@@ -63,7 +63,7 @@ class AbstractProductReview(models.Model):
63 63
 
64 64
     @models.permalink
65 65
     def get_absolute_url(self):
66
-        return ('oscar-product-review', (), {
66
+        return ('products:review-detail', (), {
67 67
             'item_class_slug': self.product.get_item_class().slug,
68 68
             'item_slug': self.product.slug,
69 69
             'item_id': self.product.id,

+ 3
- 3
oscar/apps/product/reviews/urls.py Näytä tiedosto

@@ -6,7 +6,7 @@ import_module('product.reviews.views', ['CreateProductReviewView', 'ProductRevie
6 6
                                         'ProductReviewListView'], locals())  
7 7
 
8 8
 urlpatterns = patterns('oscar.product.reviews.views',
9
-    url(r'(?P<pk>\d+)/$', ProductReviewDetailView.as_view(), name='oscar-product-review'),
10
-    url(r'add/$', CreateProductReviewView.as_view(), name='oscar-product-review-add'),
11
-    url(r'all/$', ProductReviewListView.as_view(), name='oscar-product-reviews'),
9
+    url(r'^(?P<pk>\d+)/$', ProductReviewDetailView.as_view(), name='review-detail'),
10
+    url(r'^add/$', CreateProductReviewView.as_view(), name='review-add'),
11
+    url(r'^$', ProductReviewListView.as_view(), name='review-list'),
12 12
 )

+ 38
- 35
oscar/templates/oscar/product/detail.html Näytä tiedosto

@@ -64,50 +64,53 @@
64 64
 
65 65
 {% if item.stockrecord %}
66 66
 
67
-{% basket_form item as form %}
67
+{% basket_form item as basket_form %}
68 68
 
69 69
 <form action="{% url oscar-basket %}" method="post">
70 70
     {% csrf_token %}
71
-    {{ form.as_p }}
71
+    {{ basket_form.as_p }}
72 72
     <input type="submit" value="Add to basket" />
73 73
 </form>
74 74
 {% endif %}
75 75
 
76 76
 {% block product_review %}
77 77
 
78
-    {% if reviews %}
79
-    	<h3>Reviews of {{ item.title }}</h3>
80
-        <p>Read customer reviews on this product. If you have read this book, why not post your own
81
-           review?</p>
82
-        <p><a href="{% url oscar-product-review-add item.item_class.slug item.slug item.id %}">Add a review</a></p>
83
-        <div>
84
-            {% for review in reviews|slice:":3" %}
85
-                <div class="review">
86
-                    <h4>{{ review.title }} ({{ review.score }}/5)</h4>
87
-                    <h5>Reviewed by {{ review.get_reviewer_name }}</h5>
88
-                    <p>{{ review.date_created }}<p>
89
-                    <p>{{ review.body|linebreaks }}</p>
90
-                    <p><a href="{{ review.get_absolute_url }}">Permalink</a>
91
-                    {% if user.is_authenticated %}
92
-                        <form action="{{ review.get_absolute_url }}" method="post">
93
-                            {% csrf_token %}               
94
-                            <input type="hidden" name="action" value="vote_up"/>
95
-                            <input type="submit" value="I agree" /> 
96
-                        </form>
97
-                        <form  action="{{ review.get_absolute_url }}" method="post">
98
-                            {% csrf_token %}                
99
-                            <input type="hidden" name="action" value="vote_down"/>
100
-                            <input type="submit" value="I disagree" /> 
101
-                        </form>
102
-                    {% endif %}
103
-                    {% if review.has_votes %}
104
-                        <p>{{ review.num_up_votes }} customer{{ review.num_up_votes|pluralize }} agreed.</p>
105
-                    {% endif %}
106
-                </div>
107
-            {% endfor %}
108
-            <p><a href="{% url oscar-product-reviews item.item_class.slug item.slug item.id %}">See all reviews</a>.</p>
109
-        </div>
110
-    {% endif %}
78
+<h3>Reviews of {{ item.title }}</h3>
79
+<p>Read customer reviews on this product. If you have read this book, why not post your own
80
+   review?</p>
81
+<p><a href="{% url products:review-add item.item_class.slug item.slug item.id %}">Add a review</a></p>
82
+
83
+{% with item.reviews.all as reviews %}
84
+{% if reviews %}
85
+    <div>
86
+        {% for review in reviews|slice:":3" %}
87
+            <div class="review">
88
+                <h4>{{ review.title }} ({{ review.score }}/5)</h4>
89
+                <h5>Reviewed by {{ review.get_reviewer_name }}</h5>
90
+                <p>{{ review.date_created }}<p>
91
+                <p>{{ review.body|linebreaks }}</p>
92
+                <p><a href="{{ review.get_absolute_url }}">Permalink</a>
93
+                {% if user.is_authenticated %}
94
+                    <form action="{{ review.get_absolute_url }}" method="post">
95
+                        {% csrf_token %}               
96
+                        <input type="hidden" name="action" value="vote_up"/>
97
+                        <input type="submit" value="I agree" /> 
98
+                    </form>
99
+                    <form  action="{{ review.get_absolute_url }}" method="post">
100
+                        {% csrf_token %}                
101
+                        <input type="hidden" name="action" value="vote_down"/>
102
+                        <input type="submit" value="I disagree" /> 
103
+                    </form>
104
+                {% endif %}
105
+                {% if review.has_votes %}
106
+                    <p>{{ review.num_up_votes }} customer{{ review.num_up_votes|pluralize }} agreed.</p>
107
+                {% endif %}
108
+            </div>
109
+        {% endfor %}
110
+        <p><a href="{% url products:review-list item.item_class.slug item.slug item.id %}">See all reviews</a>.</p>
111
+    </div>
112
+{% endif %}
113
+{% endwith %}
111 114
 
112 115
 {% endblock product_review %}
113 116
 

+ 1
- 1
oscar/templates/oscar/reviews/add_review.html Näytä tiedosto

@@ -3,7 +3,7 @@
3 3
 {% block product_review %}
4 4
 
5 5
     <h4>Leave a product review</h4>
6
-    <form method="post" action="{% url oscar-product-review-add item.item_class.slug item.slug item.id %}">
6
+    <form method="post" action=".">
7 7
         {% csrf_token %}
8 8
         {{ form.as_p }}
9 9
         <input type="submit" value="Submit" /> or 

Loading…
Peruuta
Tallenna