Exemple #1
0
    def get(self, request, *args, **kwargs):
        open_general_licences = get_open_general_licences(
            request, **request.GET)
        control_list_entries = get_control_list_entries(request, True)
        countries = get_countries(request, True)

        filters = FiltersBar([
            HiddenField("status", request.GET.get("status", "active")),
            TextInput(name="name", title="name"),
            Select(name="case_type",
                   title="type",
                   options=OpenGeneralExportLicences.as_options()),
            AutocompleteInput(name="control_list_entry",
                              title="control list entry",
                              options=control_list_entries),
            AutocompleteInput(name="country",
                              title="country",
                              options=countries),
        ])

        context = {
            "filters": filters,
            "tab": request.GET.get("status", "active"),
            "open_general_licences": open_general_licences,
        }
        return render(request, "open-general-licences/index.html", context)
def add_additional_contact_form(request, queue_id, case_id):
    return Form(
        title=AddAdditionalContact.TITLE,
        description=AddAdditionalContact.DESCRIPTION,
        questions=[
            TextInput(
                title=AddAdditionalContact.Details.TITLE,
                description=AddAdditionalContact.Details.DESCRIPTION,
                name="details",
            ),
            TextInput(title=AddAdditionalContact.Name.TITLE, name="name"),
            *foreign_address_questions(get_countries(request, True), ""),
            TextInput(title=AddAdditionalContact.Email.TITLE, name="email"),
            TextInput(
                title=AddAdditionalContact.PhoneNumber.TITLE,
                description=AddAdditionalContact.PhoneNumber.DESCRIPTION,
                name="phone_number",
            ),
        ],
        back_link=BackLink(
            AddAdditionalContact.BACK_LINK,
            reverse_lazy("cases:case",
                         kwargs={
                             "queue_pk": queue_id,
                             "pk": case_id,
                             "tab": "additional-contacts"
                         }),
        ),
        default_button_name=AddAdditionalContact.SUBMIT_BUTTON,
        container="case",
    )
Exemple #3
0
 def get_form(self):
     is_commercial = self.organisation["type"]["key"] == "commercial"
     in_uk = self.organisation["primary_site"]["address"]["country"][
         "id"] == "GB"
     countries = get_countries(self.request, True, ["GB"])
     return edit_address_questions_form(is_commercial,
                                        in_uk,
                                        countries,
                                        prefix="site.address.")
Exemple #4
0
def select_country(request):
    return Form(
        title=Forms.COUNTRY,
        questions=[
            AutocompleteInput(
                name="country",
                options=get_countries(request, convert_to_options=True),
            )
        ],
    )
Exemple #5
0
    def init(self, request, **kwargs):
        self.action = post_picklist_item
        countries, _ = get_countries(request)
        flags = get_flags(request, status=FlagStatus.ACTIVE.value)
        denial_reasons = get_denial_reasons(request, False)

        self.context = {
            **countries, "flags": flags,
            "denial_reasons": denial_reasons
        }
        self.success_url = reverse_lazy(
            "picklists:picklists") + "?type=" + self.request.GET.get("type")
Exemple #6
0
    def get(self, request, **kwargs):
        if Permission.MANAGE_FLAGGING_RULES.value not in get_user_permissions(
                request):
            return redirect(reverse_lazy("cases:cases"))

        params = {"page": int(request.GET.get("page", 1))}
        params = get_params_if_exist(
            request, ["only_my_team", "level", "include_deactivated"], params)

        data, _ = get_flagging_rules(request,
                                     convert_dict_to_query_params(params))

        filters = FiltersBar([
            Select(name="level",
                   title=strings.FlaggingRules.List.Filter.Type,
                   options=_levels),
            Checkboxes(
                name="only_my_team",
                options=[
                    Option("true",
                           strings.FlaggingRules.List.Filter.MY_TEAM_ONLY)
                ],
                classes=["govuk-checkboxes--small", "govuk-!-margin-top-6"],
            ),
            Checkboxes(
                name="include_deactivated",
                options=[
                    Option(
                        "true",
                        strings.FlaggingRules.List.Filter.INCLUDE_DEACTIVATED)
                ],
                classes=["govuk-checkboxes--small", "govuk-!-margin-top-6"],
            ),
        ])

        countries, _ = get_countries(request)
        countries_map = {
            country["id"]: country["name"]
            for country in countries["countries"]
        }
        for rule in data["results"]:
            if rule["level"] == "Destination":
                rule["matching_values"] = [
                    countries_map[id] for id in rule["matching_values"]
                ]

        context = {
            "data": data,
            "team": get_gov_user(request)[0]["user"]["team"]["id"],
            "filters": filters,
        }
        return render(request, "flags/flagging-rules-list.html", context)
