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", )
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.")
def select_country(request): return Form( title=Forms.COUNTRY, questions=[ AutocompleteInput( name="country", options=get_countries(request, convert_to_options=True), ) ], )
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")
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)
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
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, )
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 }
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", )
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, ), ])
def get_countries(self): countries, _ = get_countries(self.request) return countries["countries"]
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) ], ), ], )