コード例 #1
0
    def get(self, request, **kwargs):
        letter_template = get_letter_template(request,
                                              str(kwargs["pk"]))[0]["template"]
        letter_template_case_types = letter_template.pop("case_types") or []
        letter_template_decisions = letter_template.pop("decisions") or []

        letter_template_case_types = [
            case_type["reference"]["key"]
            for case_type in letter_template_case_types
        ]
        letter_template.update(case_types=letter_template_case_types)

        letter_template_decisions = [
            decision["name"]["key"] for decision in letter_template_decisions
        ]
        letter_template.update(decisions=letter_template_decisions)

        case_type_options = [
            Option(option["key"], option["value"])
            for option in get_case_types(request)
        ]
        decision_options = [
            Option(decision["key"], decision["value"])
            for decision in get_decisions(request)[0]
        ]

        return form_page(
            request,
            edit_letter_template(request, letter_template, case_type_options,
                                 decision_options),
            data=letter_template,
        )
コード例 #2
0
def select_case_type(request):
    return Form(
        title=Forms.CASE_TYPES,
        questions=[
            Checkboxes(
                name="case_types[]",
                options=[
                    Option(option["id"], option["reference"]["value"])
                    for option in get_case_types(request, False)
                ],
            )
        ],
    )
コード例 #3
0
    def post(request, **kwargs):
        letter_template_id = str(kwargs["pk"])
        letter_template = get_letter_template(
            request, letter_template_id)[0]["template"]

        # Override case restrictions to use getlist
        edited_letter_template_data = request.POST.copy()
        edited_letter_template_data[
            "case_types"] = edited_letter_template_data.getlist("case_types[]")
        edited_letter_template_data[
            "decisions"] = edited_letter_template_data.getlist("decisions[]")

        case_type_options = [
            Option(option["key"], option["value"])
            for option in get_case_types(request)
        ]
        decision_options = [
            Option(decision["key"], decision["value"])
            for decision in get_decisions(request)[0]
        ]

        next_form, _ = submit_single_form(
            request,
            edit_letter_template(request, letter_template, case_type_options,
                                 decision_options),
            put_letter_template,
            object_pk=letter_template_id,
            override_data=edited_letter_template_data,
        )

        if next_form:
            return next_form

        return redirect(
            reverse("letter_templates:letter_template",
                    kwargs={"pk": letter_template_id}))
コード例 #4
0
def select_condition_and_flag(request, type: str):
    flags = []
    is_for_verified_goods_only = None

    if type == "Good":
        flags = get_goods_flags(request=request)
        is_for_verified_goods_only = RadioButtons(
            name="is_for_verified_goods_only",
            options=[
                Option(key=True, value=FlaggingRules.Create.Condition_and_flag.YES_OPTION),
                Option(key=False, value=FlaggingRules.Create.Condition_and_flag.NO_OPTION),
            ],
            title=FlaggingRules.Create.Condition_and_flag.GOODS_QUESTION,
        )
        entries = get_control_list_entries(request)
        clc_groups, clc_nodes = get_clc_entry_groups_and_nodes(entries)

        # if the child node has children of its own then that needs to selectable as
        # both individual entry as well as group entry because of this duplicates are
        # possible in the combined list hence remove them. We need groups at the top
        # because autocomplete only shows first 10 entries which makes it difficult to
        # select certain groups otherwise. eg ML10b1 comes before ML1
        combined_entries = list(clc_groups)
        rating_seen = set([item["rating"] for item in combined_entries])
        for item in clc_nodes:
            if item["rating"] not in rating_seen:
                rating_seen.add(item["rating"])
                combined_entries.append(item)

        clc_nodes_options = [
            Option(key=item["rating"], value=item["rating"], description=item["text"],) for item in clc_nodes
        ]

        clc_groups_options = [
            Option(key=item["rating"], value=item["rating"], description=item["text"],) for item in clc_groups
        ]

        clc_combined_options = [
            Option(key=item["rating"], value=item["rating"], description=item["text"],) for item in combined_entries
        ]

        return Form(
            title="Set flagging rules",
            questions=[
                Heading("Add a condition", HeadingStyle.S),
                TokenBar(
                    title="Select individual control list entries",
                    name="matching_values",
                    description="Type to get suggestions. For example, ML1a.",
                    options=clc_nodes_options,
                ),
                TokenBar(
                    title="Select a control list entry group",
                    name="matching_groups",
                    description="Type to get suggestions. For example, ML8.\nThis will add every control list entry under ML8.",
                    options=clc_groups_options,
                ),
                TokenBar(
                    title="Excluded control list entries",
                    name="excluded_values",
                    description="Type to get suggestions. For example, ML1a, ML8.\nThis will exclude ML1a and every control list entry under ML8.",
                    options=clc_combined_options,
                ),
                Heading("Set an action", HeadingStyle.S),
                Select(title=strings.FlaggingRules.Create.Condition_and_flag.FLAG, name="flag", options=flags),
                is_for_verified_goods_only,
            ],
            default_button_name="Create flagging rule",
        )
    elif type == "Destination":
        flags = get_destination_flags(request=request)

        return Form(
            title="Set flagging rules",
            questions=[
                Heading("Add a condition", HeadingStyle.S),
                TokenBar(
                    title="Select destinations",
                    name="matching_values",
                    description="Type to get suggestions. For example, Australia",
                    options=get_countries(request, convert_to_options=True),
                ),
                Heading("Add an action", HeadingStyle.S),
                Select(title=strings.FlaggingRules.Create.Condition_and_flag.FLAG, name="flag", options=flags),
            ],
            default_button_name="Create flagging rule",
        )
    elif type == "Case":
        case_type_options = [Option(option["key"], option["value"]) for option in get_case_types(request)]
        flags = get_cases_flags(request=request)

        return Form(
            title="Set flagging rules",
            questions=[
                Heading("Add a condition", HeadingStyle.S),
                TokenBar(
                    title="Select application type",
                    name="matching_values",
                    description="Type to get suggestions.\nFor example, Standard Individual Export Licence",
                    options=case_type_options,
                ),
                Heading("Add an action", HeadingStyle.S),
                Select(title=strings.FlaggingRules.Create.Condition_and_flag.FLAG, name="flag", options=flags),
            ],
            default_button_name="Create flagging rule",
        )
