Esempio n. 1
0
def edit(request, customer_id=0, parent_id=0, name=None):
    if request.method == "POST":
        return save(request, customer_id)

    form = CustomerForm(initial={"name": name})
    customer = Customer()
    fields = Property.objects.filter(type="customer")

    if int(customer_id) > 0:
        customer = Customer.objects.get(pk=customer_id)
        form = CustomerForm(instance=customer)

    if parent_id:
        customer.parent = Customer.objects.get(pk=parent_id)
        form = CustomerForm(initial={"parent": parent_id})

    return render(
        request, "customers/form.html", {"id": customer_id, "form": form, "fields": fields, "customer": customer}
    )
Esempio n. 2
0
def upload(request, group='all'):
    """
    Uploads customer data in CSV format
    """
    action = request.path
    form = CustomerUploadForm()

    if request.method == 'POST':
        form = CustomerUploadForm(request.POST, request.FILES)

        if not form.is_valid():
            messages.error(request, form.errors)
            return redirect(index)

        i, df = 0, form.cleaned_data['datafile'].read()

        for l in df.split("\r"):
            row = force_decode(l).strip().split("\t")

            if len(row) < 5:
                messages.error(request, _("Invalid upload data"))
                return redirect(index)

            if form.cleaned_data.get('skip_dups'):
                if Customer.objects.filter(email=row[1]).exists():
                    continue

            c = Customer(name=row[0], email=row[1])
            c.street_address = row[2]
            c.zip_code = row[3]
            c.city = row[4]
            c.notes = row[5]
            c.save()

            if group != 'all':
                g = CustomerGroup.objects.get(slug=group)
                c.groups.add(g)

            i += 1

        messages.success(request, _("%d customer(s) imported") % i)
        return redirect(index, group=group)

    return render(request, "customers/upload.html", locals())
Esempio n. 3
0
def upload(request, group='all'):
    """
    Uploads customer data in CSV format
    """
    action = request.path
    form = CustomerUploadForm()

    if request.method == 'POST':
        form = CustomerUploadForm(request.POST, request.FILES)

        if not form.is_valid():
            messages.error(request, form.errors)
            return redirect(index)

        i, df = 0, form.cleaned_data['datafile'].read()

        for l in df.split("\r"):
            row = force_decode(l).strip().split("\t")

            if len(row) < 5:
                messages.error(request, _("Invalid upload data"))
                return redirect(index)

            if form.cleaned_data.get('skip_dups'):
                if Customer.objects.filter(email=row[1]).exists():
                    continue

            c = Customer(name=row[0], email=row[1])
            c.street_address = row[2]
            c.zip_code = row[3]
            c.city = row[4]
            c.notes = row[5]
            c.save()

            if group != 'all':
                g = CustomerGroup.objects.get(slug=group)
                c.groups.add(g)

            i += 1

        messages.success(request, _("%d customer(s) imported") % i)
        return redirect(index, group=group)

    return render(request, "customers/upload.html", locals())
Esempio n. 4
0
def edit(request, pk=None, parent_id=None, group='all'):

    data = prepare_view(request, group)

    customer = Customer()
    form = CustomerForm(instance=customer)

    if group != 'all':
        g = CustomerGroup.objects.get(slug=group)
        form.initial = {'groups': [g]}

    name = request.GET.get('name')

    if name:
        form = CustomerForm(initial={'name': name})

    if pk is not None:
        customer = Customer.objects.get(pk=pk)
        form = CustomerForm(instance=customer)

    if parent_id is not None:
        customer.parent = Customer.objects.get(pk=parent_id)
        form = CustomerForm(initial={'parent': parent_id})

    if request.method == 'POST':
        props = dict()
        keys = request.POST.getlist('keys')
        values = request.POST.getlist('values')

        form = CustomerForm(request.POST, request.FILES, instance=customer)

        if form.is_valid():
            ContactInfo.objects.filter(customer=customer).delete()

            for k, v in enumerate(values):
                if v != '':
                    key = keys[k]
                    props[key] = v

            if form.is_valid():
                try:
                    customer = form.save()
                except Exception as e:
                    messages.error(request, e)
                    return redirect(edit, group, pk)

                for k, v in props.items():
                    if v != '':
                        ContactInfo.objects.create(key=k, value=v, customer=customer)

                messages.success(request, _('Customer saved'))

                if request.session.get('return_to'):
                    return_to = request.session['return_to']
                    if hasattr(return_to, 'set_customer'):
                        return_to.set_customer(customer)
                    del request.session['return_to']
                    return redirect(return_to)

                return redirect(view, pk=customer.pk, group=group)

    data['form'] = form
    data['customer'] = customer
    data['title'] = customer.name
    data['fields'] = Property.objects.filter(type='customer')

    return render(request, 'customers/form.html', data)
Esempio n. 5
0
def edit(request, pk=None, parent_id=None, group='all'):

    data = prepare_view(request, group)

    customer = Customer()
    form = CustomerForm(instance=customer)

    if group != 'all':
        g = CustomerGroup.objects.get(slug=group)
        form.initial = {'groups': [g]}

    name = request.GET.get('name')

    if name:
        form = CustomerForm(initial={'name': name})

    if pk is not None:
        customer = get_object_or_404(Customer, pk=pk)
        form = CustomerForm(instance=customer)

    if parent_id is not None:
        customer.parent = Customer.objects.get(pk=parent_id)
        form = CustomerForm(initial={'parent': parent_id})

    if request.method == 'POST':
        props = dict()
        keys = request.POST.getlist('keys')
        values = request.POST.getlist('values')

        form = CustomerForm(request.POST, request.FILES, instance=customer)

        if form.is_valid():
            ContactInfo.objects.filter(customer=customer).delete()

            for k, v in enumerate(values):
                if v != '':
                    key = keys[k]
                    props[key] = v

            if form.is_valid():
                try:
                    customer = form.save()
                except Exception as e:
                    messages.error(request, e)
                    return redirect(edit, group, pk)

                for k, v in props.items():
                    if v != '':
                        ContactInfo.objects.create(key=k,
                                                   value=v,
                                                   customer=customer)

                messages.success(request, _('Customer saved'))

                if request.session.get('return_to'):
                    return_to = request.session['return_to']
                    if hasattr(return_to, 'set_customer'):
                        return_to.set_customer(customer)
                    del request.session['return_to']
                    return redirect(return_to)

                return redirect(view, pk=customer.pk, group=group)

    data['form'] = form
    data['customer'] = customer
    data['title'] = customer.name
    data['fields'] = Property.objects.filter(type='customer')

    return render(request, 'customers/form.html', data)