예제 #1
0
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))
예제 #2
0
파일: views.py 프로젝트: shinriyo/bucho
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))