Exemple #7
0
    def prettify_data(self, data):
        countries, _ = get_countries(self.request)
        countries = [
            country["name"] for country in countries["countries"]
            if country["id"] in data.get("countries", [])
        ]

        data["registration_required"] = friendly_boolean(
            data["registration_required"])
        data["control_list_entries[]"] = ", ".join(
            data.get("control_list_entries", []))
        data["countries[]"] = ", ".join(countries)
        return data
Exemple #8
0
def create_default_site_form(request, in_uk):
    return Form(
        title=RegisterAnOrganisation.CREATE_DEFAULT_SITE,
        questions=[
            TextInput(title=RegisterAnOrganisation.NAME_OF_SITE, name="site.name"),
            Heading(RegisterAnOrganisation.WhereIsTheExporterBased.TITLE, HeadingStyle.M),
            *conditional(
                in_uk,
                address_questions(None, "site.address."),
                foreign_address_questions(get_countries(request, True, ["GB"]), "site.address."),
            ),
        ],
        default_button_name=strings.CONTINUE,
    )
Exemple #9
0
    def init(self, request, **kwargs):
        self.object_pk = kwargs["pk"]
        self.object = get_picklist_item(request, self.object_pk)
        self.data = self.object
        self.action = put_picklist_item
        self.success_url = reverse_lazy("picklists:picklist_item",
                                        kwargs={"pk": self.object_pk})
        self.success_message = EditPicklistItemForm.SUCCESS_MESSAGE
        countries, _ = get_countries(request)
        flags = get_flags(request, status=FlagStatus.ACTIVE.value)
        denial_reasons = get_denial_reasons(request)

        self.context = {
            **countries, "flags": flags,
            "denial_reasons": denial_reasons
        }
Exemple #10
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",
        )
