def get_work_order_question(work_order_id, question_slug):
    try:
        work_order = data_api_client.get_work_order(work_order_id)['workOrder']
    except APIError as e:
        abort(e.status_code)

    brief = data_api_client.get_brief(work_order['briefId'])["briefs"]
    if not is_brief_associated_with_user(
            brief, current_user.id
    ):
        abort(404)

    if questions.get(question_slug, None) is None:
        abort(404)

    form = FormFactory(question_slug)
    value = work_order.get(question_slug, None)

    if value is not None:
        if questions[question_slug].get('type') == 'address':
            form.abn.data = value['abn']
            form.contact.data = value['contact']
            form.name.data = value['name']
        else:
            form[question_slug].data = value

    return render_template_with_csrf(
        'workorder/work-order-question.html',
        work_order_id=work_order_id,
        question_slug=question_slug,
        form=form
    )
def get_work_order(work_order_id):
    try:
        work_order = data_api_client.get_work_order(work_order_id)['workOrder']
    except APIError as e:
        abort(e.status_code)

    brief = data_api_client.get_brief(work_order['briefId'])["briefs"]
    if not is_brief_associated_with_user(
            brief, current_user.id
    ):
        abort(404)

    return render_template_with_csrf('workorder/work-order-instruction-list.html',
                                     work_order=work_order,
                                     questions=questions)
def update_work_order_question(work_order_id, question_slug):
    try:
        work_order = data_api_client.get_work_order(work_order_id)['workOrder']
    except APIError as e:
        abort(e.status_code)

    brief = data_api_client.get_brief(work_order['briefId'])["briefs"]
    if not is_brief_associated_with_user(brief, current_user.id):
        abort(404)

    if questions.get(question_slug, None) is None:
        abort(404)

    form = FormFactory(question_slug, formdata=request.form)

    if not form.validate():
        return render_template_with_csrf(
            'workorder/work-order-question.html',
            status_code=400,
            work_order_id=work_order_id,
            question_slug=question_slug,
            form=form
        )

    if questions[question_slug].get("type") == 'address':
        data = {question_slug: {
            'abn': request.form['abn'],
            'name': request.form['name'],
            'contact': request.form['contact']}
        }
    else:
        data = {question_slug: request.form[question_slug]}

    data_api_client.update_work_order(work_order_id, data)

    return redirect(
        url_for(
            'buyers.get_work_order',
            work_order_id=work_order_id,
        )
    )
Beispiel #4
0
 def test_is_brief_associated_with_user(self):
     brief = api_stubs.brief(user_id=123)['briefs']
     assert buyers_helpers.is_brief_associated_with_user(brief, 123) is True
     assert buyers_helpers.is_brief_associated_with_user(brief,
                                                         234) is False