コード例 #5
0
def add_letter_template(request):
    possible_case_types = get_case_types(request, type_only=False)
    chosen_case_types = request.POST.getlist("case_types[]")
    is_application_case_types_only = CaseType.HMRC_REFERENCE.value not in chosen_case_types

    if is_application_case_types_only:
        # iterate through all case-types and determine if the ones we have chosen are of type "application"
        for possible_case_type in possible_case_types:
            if (possible_case_type["reference"]["key"] in chosen_case_types
                    and not possible_case_type["type"]["key"]
                    == CaseType.APPLICATION.value):
                is_application_case_types_only = False
                break

    return FormGroup(forms=[
        Form(
            title=strings.LetterTemplates.AddLetterTemplate.Name.TITLE,
            description=strings.LetterTemplates.AddLetterTemplate.Name.HINT,
            questions=[TextInput(name="name")],
            back_link=BackLink(
                strings.LetterTemplates.AddLetterTemplate.Name.BACK_LINK,
                reverse_lazy("letter_templates:letter_templates"),
            ),
            default_button_name=strings.LetterTemplates.AddLetterTemplate.Name.
            CONTINUE_BUTTON,
        ),
        Form(
            title=strings.LetterTemplates.AddLetterTemplate.CaseTypes.TITLE,
            questions=[
                Checkboxes(
                    name="case_types[]",
                    options=[
                        Option(case_type["reference"]["key"],
                               case_type["reference"]["value"])
                        for case_type in possible_case_types
                    ],
                    classes=["govuk-checkboxes--small"],
                )
            ],
            default_button_name=strings.LetterTemplates.AddLetterTemplate.
            CaseTypes.CONTINUE_BUTTON,
        ),
        conditional(
            is_application_case_types_only,
            Form(
                title=strings.LetterTemplates.EditLetterTemplate.Decisions.
                TITLE,
                description=strings.LetterTemplates.EditLetterTemplate.
                Decisions.DESCRIPTION,
                questions=[
                    Checkboxes(
                        name="decisions[]",
                        options=[
                            Option(decision["key"], decision["value"])
                            for decision in get_decisions(request)[0]
                        ],
                        classes=["govuk-checkboxes--small"],
                    )
                ],
                default_button_name=strings.LetterTemplates.AddLetterTemplate.
                CaseTypes.CONTINUE_BUTTON,
            ),
        ),
        Form(
            title=strings.LetterTemplates.AddLetterTemplate.VisibleToExporter.
            TITLE,
            description=strings.LetterTemplates.AddLetterTemplate.
            VisibleToExporter.DESCRIPTION,
            questions=[
                RadioButtons(
                    name="visible_to_exporter",
                    options=[
                        Option(key=True,
                               value=strings.LetterTemplates.AddLetterTemplate.
                               VisibleToExporter.YES_OPTION),
                        Option(key=False,
                               value=strings.LetterTemplates.AddLetterTemplate.
                               VisibleToExporter.NO_OPTION),
                    ],
                ),
            ],
            default_button_name=strings.LetterTemplates.AddLetterTemplate.
            VisibleToExporter.BUTTON,
        ),
        Form(
            title=strings.LetterTemplates.AddLetterTemplate.IncludeSignature.
            TITLE,
            description=strings.LetterTemplates.AddLetterTemplate.
            IncludeSignature.DESCRIPTION,
            questions=[
                RadioButtons(
                    name="include_digital_signature",
                    options=[
                        Option(key=True,
                               value=strings.LetterTemplates.AddLetterTemplate.
                               IncludeSignature.YES_OPTION),
                        Option(key=False,
                               value=strings.LetterTemplates.AddLetterTemplate.
                               IncludeSignature.NO_OPTION),
                    ],
                ),
            ],
            default_button_name=strings.LetterTemplates.AddLetterTemplate.
            IncludeSignature.BUTTON,
        ),
        Form(
            title=strings.LetterTemplates.AddLetterTemplate.Layout.TITLE,
            questions=[
                RadioButtonsImage(name="layout",
                                  options=_letter_layout_options(request))
            ],
            default_button_name=strings.LetterTemplates.AddLetterTemplate.
            Layout.CONTINUE_BUTTON,
        ),
    ])