Exemple #11
0
def open_general_licence_forms(request, licence, strings):
    control_list_entries = get_control_list_entries(request)
    control_list_entries_tree = convert_dictionary_to_tree(
        group_control_list_entries_by_category(control_list_entries),
        key="rating",
        value="rating",
        exclude="is_decontrolled",
    )
    countries = get_countries(request, True)

    return FormGroup([
        Form(
            title=strings.SelectType.TITLE,
            description=strings.SelectType.DESCRIPTION,
            caption=strings.Steps.STEP_1,
            questions=[
                RadioButtons(
                    short_title="Type",
                    name="case_type",
                    options=OpenGeneralExportLicences.as_options(),
                ),
            ],
            default_button_name=generic.CONTINUE,
        ),
        Form(
            title=strings.Details.TITLE.format(licence.name.lower()),
            description=strings.Details.DESCRIPTION,
            caption=strings.Steps.STEP_2,
            questions=[
                TextArea(
                    title=strings.Details.Name.TITLE.format(
                        licence.name.lower()),
                    short_title=strings.Details.Name.SHORT_TITLE,
                    description=strings.Details.Name.DESCRIPTION,
                    name="name",
                    rows=3,
                    classes=["govuk-!-width-three-quarters"],
                    data_attributes={"licence-name": licence.name},
                ),
                TextArea(
                    title=strings.Details.Description.TITLE,
                    short_title=strings.Details.Description.SHORT_TITLE,
                    description=strings.Details.Description.DESCRIPTION,
                    name="description",
                    classes=["govuk-!-width-three-quarters"],
                    extras={"max_length": 2000},
                ),
                TextInput(
                    title=strings.Details.Link.TITLE.format(
                        licence.name.lower()),
                    short_title=strings.Details.Link.SHORT_TITLE,
                    description=strings.Details.Link.DESCRIPTION,
                    name="url",
                    classes=["govuk-!-width-three-quarters"],
                ),
                RadioButtons(
                    title=strings.Details.RequiresRegistration.TITLE.format(
                        licence.name.lower()),
                    short_title=strings.Details.RequiresRegistration.
                    SHORT_TITLE,
                    description=strings.Details.RequiresRegistration.
                    DESCRIPTION.format(licence.name.lower()),
                    name="registration_required",
                    options=[
                        Option(True, strings.Details.RequiresRegistration.YES),
                        Option(False, strings.Details.RequiresRegistration.NO),
                    ],
                    classes=["govuk-radios--inline"],
                ),
            ],
            javascript_imports={"/javascripts/new-open-general-licence.js"},
            default_button_name=generic.CONTINUE,
        ),
        Form(
            title=strings.ControlListEntries.TITLE,
            description=strings.ControlListEntries.DESCRIPTION,
            caption=strings.Steps.STEP_3,
            questions=[
                TreeView(
                    name="control_list_entries[]",
                    short_title=strings.ControlListEntries.TITLE,
                    data=control_list_entries_tree,
                )
            ],
            default_button_name=generic.CONTINUE,
        ),
        Form(
            title=strings.Countries.TITLE,
            description=strings.Countries.DESCRIPTION,
            caption=strings.Steps.STEP_4,
            questions=[
                Filter(),
                Checkboxes(
                    name="countries[]",
                    short_title=strings.Countries.SHORT_TITLE,
                    options=countries,
                    classes=["govuk-checkboxes--small"],
                    show_select_links=True,
                    filterable=True,
                ),
            ],
            default_button_name=generic.CONTINUE,
        ),
    ])
Exemple #12
0
 def get_countries(self):
     countries, _ = get_countries(self.request)
     return countries["countries"]
