Example #1
0
def customer_import(request):
    """
    批量导入
    :param request:
    :return:
    """

    if request.method == 'GET':
        return render(request, 'customer_import.html')

    context = {'status': True, 'msg': '导入成功'}
    try:
        customer_excel = request.FILES.get('customer_excel')
        """
        打开上传的Excel文件,并读取内容
        注:打开本地文件时,可以使用:workbook = xlrd.open_workbook(filename='本地文件路径.xlsx')
        """
        workbook = xlrd.open_workbook(file_contents=customer_excel.file.read())

        # sheet = workbook.sheet_by_name('工作表1')
        sheet = workbook.sheet_by_index(0)
        row_map = {
            0: {
                'text': '客户姓名',
                'name': 'name'
            },
            1: {
                'text': '年龄',
                'name': 'age'
            },
            2: {
                'text': '邮箱',
                'name': 'email'
            },
            3: {
                'text': '公司',
                'name': 'company'
            },
        }
        object_list = []
        for row_num in range(1, sheet.nrows):
            row = sheet.row(row_num)
            row_dict = {}
            for col_num, name_text in row_map.items():
                row_dict[name_text['name']] = row[col_num].value
            object_list.append(models.Customer(**row_dict))

        models.Customer.objects.bulk_create(object_list, batch_size=20)
    except Exception as e:
        context['status'] = False
        context['msg'] = '导入失败'

    return render(request, 'customer_import.html', context)
Example #2
0
def upload_excel_file(request):  # 上传文件
    if request.method == "GET":
        return render(request, 'upload_excel_file.html')

    user = request.POST.get('user')
    file_upload = request.FILES.get('customer_excel')  # 获取excel文件对象
    # 判断上传的文件后缀
    if file_upload.name.rsplit('.', maxsplit=1)[1] not in ['xls', 'xlsx']:
        return HttpResponse('上传失败,只能上传xls格式')
    # 生成唯一的文件名
    file_name = str(uuid.uuid4()) + '.' + file_upload.name.rsplit(
        '.', maxsplit=1)[1]
    # 拼接路径
    img_file_path = os.path.join('static', 'files', file_name)
    print(img_file_path)

    with open(img_file_path, 'wb') as f:  # 写入文件
        for line in file_upload.chunks():
            f.write(line)

    # 拼接excel文件的绝对路径
    file_path = os.path.join(settings.BASE_DIR, img_file_path)
    print(file_path)
    # 打开excel表
    data = xlrd.open_workbook(file_path)
    table = data.sheet_by_index(0)  # 读取第一个sheet
    nrows = table.nrows  # 获得总行数
    date_list = []  # 定义空列表,用来批量插入
    try:
        for i in range(1, nrows):  # 读取每一行数据
            rows = table.row_values(i)  # 行的数据放在数组里
            # 生成对象
            obj_list = models.Customer(
                name=rows[0],
                age=rows[1],
                email=rows[2],
                company=rows[3],
            )
            # 追加到列表中
            date_list.append(obj_list)

        # 使用bulk_create批量插入
        models.Customer.objects.bulk_create(date_list)

        # 删除上传的excel文件
        os.remove(file_path)

    except Exception as e:
        return HttpResponse('批量添加失败{}'.format(e))

    return redirect('/index/')  # 跳转首页
