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} )
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())
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)
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)