- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
class UserProductlistView(ListView):
template_name = 'productlist/userproductlistitem_list.html'
model = UserProductListItem
paginate_by = 20
list = None
formset = modelformset_factory(UserProductListItem, ProductlistItemForm, extra=0, max_num=20)
deleteform = None
def get_queryset(self):
self.list = get_object_or_404(UserProductList, slug=self.kwargs.get('slug'))
return UserProductListItem.objects.filter(productlist=self.list, productlist__user=self.request.user)
def post(self, request, **kwargs):
self.list = get_object_or_404(UserProductList, slug=self.kwargs.get('slug'))
if request.POST.get('deletelist'):
self.deleteform = ProductlistDeleteForm(request.POST, instance=self.list)
if self.deleteform.is_valid():
self.deleteform.instance.delete()
messages.success(request, u'Список "%s" удален' % (self.list,))
return redirect('userproductlist_list')
if request.POST.get('subscribelist'):
self.list.subscribe = not self.list.subscribe
self.list.save()
messages.success(request, u'Настройки списка "%s" изменены' % (self.list,))
return redirect('userproductlist_list')
return self.get(request, **kwargs)
Получаем список товаров юзера по slug в URL, не добавляя в запрос текущего юзера. Действительно, зачем? Ведь его можно добавить при получении товаров списка.
В результате: любой может открыть список любого человека, зная URL этого списка, увидеть, что там нет товаров, порадоваться этому, и удалить список.
3_14dar 21.07.2015 16:20 # +3