def add_data(request, pk):
shop = get_object_or_404(Shop, pk=pk, user=request.user)
# Hack to supply additional argument to the AddProdutsShopForm
AddProductsShopFormSet = formset_factory(AddProductsShopForm,
formset=AddProductsShopBaseFormSet)
AddProductsShopFormSet.form = staticmethod(curry(AddProductsShopForm, shop=shop))
formset = AddProductsShopFormSet(request.POST or None)
if request.method == 'POST':
# Set csv file, we later access it in clean method
try:
formset.csv_file = request.session.pop(AddProductsShopForm.CSV_FILE_NAME)
formset.csv_file.shop = shop
except KeyError:
pass
if formset.is_valid():
images = []
data_list = []
for form in formset:
data_list.append(form.cleaned_data)
try:
images.append(request.session.pop('product_%d' % form.cleaned_data['order']))
except KeyError:
pass
response = shop.api.add_product_data(data_list, images)
return HttpResponse(simplejson.dumps({'response': response, 'result': 'success'}))
else:
response = {}
for form in formset:
order = form.data[form.prefix + '-order'][0]
for k, v in form.errors.items():
response['form-%s-%s' % (order, k)] = v
return HttpResponse(simplejson.dumps({'response': response, 'result': 'error'}))
return direct_to_template(request, template="partial/shop_add_products.html",
extra_context={'formset': formset, 'shop': shop})
评论列表
文章目录