def csv_upload(request): if request.method == 'POST': form = CsvForm(request.POST, request.FILES, provider=request.user.service_provider) if form.is_valid(): # Parse the csv file try: csvf = csv.reader(request.FILES.get('file')) ok = 0 fail = 0 header = False coupons = [] for i, row in enumerate(csvf): if not row: continue # Parse the row using form cf = CouponForm({ 'number': row[0], 'valid': row[1], 'service': form.cleaned_data['service'].id, }, provider=request.user.service_provider) # Check if it is valid if cf.is_valid(): coupon = cf.save(commit=False) coupon.service_provider = request.user.service_provider coupons.append(coupon) ok += 1 else: if i == 0: header = True else: fail += 1 except: # Something went wrong (probably with parsing) messages.error(request, _('CSV parsing failed')) return HttpResponseRedirect(reverse(csv_upload)) else: # Save created coupons for coupon in coupons: coupon.save() # Check ok and fail counters msg_end = u'.' if header: msg_end = u', ' + _('first row skipped') + u'.' if fail == 0: messages.success(request, _('%d coupons successfully parsed and created') % ok + msg_end) elif ok > 0: messages.warning(request, _('%d coupons successfully parsed and created, %d failed') % (ok, fail) + msg_end) else: messages.error(request, _('Coupon parsing failed. Check your format.')) return HttpResponseRedirect(reverse(mycoupons)) else: form = CsvForm(provider=request.user.service_provider) return render_to_response('coupon/csvupload.html', locals(), context_instance=RequestContext(request))
def download_csv(request): form, results = None, [] if request.GET: form = CsvForm(request.POST) if form.is_valid(): cleaned = form.clean() queryset = User.objects.all() prev_date = cleaned['prev_date'] if prev_date: queryset = queryset.filter(date_joined__gte=prev_date) # >= include_jinished = cleaned.get('include_finished', False) # P75見て復習 if finished_date: queryset = queryset.filter(date_joined__lte=finished_date) # <= results = queryset else: form = CsvForm() return render_to_response('search_form.html', dict(form=form, results=results))