ソースを参照

made product reviews work with my URLs

master
Andrew Ingram 14年前
コミット
553d3b4ee2

+ 1
- 0
examples/vanilla/settings.py ファイルの表示

191
     'oscar.apps.shipping',
191
     'oscar.apps.shipping',
192
     'oscar.apps.order_management',
192
     'oscar.apps.order_management',
193
     'oscar.apps.product',
193
     'oscar.apps.product',
194
+    'oscar.apps.product.reviews',
194
     'oscar.apps.basket',
195
     'oscar.apps.basket',
195
     'oscar.apps.payment',
196
     'oscar.apps.payment',
196
     'oscar.apps.payment.datacash',
197
     'oscar.apps.payment.datacash',

+ 1
- 0
oscar/apps/product/__init__.py ファイルの表示

14
             url(r'^$', self.list_view.as_view(), name='list'),
14
             url(r'^$', self.list_view.as_view(), name='list'),
15
             url(r'^(?P<item_class_slug>[\w-]+)/$', self.class_list_view.as_view(), name='class-list'),            
15
             url(r'^(?P<item_class_slug>[\w-]+)/$', self.class_list_view.as_view(), name='class-list'),            
16
             url(r'^(?P<item_class_slug>[\w-]+)/(?P<item_slug>[\w-]*)-(?P<pk>\d+)/$', self.detail_view.as_view(), name='detail'),
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
         return urlpatterns
19
         return urlpatterns
19
 
20
 

+ 2
- 2
oscar/apps/product/reviews/abstract_models.py ファイルの表示

24
     """
24
     """
25
     
25
     
26
     # Note we keep the review even if the product is deleted
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
     SCORE_CHOICES = tuple([(x, x) for x in range(0, 6)])
29
     SCORE_CHOICES = tuple([(x, x) for x in range(0, 6)])
30
     score = models.SmallIntegerField(_("Score"), choices=SCORE_CHOICES)
30
     score = models.SmallIntegerField(_("Score"), choices=SCORE_CHOICES)
63
 
63
 
64
     @models.permalink
64
     @models.permalink
65
     def get_absolute_url(self):
65
     def get_absolute_url(self):
66
-        return ('oscar-product-review', (), {
66
+        return ('products:review-detail', (), {
67
             'item_class_slug': self.product.get_item_class().slug,
67
             'item_class_slug': self.product.get_item_class().slug,
68
             'item_slug': self.product.slug,
68
             'item_slug': self.product.slug,
69
             'item_id': self.product.id,
69
             'item_id': self.product.id,

+ 3
- 3
oscar/apps/product/reviews/urls.py ファイルの表示

6
                                         'ProductReviewListView'], locals())  
6
                                         'ProductReviewListView'], locals())  
7
 
7
 
8
 urlpatterns = patterns('oscar.product.reviews.views',
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 ファイルの表示

64
 
64
 
65
 {% if item.stockrecord %}
65
 {% if item.stockrecord %}
66
 
66
 
67
-{% basket_form item as form %}
67
+{% basket_form item as basket_form %}
68
 
68
 
69
 <form action="{% url oscar-basket %}" method="post">
69
 <form action="{% url oscar-basket %}" method="post">
70
     {% csrf_token %}
70
     {% csrf_token %}
71
-    {{ form.as_p }}
71
+    {{ basket_form.as_p }}
72
     <input type="submit" value="Add to basket" />
72
     <input type="submit" value="Add to basket" />
73
 </form>
73
 </form>
74
 {% endif %}
74
 {% endif %}
75
 
75
 
76
 {% block product_review %}
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
 {% endblock product_review %}
115
 {% endblock product_review %}
113
 
116
 

+ 1
- 1
oscar/templates/oscar/reviews/add_review.html ファイルの表示

3
 {% block product_review %}
3
 {% block product_review %}
4
 
4
 
5
     <h4>Leave a product review</h4>
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
         {% csrf_token %}
7
         {% csrf_token %}
8
         {{ form.as_p }}
8
         {{ form.as_p }}
9
         <input type="submit" value="Submit" /> or 
9
         <input type="submit" value="Submit" /> or 

読み込み中…
キャンセル
保存