Как я могу создать подробный вид для нумерации страниц - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть приложение, в котором я тестирую принтер и прохожу серию тестовых шагов. Тестовые шаги, я использую пагинацию 1 шаг за раз. Поэтому вы нажимаете «Далее», чтобы перейти к следующему шагу. Проблема в том, что я не создал подробный вид. У меня просто есть представление под названием шаг теста, по которому я могу щелкнуть рядом, чтобы просмотреть весь набор запросов. Проблема в том, что я не могу щелкнуть, чтобы перейти к одному конкретному тесту, или приостановить тест, не возвращаясь к первому шагу. Я попытался создать подробный вид и разделить вид вверх. Но я не мог понять, как сделать каждый шаг детализированным представлением с нумерацией страниц.

Это подробный вид теста и страница. отсюда я нажимаю на запуск теста, который приводит меня к разбивке на страницы в представлении ниже.

def test_detail(request, id):
    test_instance = get_object_or_404(Test, id=id)
    steps = test_instance.teststep_set.all()
    printer_status_check = printer_check(test_instance) 
    status = printer_status_check['status']
    context = {
        "test": test_instance,
        "steps": steps,
        'printer_status': status
    }

    return render(request, "testing/test_detail.html", context)

Так что это представление, которое контролирует все функции на всех этапах. Мне приходится использовать HTML-формы, потому что я не мог понять, как еще передать форму на следующий шаг. Также мне приходится использовать разные формы на разных шагах, потому что я бью разные конечные точки, используя Ajax или вообще не использую конечные точки.

Итак, проблема со страницы подробностей теста, я вижу все шаги с результатами. Но я не могу щелкнуть по шагу и перейти к этому конкретному шагу в разбивке на страницы.

Так что у меня нет детализации шага. Когда я попытался, я не мог понять, как нажать кнопку «Далее», и это вызвало следующий подробный вид для шага.

def test_step(request, id):
    test_instance = get_object_or_404(Test, id=id)
    steps = test_instance.teststep_set.all().order_by('id')

    paginator = Paginator(steps, 1)
    page_request_var = 'page'   
    page = request.GET.get(page_request_var)

    try:
        paginated_queryset = paginator.page(page)
    except PageNotAnInteger:
        paginated_queryset = paginator.page(1)
    except EmptyPage:
        paginated_queryset = paginator.page(paginator.num_pages)

    if request.is_ajax():
        step = paginated_queryset[0]
        if step.action == 'PrintRequest':   
            response = print_card(test_instance)
            print(response)
            ExtraResponseData = response['ExtraResponseData']
            JobID = response['JobID']
            StatusMessage = response['StatusMessage']
            success = response['Success']
            JobComplete = response["JobComplete"]
            Message = response["Message"]
            PrintStatus = response["PrintStatus"]
            step_notes = request.POST.get("step_notes")
        #-----------------------------
            update_step = TestStep.objects.get(id=step.id)
            data = {
                "ExtraResponseData": ExtraResponseData,
                "JobID": JobID,
                "StatusMessage": StatusMessage,
                "success": success,
                "JobComplete": JobComplete,
                "Message": Message,
                "PrintStatus": PrintStatus
                }   
            update_step.value = Message
            update_step.response_body = data
            update_step.notes = step_notes
            pass_or_fail = evaluate(Message, step)
            update_step.passed = pass_or_fail
            update_step.save()
            return JsonResponse(data)

        else:
            response = printer_check(test_instance)
            status = response['status']
            code = response['code']
            body = response['body']
            step_notes = request.POST.get("step_notes")
        #-----------------------------
            update_step = TestStep.objects.get(id=step.id)
            update_step.value = status
            update_step.response_code = code
            update_step.response_body = body
            update_step.notes = step_notes
            pass_or_fail = evaluate(status, step)
            update_step.passed = pass_or_fail
            update_step.save()
            data = {
                "status": status,
                "code": code,
            }   
            return JsonResponse(data)
    else:
        status = None
        code = None
        body = None
        success = None
        if request.method == 'POST':
            step = paginated_queryset[0]
            update_step = TestStep.objects.get(id=step.id)
            step_notes = request.POST.get("step_notes")
            update_step.notes = step_notes
            if request.POST.get("NO"):
                update_step.value = "No"
                update_step.passed = False
            elif request.POST.get("YES"):
                update_step.value = "Yes"
                update_step.passed = True
            else:
                update_step.value = "OK"
                update_step.passed = True
            update_step.save()
        #-----------------------------

    context = {
        "test": test_instance,
        "steps": steps,
        "qs": paginated_queryset,
        "page_request_var": page_request_var,
        "status": status,
        "code": code,
        "body": body,
        "success": success
    }

    return render(request, "testing/test_steps.html", context)

