def select_single(request):
    if request.is_ajax():
        operator = Operators.login_required(request)
        if operator is None:
            # Operators.set_redirect_field_name(request, request.path)
            # return redirect(reverse("operators_signin"))
            return HttpResponse('signin', content_type='text/plain')
        else:
            auth_permissions = Operators.get_auth_permissions(operator)
            action = request.POST['action']
            id = request.POST['id']
            if action != '' and id is not None:
                if action == 'delete':
                    if settings.ACCESS_PERMISSION_ORDER_UPDATE in auth_permissions.values(
                    ):
                        try:
                            model = Order_Items.objects.get(order_item_id=id)
                            order = Orders.objects.get(
                                order_id=model.orders_order_id)

                            Order_Items.delete_order_item(
                                request, model, operator)

                            Orders.update_grand_total(request, order, operator)

                            messages.success(request,
                                             'Item removed successfully.')
                        except (TypeError, ValueError, OverflowError,
                                Order_Items.DoesNotExist):
                            return HttpResponseBadRequest(
                                'Bad Request', content_type='text/plain')
                    else:
                        return HttpResponseForbidden('Forbidden',
                                                     content_type='text/plain')
                return HttpResponse('success', content_type='text/plain')
            else:
                return HttpResponseBadRequest('Bad Request',
                                              content_type='text/plain')
    else:
        return HttpResponseForbidden('Forbidden', content_type='text/plain')
def create(request, order_id):
    template_url = 'order-items/create.html'
    operator = Operators.login_required(request)
    if operator is None:
        Operators.set_redirect_field_name(request, request.path)
        return redirect(reverse("operators_signin"))
    else:
        auth_permissions = Operators.get_auth_permissions(operator)
        if settings.ACCESS_PERMISSION_ORDER_CREATE in auth_permissions.values(
        ):
            # try:
            order = Orders.objects.get(order_id=order_id)
            if request.method == 'POST':

                form = OrderItemCreateForm(request.POST)
                # noinspection PyArgumentList
                if form.is_valid():
                    model = Order_Items()
                    model.orders_order_id = order_id

                    title = 'unknown'
                    type = form.cleaned_data['type']
                    model.order_item_type_id = 0
                    if type == 'service':
                        title = form.cleaned_data['title_service']
                    if type == 'goods':
                        type_id = form.cleaned_data['title_goods']
                        model.order_item_type_id = type_id
                        product = Products.objects.get(product_id=type_id)
                        title = product.product_title
                    if type == 'asset':
                        type_id = form.cleaned_data['title_asset']
                        model.order_item_type_id = type_id
                        product = Products.objects.get(product_id=type_id)
                        title = product.product_title

                    model.order_item_type = type
                    model.order_item_title = title
                    model.order_item_sub_title = ''
                    model.order_item_quantity_ordered = form.cleaned_data[
                        'quantity_ordered']
                    model.order_item_quantity_unit = form.cleaned_data[
                        'quantity_unit']
                    model.order_item_unit_price = form.cleaned_data[
                        'unit_price']
                    model.order_item_total_price = model.order_item_quantity_ordered * model.order_item_unit_price
                    model.order_item_usaid_approval = 0

                    model.order_item_created_at = Utils.get_current_datetime_utc(
                    )
                    model.order_item_created_id = operator.operator_id
                    model.order_item_created_by = operator.operator_name
                    model.order_item_created_department = operator.operator_department
                    model.order_item_created_role = operator.operator_role

                    model.order_item_updated_at = Utils.get_current_datetime_utc(
                    )
                    model.order_item_updated_id = operator.operator_id
                    model.order_item_updated_by = operator.operator_name
                    model.order_item_updated_department = operator.operator_department
                    model.order_item_updated_role = operator.operator_role

                    model.order_item_received_at = settings.APP_CONSTANT_DEFAULT_DATETIME_VALUE
                    model.order_item_received_id = ''
                    model.order_item_received_by = ''
                    model.order_item_received_department = ''
                    model.order_item_received_role = ''

                    model.order_item_status = Orders.STATUS_PENDING
                    # noinspection PyCallByClass,PyTypeChecker
                    model.save('Created')

                    Orders.update_grand_total(request, order, operator)

                    messages.success(request, 'Item added successfully.')
                    return redirect(reverse("orders_view", args=[order_id]))
                else:
                    error_string = ' '.join([
                        ' '.join(x for x in l)
                        for l in list(form.errors.values())
                    ])
                    messages.error(request, '' + error_string)
                    return redirect(reverse("orders_view", args=[order_id]))

            else:
                form = OrderItemCreateForm(
                    initial={
                        'order_id': order.order_code,
                        'title': '',
                        'duration': 0,
                        'unit_price': 0,
                        'currency': Order_Items.CURRENCY_RWF,
                        'quantity_ordered': 0,
                        'quantity_unit': '',
                    })

            return render(
                request, template_url, {
                    'section':
                    settings.BACKEND_SECTION_PROCUREMENT_ALL_REQUESTS,
                    'title': Order_Items.TITLE,
                    'name': Order_Items.NAME,
                    'operator': operator,
                    'auth_permissions': auth_permissions,
                    'form': form,
                })
        # except(TypeError, ValueError, OverflowError, Orders.DoesNotExist, Order_Items.DoesNotExist):
        #     return HttpResponseNotFound('Not Found', content_type='text/plain')
        else:
            return HttpResponseForbidden('Forbidden',
                                         content_type='text/plain')