コード例 #1
0
def history_file_save(request):
    """ Сохранение данных в базу"""
    if request.POST:
        if 'excel_file_data' not in request.session:
            error_message = 'Данные файла отсуствуют'
            return JsonResponse({'message': error_message}, status=400)
        user = request.user
        upload_save = UploadHistory(user_info=user.last_name + ' ' +
                                    user.first_name,
                                    file_name=request.FILES["file"],
                                    file_path=request.FILES["file"])
        History.objects.all().delete()
        sort = 1
        result_data = json.loads(request.session['excel_file_data'])
        excel_headers_list = json.loads(request.session['excel_headers'])
        for data in result_data:
            check_history = History.objects.filter(
                sa_code=data[excel_headers_list.index('SA_code')]).exists()
            if not check_history:
                save_history = History(
                    branch_name=data[excel_headers_list.index('Branch_Name')],
                    sa_code=data[excel_headers_list.index('SA_code')].lower(),
                    full_name=data[excel_headers_list.index('SA_Name')],
                    kpi_val=json.dumps(data[3]),
                    kpi_key=json.dumps(data[4]),
                    progress_val=json.dumps(data[5]),
                    progress_key=json.dumps(data[6]),
                    sort_id=sort)
                save_history.save()
                sort += 1
            else:
                error_message = 'У вас дублирующий SA код {} в файле. Исправьте или удалите запись'.format(
                    data[excel_headers_list.index('SA_code')])
                return JsonResponse(
                    {
                        'message': error_message,
                        'title': 'Ошибка',
                        'status': 'error'
                    },
                    status=200)
        upload_save.save()
        return JsonResponse(
            {
                'message': 'Данные успешно сохранены',
                'title': 'Успешно',
                'status': 'success'
            },
            status=200)
    else:
        return JsonResponse(
            {
                'message': 'Неподдерживаемый метод get',
                'title': 'Ошибка',
                'status': 'error'
            },
            status=400)