Так в шаблоне шагов. Я нажимаю здесь, и это поднимает следующий шаг. Ну, я хочу, чтобы этот шаг был подробным представлением или каким-то другим способом добраться до этого шага.

<section class="section-padding">
    <div class="container-fluid">
        {% for step in qs %}
                {% if step.test_step_name == 'Attempt Print' %}
                        <a class="pull-right btn btn-primary" href="{{ test.get_absolute_url }}">Finish Test</a>
                {% else %}
                        <a class="pull-right btn btn-default" href="{{ test.get_absolute_url }}">Pause Test</a>
                {% endif %}
        {% endfor %}
            {% for step in qs %}
                    <div class="step-container">
                        <div class="step-description">
                                <h1>{{ step.test_step_name }}</h1>
                                <p>{{ step.description }}</p>

                        </div>
                                {% if step.user_defined == False %}
                                        <form id="{% if step.ajax == True %}step_form{% endif %}" action="" method="POST">
                                                {% csrf_token %}
                                                <input type="submit" value="OK" class="btn btn-primary">
                                                <textarea name="step_notes"rows="4" cols="70" class="step_notes mt-5 form-control" placeholder="Take notes to associate with this test step..."></textarea>
                                        </form>
                                {% else %}
                                <form id="{% if step.ajax == True %}step_form{% endif %}" action="" method="POST">
                                        {% csrf_token %}
                                        <input type="submit" value="No" name="NO" class="btn btn-warning">
                                        <input type="submit" value="Yes" class="btn btn-success" name="YES">
                                        <textarea name="step_notes"rows="4" cols="70" class="step_notes mt-5 form-control" placeholder="Take notes to associate with this test step..."></textarea>
                                </form>
                                {% endif %}
                    </div>
            {% endfor %}

            <div class="ajaxProgress">
                <img src="{% static 'img/30.gif' %}">
            </div>


        </div>
        <nav aria-label="Page navigation example">
                <ul class="pagination pagination-template d-flex justify-content-center">
                  {% comment %} {% if qs.has_previous %}                
                        <li class="page-item">
                          <a href="?{{ page_request_var }}={{ qs.previous_page_number }}" class="page-link">
                             <i class="fa fa-angle-left"></i>
                          </a>
                        </li>
                  {% endif %} {% endcomment %}
                       <li class="page-item">
                          <a href="?{{ page_request_var }}={{ qs.number }}" class="page-link active">
                                  {{ qs.number }}
                          </a>
                      </li>
                  {% if qs.has_next %}
                     <li class="page-item">
                        <a href="?{{ page_request_var }}={{ qs.next_page_number }}" class="page-link"> 
                           Next <i class="fa fa-angle-right"></i>
                        </a>
                     </li>
                  {% endif %}
                </ul>
        </nav>



        <div class="log-container">
                {% for step in steps %} 
                        {% if step.value is not None %}
                                {% if step.passed is True %}
                                <h6 class="step_pass_value"><strong>{{ forloop.counter }}</strong>.<em> {{ step.value }}</em><i class="fas fa-check"></i></h6>
                                {% else %}
                                <h6 class="step_fail_value"><strong>{{ forloop.counter }}</strong>.<em> {{ step.value }}</em><i class="fas fa-times"></i></h6>
                                {% endif %}
                        {% endif %}
                {% endfor %}

                {% if status is not None %}
                        <div> 
                           <h6><strong>{{ status }}</strong><h6>
                        </div>
                {% elif success is not None %}
                        <div> 
                           <h6><strong>{{ success }}</strong><h6>
                        </div>
                {% endif %}


        </div>
    </section>

Я попытался создать подробный вид и создать блок шагов в этом шаблоне, и когда вы нажимаете кнопку «Далее», он пропускает следующий шаг через тег шаблона блока шагов. Хотя я не мог понять, как щелкнуть далее, и он ссылается на шаг в подробном представлении, а не на шаг в разбитом на страницы запросе из представления test_steps.

...