Example #3
0
def add(request):
    if request.method == 'POST':
        print("this is post")
        if request.POST['add_action'] == 'add_userprofile':
            print(request.POST)
            user_obj = User.objects.get(pk=int(request.POST['user']))
            print(user_obj, type(user_obj))
            form_data = {
                'user': request.POST['user'],
                'name': request.POST['name']
            }
            request_form = myforms.UserProfileForm(form_data)
            if request_form.is_valid():
                add_data = {'user': user_obj, 'name': request.POST['name']}
                new_profile = models.UserProfile(**add_data)
                new_profile.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_course':
            print(request.POST)
            form_data = {
                'name': request.POST['name'],
                'price': request.POST['price'],
                'online_price': request.POST['online_price'],
                'brief': request.POST['brief'],
            }
            request_form = myforms.CourseForm(form_data)
            if request_form.is_valid():
                new_profile = models.Course(**form_data)
                new_profile.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_classlist':
            # teach=request.POST.getlist('teachers')
            # print(teach,type(teach))
            form_data = {
                'course': request.POST['course'],
                'course_type': request.POST['course_type'],
                'semester': request.POST['semester'],
                'start_date_month': request.POST['start_date_month'],
                'start_date_day': request.POST['start_date_day'],
                'start_date_year': request.POST['start_date_year'],
                'graduate_date_year': request.POST['graduate_date_year'],
                'graduate_date_month': request.POST['graduate_date_month'],
                'graduate_date_day': request.POST['graduate_date_day'],
                'teachers': request.POST.getlist('teachers'),
            }
            request_form = myforms.ClassListForm(form_data)
            if request_form.is_valid():
                course_obj = models.Course.objects.get(
                    pk=int(request.POST['course']))
                teachers_obj = []
                for item in request.POST.getlist('teachers'):
                    teacher_obj = models.UserProfile.objects.get(pk=int(item))
                    teachers_obj.append(teacher_obj)
                if int(request.POST['graduate_date_year']) == 0 or int(
                        request.POST['graduate_date_month']) == 0 or int(
                            request.POST['graduate_date_day']) == 0:
                    graduate_date_value = None
                else:
                    graduate_date_value = "%s-%s-%s" % (
                        int(request.POST['graduate_date_year']),
                        int(request.POST['graduate_date_month']),
                        int(request.POST['graduate_date_day']))

                add_data = {
                    'course':
                    course_obj,
                    'course_type':
                    request.POST['course_type'],
                    'semester':
                    int(request.POST['semester']),
                    'start_date':
                    "%s-%s-%s" % (int(request.POST['start_date_year']),
                                  int(request.POST['start_date_month']),
                                  int(request.POST['start_date_day'])),
                    'graduate_date':
                    graduate_date_value,
                }
                new_classlist = models.ClassList(**add_data)
                new_classlist.save()
                classlist_obj = models.ClassList.objects.filter(
                    course=add_data['course'],
                    course_type=add_data['course_type'],
                    semester=add_data['semester']).first()
                for teacher_obj in teachers_obj:
                    classlist_obj.teachers.add(teacher_obj)
                classlist_obj.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_customer':
            print("customer_data", request.POST)
            form_data = {
                'qq': request.POST['qq'],
                'name': request.POST['name'],
                'phone': int(request.POST['phone']),
                'stu_id': request.POST['stu_id'],
                'source': request.POST['source'],
                'referral_from': request.POST['referral_from'],  # 可能需要修改
                'course': request.POST['course'],
                'class_type': request.POST['class_type'],
                'customer_note': request.POST['customer_note'],
                'status': request.POST['status'],
                'consultant': request.POST['consultant'],
                #'date':request.POST['date'],   auto_add 属性后前台页面不显示这个字段
                'class_list': request.POST.getlist('class_list'),
            }
            request_form = myforms.CustomerForm(form_data)
            if request_form.is_valid():

                if request.POST['referral_from'] == '':
                    referral_num = 0
                else:
                    referral_num = int(request.POST['referral_from'])
                referral_obj = models.Customer.objects.filter(
                    pk=referral_num).first()
                course_obj = models.Course.objects.get(
                    pk=int(request.POST['course']))
                consultant_obj = models.UserProfile.objects.get(
                    pk=int(request.POST['consultant']))
                class_list_obj = []
                for item in request.POST.getlist('class_list'):
                    clist_obj = models.ClassList.objects.get(pk=int(item))
                    class_list_obj.append(clist_obj)

                add_data = {
                    'qq': request.POST['qq'],
                    'name': request.POST['name'],
                    'phone': int(request.POST['phone']),
                    'stu_id': request.POST['stu_id'],
                    'source': request.POST['source'],
                    'referral_from': referral_obj,  # 可能需要修改
                    'course': course_obj,
                    'class_type': request.POST['class_type'],
                    'customer_note': request.POST['customer_note'],
                    'status': request.POST['status'],
                    'consultant': consultant_obj,
                }
                new_customer = models.Customer(**add_data)
                new_customer.save()
                customer_obj = models.Customer.objects.filter(
                    qq=add_data['qq']).first()
                for clist_obj in class_list_obj:
                    customer_obj.class_list.add(clist_obj)
                customer_obj.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_consultrecord':
            print("consultant_data", request.POST)
            form_data = {
                'customer': request.POST['customer'],
                'note': request.POST['note'],
                'status': request.POST['status'],
                'consultant': request.POST['consultant'],
                #'date':request.POST['date'],   auto_add 属性后前台页面不显示这个字段
            }
            request_form = myforms.ConsultRecordForm(form_data)
            if request_form.is_valid():

                customer_obj = models.Customer.objects.filter(
                    pk=int(request.POST['customer'])).first()
                consultant_obj = models.UserProfile.objects.get(
                    pk=int(request.POST['consultant']))

                add_data = {
                    'customer': customer_obj,
                    'note': request.POST['note'],
                    'status': request.POST['status'],
                    'consultant': consultant_obj,
                }
                new_consultrecord = models.ConsultRecord(**add_data)
                new_consultrecord.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_courserecord':
            print("courserecord_data", request.POST)
            form_data = {
                'course': request.POST['course'],
                'day_num': int(request.POST['day_num']),
                'teacher': request.POST['teacher']
            }
            request_form = myforms.CourseRecordForm(form_data)
            if request_form.is_valid():

                course_obj = models.ClassList.objects.filter(
                    pk=int(request.POST['course'])).first()
                teacher_obj = models.UserProfile.objects.get(
                    pk=int(request.POST['teacher']))

                add_data = {
                    'course': course_obj,
                    'day_num': int(request.POST['day_num']),
                    'teacher': teacher_obj
                }
                new_courserecord = models.CourseRecord(**add_data)
                new_courserecord.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
        elif request.POST['add_action'] == 'add_studyrecord':
            print("studyrecord_data", request.POST)
            form_data = {
                'course_record': request.POST['course_record'],
                'student': request.POST['student'],
                'record': request.POST['record'],
                'score': int(request.POST['score']),
                'note': request.POST['note'],
            }
            request_form = myforms.StudyRecordForm(form_data)
            if request_form.is_valid():

                course_record_obj = models.CourseRecord.objects.filter(
                    pk=int(request.POST['course_record'])).first()
                student_obj = models.Customer.objects.get(
                    pk=int(request.POST['student']))

                add_data = {
                    'course_record': course_record_obj,
                    'student': student_obj,
                    'record': request.POST['record'],
                    'score': int(request.POST['score']),
                    'note': request.POST['note'],
                }
                new_studyrecord = models.StudyRecord(**add_data)
                new_studyrecord.save()
                return HttpResponseRedirect('/index')
            else:
                print(request_form.errors)
                return render(
                    request, 'error.html', {
                        'errors': request_form.errors,
                        'group': request.user.groups.all()[0].name
                    })
    else:
        print("this is get")
        if request.GET['action'] == 'add_userprofile':
            profiles = myforms.UserProfileForm()
            return render(
                request, "add.html", {
                    'addprofiles': profiles,
                    't_user_profile': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_course':
            course = myforms.CourseForm()
            return render(
                request, "add.html", {
                    'addcourses': course,
                    't_course': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_classlist':
            classlists = myforms.ClassListForm()
            return render(
                request, "add.html", {
                    'addclasslist': classlists,
                    't_classlist': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_customer':
            customers = myforms.CustomerForm()
            return render(
                request, "add.html", {
                    'addcustomer': customers,
                    't_customer': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_consultrecord':
            consultrecords = myforms.ConsultRecordForm()
            return render(
                request, "add.html", {
                    'addconsultrecord': consultrecords,
                    't_consultrecord': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_courserecord':
            courserecords = myforms.CourseRecordForm()
            return render(
                request, "add.html", {
                    'addcourserecord': courserecords,
                    't_courserecord': 'true',
                    'group': request.user.groups.all()[0].name
                })
        elif request.GET['action'] == 'add_studyrecord':
            studyrecords = myforms.StudyRecordForm()
            return render(
                request, "add.html", {
                    'addstudyrecord': studyrecords,
                    't_studyrecord': 'true',
                    'group': request.user.groups.all()[0].name
                })
Example #4
0
 import django
 django.setup()
 from app01 import models
 import random
 course_choices = (
     ('LinuxL', 'Linux中高级'),
     ('PythonFullStack', 'Python高级全栈开发'),
 )
 sex_type = (("male", "男"), ("female", "女"))
 source_type = (
     ('qq', "qq群"),
     ('referral', "内部转介绍"),
     ('website', "官方网站"),
     ('baidu_ads', "百度推广"),
     ('office_direct', "直接上门"),
     ('WoM', "口碑"),
     ('public_class', "公开课"),
     ('website_luffy', "路飞官网"),
     ('others', "其它"),
 )
 obj_list = []
 for i in range(1000):
     obj_list.append(
         models.Customer(
             qq=F"{random.randint(1000000000,9999999999)}",
             name=f"liye{i}",
             sex=random.choice(sex_type)[0],
             source=random.choice(source_type)[0],
             course=random.choice(course_choices[0]),
         ))
 models.Customer.objects.bulk_create(obj_list)
Example #5
0
import os

if __name__ == '__main__':
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "crm01.settings")
    import django

    django.setup()
    import random
    from app01 import models

    customer_objs = []
    for i in range(1, 101):
        customer_obj = models.Customer(
            qq=''.join(random.choices([str(n) for n in range(1, 10)], k=11)),
            name=f'客户{i}',
            sex=random.choice(('male', 'female')),
            source=random.choice(
                ('qq', 'referral', 'website', 'baidu_ads', 'office_direct',
                 'WoM', 'public_class', 'website_luffy', 'others')),
            course=random.sample(('LinuxL', 'PythonFullStack'),
                                 k=random.randint(1, 2)),
            class_type=random.choice(('fulltime', 'online', 'weekend')),
        )
        customer_objs.append(customer_obj)
    models.Customer.objects.bulk_create(customer_objs)

    # print(''.join(random.choices([str(n) for n in range(1,10)],k=11)))

    print(random.sample(('LinuxL', 'PythonFullStack'), k=random.randint(1, 2)))
Example #6
0
import os

if __name__ == '__main__':
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoCRM.settings")
    import django
    django.setup()

    from app01 import models
    c_list = []
    for i in range(521):
        obj = models.Customer(
            qq= f'{i+1}{i+2}{i+3}',
            name= f'name{i}',
            course=['LinuxL',]
        )
        c_list.append(obj)
    models.Customer.objects.bulk_create(c_list)