Exemple #13
0
def case_filters_bar(request, filters, is_system_queue) -> FiltersBar:
    """
    Returns a FiltersBar for the case search page.
    """
    sla_sort = [
        Option("ascending",
               CasesListPage.Filters.SORT_BY_SLA_ELAPSED_ASCENDING),
        Option("descending",
               CasesListPage.Filters.SORT_BY_SLA_ELAPSED_DESCDENDING),
    ]
    sla_days = [Option(i, i) for i in range(SLA_DAYS_RANGE)]

    selected_filters = request.GET

    return FiltersBar(
        [
            TextInput(name="case_reference", title="case reference"),
            Select(
                name="case_type",
                title=CasesListPage.Filters.CASE_TYPE,
                options=[
                    Option(option["key"], option["value"])
                    for option in filters["case_types"]
                ],
                initial=selected_filters.get("case_type"),
            ),
            Select(
                name="status",
                title=CasesListPage.Filters.CASE_STATUS,
                options=[
                    Option(option["key"], option["value"])
                    for option in filters["statuses"]
                ],
                initial=selected_filters.get("status"),
            ),
            AutocompleteInput(
                name="case_officer",
                title=CasesListPage.Filters.CASE_OFFICER,
                options=[
                    Option("not_assigned", CasesListPage.Filters.NOT_ASSIGNED)
                ] + [
                    Option(option["id"], option["full_name"])
                    for option in filters["gov_users"]
                ],
                deferred=True,
                initial=selected_filters.get("case_officer"),
            ),
            AutocompleteInput(
                name="assigned_user",
                title=CasesListPage.Filters.ASSIGNED_USER,
                options=[
                    Option("not_assigned", CasesListPage.Filters.NOT_ASSIGNED)
                ] + [
                    Option(option["id"], option["full_name"])
                    for option in filters["gov_users"]
                ],
                deferred=True,
                initial=selected_filters.get("assigned_user"),
            ),
            conditional(
                not is_system_queue,
                Checkboxes(
                    name="hidden",
                    options=[
                        Option(True,
                               CasesListPage.Filters.HIDDEN,
                               id="show-hidden-cases")
                    ],
                    classes=["govuk-checkboxes--small"],
                ),
            ),
        ],
        advanced_filters=[
            TextInput(
                name="exporter_application_reference",
                title=CasesListPage.Filters.EXPORTER_APPLICATION_REFERENCE),
            TextInput(name="organisation_name",
                      title=CasesListPage.Filters.ORGANISATION_NAME),
            TextInput(name="exporter_site_name",
                      title=CasesListPage.Filters.EXPORTER_SITE_NAME),
            TextInput(name="exporter_site_address",
                      title=CasesListPage.Filters.EXPORTER_SITE_ADDRESS),
            Select(
                name="team_advice_type",
                title=CasesListPage.Filters.TEAM_ADVICE_TYPE,
                options=[
                    Option(option["key"], option["value"])
                    for option in filters["advice_types"]
                ],
                initial=selected_filters.get("team_advice_type"),
            ),
            Select(
                name="final_advice_type",
                title=CasesListPage.Filters.FINAL_ADVICE_TYPE,
                options=[
                    Option(option["key"], option["value"])
                    for option in filters["advice_types"]
                ],
                initial=selected_filters.get("final_advice_type"),
            ),
            Select(name="max_sla_days_remaining",
                   title=CasesListPage.Filters.MAX_SLA_DAYS_REMAINING,
                   options=sla_days),
            Select(name="min_sla_days_remaining",
                   title=CasesListPage.Filters.MIN_SLA_DAYS_REMAINING,
                   options=sla_days),
            Select(name="sla_days_elapsed",
                   title=CasesListPage.Filters.SLA_DAYS_ELAPSED,
                   options=sla_days),
            Select(name="sla_days_elapsed_sort_order",
                   title=CasesListPage.Filters.SORT_BY_SLA_ELAPSED,
                   options=sla_sort),
            DateInput(
                name="submitted_from",
                title=CasesListPage.Filters.SUBMITTED_FROM,
                prefix="submitted_from_",
                inline_title=True,
            ),
            DateInput(name="submitted_to",
                      title=CasesListPage.Filters.SUBMITTED_TO,
                      prefix="submitted_to_",
                      inline_title=True),
            DateInput(
                name="finalised_from",
                title=CasesListPage.Filters.FINALISED_FROM,
                prefix="finalised_from_",
                inline_title=True,
            ),
            DateInput(name="finalised_to",
                      title=CasesListPage.Filters.FINALISED_TO,
                      prefix="finalised_to_",
                      inline_title=True),
            TextInput(name="party_name",
                      title=CasesListPage.Filters.PARY_NAME),
            TextInput(name="party_address",
                      title=CasesListPage.Filters.PARTY_ADDRESS),
            TextInput(name="goods_related_description",
                      title=CasesListPage.Filters.GOODS_RELATED_DESCRIPTION),
            AutocompleteInput(
                name="country",
                title=CasesListPage.Filters.COUNTRY,
                options=get_countries(request, convert_to_options=True),
                initial=selected_filters.get("country"),
            ),
            AutocompleteInput(
                name="control_list_entry",
                title=CasesListPage.Filters.CONTROL_LIST_ENTRY,
                options=get_control_list_entries(request,
                                                 convert_to_options=True),
                initial=selected_filters.get("control_list_entry"),
            ),
            TokenBar(
                name="flags",
                title=CasesListPage.Filters.FLAGS,
                options=[
                    Option(flag["id"], flag["name"])
                    for flag in get_flags(request, disable_pagination=True)
                ],
            ),
        ],
    )