def raise_a_goods_query(good_id, raise_a_clc: bool, raise_a_pv: bool): questions = [] if raise_a_clc: if GoodsQueryForm.CLCQuery.TITLE: questions += [ Heading(GoodsQueryForm.CLCQuery.TITLE, HeadingStyle.M), ] questions += [ TextInput( title=GoodsQueryForm.CLCQuery.Code.TITLE, description=GoodsQueryForm.CLCQuery.Code.DESCRIPTION, name="clc_control_code", optional=True, ), TextArea(title=GoodsQueryForm.CLCQuery.Details.TITLE, name="clc_raised_reasons", optional=True,), ] if raise_a_pv: if GoodsQueryForm.PVGrading.TITLE: questions += [ Heading(GoodsQueryForm.PVGrading.TITLE, HeadingStyle.M), ] questions += [ TextArea(title=GoodsQueryForm.PVGrading.Details.TITLE, name="pv_grading_raised_reasons", optional=True,), ] return Form( title=GoodsQueryForm.TITLE, description=GoodsQueryForm.DESCRIPTION, questions=questions, back_link=BackLink(GoodsQueryForm.BACK_LINK, reverse("goods:good", kwargs={"pk": good_id})), default_button_name="Save", )
def product_component_form(request): return Form( title=CreateGoodForm.ProductComponent.TITLE, questions=[ HiddenField("is_component_step", True), RadioButtons( title="", name="is_component", options=[ Option( key="yes_designed", value=CreateGoodForm.ProductComponent.YES_DESIGNED, components=[ TextArea( title=CreateGoodForm.ProductComponent. DESIGNED_DETAILS, description="", name="designed_details", optional=False, ), ], ), Option( key="yes_modified", value=CreateGoodForm.ProductComponent.YES_MODIFIED, components=[ TextArea( title=CreateGoodForm.ProductComponent. MODIFIED_DETAILS, description="", name="modified_details", optional=False, ), ], ), Option( key="yes_general", value=CreateGoodForm.ProductComponent. YES_GENERAL_PURPOSE, components=[ TextArea( title=CreateGoodForm.ProductComponent. GENERAL_DETAILS, description="", name="general_details", optional=False, ), ], ), Option(key="no", value=CreateGoodForm.ProductComponent.NO), ], ), ], )
def set_flags_form(flags, level, show_case_header=False, show_sidebar=False): form = Form( title=getattr(SetFlagsForm, level).TITLE, description=getattr(SetFlagsForm, level).DESCRIPTION, questions=[ Filter(placeholder=getattr(SetFlagsForm, level).FILTER), Checkboxes( name="flags[]", options=flags, filterable=True, disabled_hint="You do not have permission to remove this flag.", ), DetailComponent( title=getattr(SetFlagsForm, level).Note.TITLE, components=[ TextArea(name="note", classes=["govuk-!-margin-0"]), ], ), ], default_button_name=getattr(SetFlagsForm, level).SUBMIT_BUTTON, container="case" if show_case_header else "two-pane", javascript_imports={"/javascripts/flags-permission-hints.js"}, ) if show_sidebar: form.helpers = [ HelpSection("Setting flags on:", "", includes="case/includes/selection-sidebar.html") ] return form
def reissue_ogl_confirmation_form(case_id, queue_id): return Form( title=Manage.ReissueOGL.TITLE, description=Manage.ReissueOGL.DESCRIPTION, questions=[ RadioButtons( name="confirm", options=[ Option(key=True, value=Manage.ReissueOGL.YES), Option(key=False, value=Manage.ReissueOGL.NO) ], classes=["govuk-checkboxes--inline"], ), DetailComponent( title=Manage.ReissueOGL.NOTE, components=[ TextArea(name="note", classes=["govuk-!-margin-0"]) ], ), ], back_link=BackLink(url=reverse("cases:case", kwargs={ "queue_pk": queue_id, "pk": case_id })), default_button_name=Manage.ReissueOGL.SUBMIT, container="case", )
def is_temp_direct_control_form(caption): return Form( caption=caption, title=TemporaryExportDetails.PRODUCTS_UNDER_DIRECT_CONTROL, questions=[ RadioButtons( name="is_temp_direct_control", short_title=TemporaryExportDetails.SummaryList.PRODUCTS_UNDER_DIRECT_CONTROL, options=[ Option(key=True, value="Yes"), Option( key=False, value="No", components=[ TextArea( name="temp_direct_control_details", title=TemporaryExportDetails.PRODUCTS_UNDER_DIRECT_CONTROL_DETAILS, description="", extras={"max_length": 2200}, optional=False, ) ], ), ], classes=["govuk-radios--inline"], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def assign_users_form(request: HttpRequest, team_id, queue, multiple: bool): params = { "teams": team_id, "disable_pagination": True, "status": UserStatuses.ACTIVE } return Form( title=cases.Manage.AssignUsers.MULTIPLE_TITLE if multiple else cases.Manage.AssignUsers.TITLE, description=cases.Manage.AssignUsers.DESCRIPTION, questions=[ Filter(), Checkboxes("users", options=get_gov_users( request, params, convert_to_options=True, ), filterable=True), DetailComponent( title=cases.Manage.AssignUsers.NOTE, components=[ TextArea(name="note", classes=["govuk-!-margin-0"]), ], ), ], caption=queue["name"], default_button_name=cases.Manage.AssignUsers.BUTTON, )
def firearm_replica_form(firearm_type): return Form( title=CreateGoodForm.FirearmGood.FirearmsReplica.TITLE, default_button_name="Save and continue", questions=[ HiddenField("type", firearm_type), HiddenField("is_replica_step", True), RadioButtons( title="", name="is_replica", options=[ Option( key=True, value="Yes", components=[ TextArea( title=CreateGoodForm.FirearmGood.FirearmsReplica.DESCRIPTION, description="", name="replica_description", optional=False, ), ], ), Option(key=False, value="No",), ], ), ], )
def activity_form(request): activities = get_trade_control_activities(request) options = [] for activity in activities: option = Option(activity["key"], activity["value"]) if activity["key"] == "other": option.components = [ TextArea( title=TradeControlLicenceQuestions.ControlActivity.OTHER_DESCRIPTION, name="trade_control_activity_other", optional=False, rows=1, extras={"max_length": 100}, ) ] options.append(option) return Form( title=TradeControlLicenceQuestions.ControlActivity.TITLE, description=TradeControlLicenceQuestions.ControlActivity.DESCRIPTION, questions=[RadioButtons(name="trade_control_activity", options=options)], default_button_name=generic.CONTINUE, )
def is_suspected_wmd_form(caption): return Form( caption=caption, title=EndUseDetails.SUSPECTED_WMD, questions=[ RadioButtons( name="is_suspected_wmd", short_title=EndUseDetails.EndUseDetailsSummaryList. SUSPECTED_WMD, title="", options=[ Option( key=True, value="Yes", components=[ TextArea( name="suspected_wmd_ref", title="", description=EndUseDetails.PROVIDE_DETAILS, extras={"max_length": 2200}, optional=False, ) ], ), Option(key=False, value="No"), ], classes=["govuk-radios--inline"], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def locally_manufactured_form(): return Form( caption=F680Questions.CAPTION, title=F680Questions.LocallyManufactured.TITLE, questions=[ RadioButtons( name="locally_manufactured", options=[ Option( key=True, value="Yes", components=[ TextArea( title=F680Questions.LocallyManufactured. PROVIDE_DETAILS, name="locally_manufactured_description", extras={"max_length": 2200}, optional=False, ), ], ), Option(key=False, value="No"), ], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def uk_service_equipment_form(): return Form( caption=F680Questions.CAPTION, title=F680Questions.UKServiceEquipment.TITLE, questions=[ RadioButtons( name="uk_service_equipment", options=[ Option( key=True, value="Yes", components=[ TextArea( title=F680Questions.UKServiceEquipment. PROVIDE_DETAILS_OPTIONAL, name="uk_service_equipment_description", extras={"max_length": 2200}, ) ], ), Option(key=False, value="No"), ], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def upload_firearms_act_certificate_form(section, filename, back_link): return Form( title=f"Attach your Firearms Act 1968 {section} certificate", description="The file must be smaller than 50MB", questions=[ HiddenField("firearms_certificate_uploaded", False), FileUpload(), HiddenField("uploaded_file_name", filename), TextInput( title=CreateGoodForm.FirearmGood.FirearmsActCertificate.SECTION_CERTIFICATE_NUMBER, description="", name="section_certificate_number", optional=False, ), DateInput( title=CreateGoodForm.FirearmGood.FirearmsActCertificate.EXPIRY_DATE, description=CreateGoodForm.FirearmGood.FirearmsActCertificate.EXPIRY_DATE_HINT, prefix="section_certificate_date_of_expiry", name="section_certificate_date_of_expiry", ), Label(text="Or"), Checkboxes( name="section_certificate_missing", options=[Option(key="True", value=f"I do not have a Firearms Act 1968 {section} certificate",)], ), TextArea( title="Provide a reason why you do not have a certificate", name="section_certificate_missing_reason", optional=False, ), ], back_link=back_link, buttons=[Button("Save and continue", "submit")], javascript_imports={"/javascripts/add-good.js"}, )
def done_with_case_form(request, queue_pk, case_pk, has_review_date): queue = None queues, _ = get_user_case_queues(request, case_pk) if not queues: queue = get_queue(request, queue_pk) return Form( title=DoneWithCaseOnQueueForm.TITLE if not queue else DoneWithCaseOnQueueForm.TITLE_SINGULAR.format(queue["name"]), questions=[ conditional( queues, Checkboxes( name="queues[]", options=[ Option(queue["id"], queue["name"]) for queue in queues ], title=DoneWithCaseOnQueueForm.CHECKBOX_TITLE, description=DoneWithCaseOnQueueForm.CHECKBOX_DESCRIPTION, ), HiddenField(name="queues[]", value=queue_pk), ), DetailComponent( title=DoneWithCaseOnQueueForm.NOTE, components=[ TextArea(name="note", classes=["govuk-!-margin-0"]), ], ), ], default_button_name=DoneWithCaseOnQueueForm.SUBMIT, container="case", javascript_imports=conditional(has_review_date, {"/javascripts/assign_queue.js"}, None), )
def product_military_use_form(request): return Form( title=CreateGoodForm.MilitaryUse.TITLE, questions=[ HiddenField("is_military_use_step", True), RadioButtons( title="", name="is_military_use", options=[ Option(key="yes_designed", value=CreateGoodForm.MilitaryUse.YES_DESIGNED), Option( key="yes_modified", value=CreateGoodForm.MilitaryUse.YES_MODIFIED, components=[ TextArea( title=CreateGoodForm.MilitaryUse.MODIFIED_MILITARY_USE_DETAILS, description="", name="modified_military_use_details", optional=False, ), ], ), Option(key="no", value=CreateGoodForm.MilitaryUse.NO), ], ), ], )
def exhibition_details_form(application_id): return Form( title=strings.Exhibition.EXHIBITION_TITLE, questions=[ TextInput(title=strings.Exhibition.TITLE, name="title"), DateInput( title=strings.Exhibition.FIRST_EXHIBITION_DATE, description=strings.Exhibition.DATE_DESCRIPTION, prefix="first_exhibition_date", name="first_exhibition_date", ), DateInput( title=strings.Exhibition.REQUIRED_BY_DATE, description=strings.Exhibition.DATE_DESCRIPTION, prefix="required_by_date", name="required_by_date", ), TextArea( title=strings.Exhibition.REASON_FOR_CLEARANCE, name="reason_for_clearance", optional=True, extras={"max_length": 2000}, ), ], back_link=BackLink( strings.BACK_TO_APPLICATION, reverse_lazy("applications:task_list", kwargs={"pk": application_id}), ), )
def is_compliant_limitations_eu_form(caption): return Form( caption=caption, title=EndUseDetails.IS_COMPLIANT_LIMITATIONS_EU, questions=[ RadioButtons( name="is_compliant_limitations_eu", short_title=EndUseDetails.EndUseDetailsSummaryList. COMPLIANT_LIMITATIONS_EU, options=[ Option(key=True, value="Yes"), Option( key=False, value="No", components=[ TextArea( name="compliant_limitations_eu_ref", title="", description=EndUseDetails.PROVIDE_DETAILS, extras={"max_length": 2200}, optional=False, ) ], ), ], classes=["govuk-radios--inline"], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def new_location_form(request, application_type, location_type): exclude = [] if application_type in [CaseTypes.SITL, CaseTypes.SICL, CaseTypes.OICL]: exclude.append("GB") countries = get_countries(request, True, exclude) return Form( title=NewLocationForm.TITLE, description=NewLocationForm.DESCRIPTION, questions=[ HiddenField(name="external_locations", value=""), TextInput(name="name", title=NewLocationForm.Name.TITLE), TextArea( name="address", title=conditional( location_type == LocationType.SEA_BASED, NewLocationForm.Address.SEA_BASED_TITLE, NewLocationForm.Address.TITLE, ), description=conditional( application_type == CaseTypes.SITL, NewLocationForm.Address.SITL_DESCRIPTION, conditional( location_type == LocationType.SEA_BASED, NewLocationForm.Address.SEA_BASED_DESCRIPTION, NewLocationForm.Address.DESCRIPTION, ), ), ), conditional(location_type != LocationType.SEA_BASED, country_question(prefix="", countries=countries)), ], default_button_name=strings.SAVE_AND_CONTINUE, )
def query_explanation_form(application_id): return Form( title=strings.Hmrc.QueryExplanation.TITLE, questions=[TextArea(name="reasoning", optional=True, extras={"max_length": 1000,})], default_button_name=strings.Hmrc.QueryExplanation.BUTTON_TEXT, back_link=back_to_task_list(application_id), )
def identification_markings_form(draft_pk=None, good_id=None): questions = [ HiddenField("identification_markings_step", True), RadioButtons( title="", name="has_identification_markings", options=[ Option(key=True, value=CreateGoodForm.FirearmGood.IdentificationMarkings.YES,), Option( key=False, value=CreateGoodForm.FirearmGood.IdentificationMarkings.NO, components=[ TextArea( title=CreateGoodForm.FirearmGood.IdentificationMarkings.NO_MARKINGS_DETAILS, description="", name="no_identification_markings_details", optional=False, ) ], ), ], ), HiddenField("pk", draft_pk) if draft_pk else None, HiddenField("good_id", good_id) if good_id else None, ] return Form( title=CreateGoodForm.FirearmGood.IdentificationMarkings.TITLE, questions=questions, default_button_name="Save and continue", )
def product_uses_information_security(request): return Form( title=CreateGoodForm.ProductInformationSecurity.TITLE, questions=[ HiddenField("is_information_security_step", True), RadioButtons( title="", name="uses_information_security", options=[ Option( key=True, value="Yes", components=[ TextArea( title=CreateGoodForm.ProductInformationSecurity.INFORMATION_SECURITY_DETAILS, description="", name="information_security_details", optional=True, ), ], ), Option(key=False, value=CreateGoodForm.ProductInformationSecurity.NO), ], ), ], )
def route_of_goods_form(back_link): return Form( title=RouteOfGoods.TITLE, back_link=BackLink(strings.BACK_TO_APPLICATION, back_link), questions=[ RadioButtons( name="is_shipped_waybill_or_lading", short_title="", options=[ Option(key=True, value="Yes"), Option( key=False, value="No", components=[ TextArea( name="non_waybill_or_lading_route_details", title="", description=RouteOfGoods.NO_ANSWER_DESCRIPTION, extras={"max_length": 2000}, optional=False, ) ], ), ], classes=["govuk-radios--inline"], ) ], default_button_name=RouteOfGoods.SAVE_BUTTON, )
def foreign_technology_form(): return Form( caption=F680Questions.CAPTION, title=F680Questions.ForeignTechnology.TITLE, questions=[ RadioButtons( name="foreign_technology", options=[ Option( key=True, value="Yes", components=[ TextArea( title=F680Questions.ForeignTechnology. PROVIDE_DETAILS, name="foreign_technology_description", description=F680Questions.ForeignTechnology. DESCRIPTION, extras={"max_length": 2200}, optional=False, ), ], ), Option(key=False, value="No"), ], ) ], default_button_name=generic.SAVE_AND_CONTINUE, )
def edit_good_detail_form(request, good_id): return Form( title=EditGoodForm.TITLE, description=EditGoodForm.DESCRIPTION, questions=[ TextArea( title=EditGoodForm.Description.TITLE, description=EditGoodForm.Description.DESCRIPTION, name="description", extras={"max_length": 280}, ), TextInput(title=EditGoodForm.PartNumber.TITLE, name="part_number", optional=True), RadioButtons( title=EditGoodForm.IsControlled.TITLE, description=EditGoodForm.IsControlled.DESCRIPTION, name="is_good_controlled", options=[ Option( key="yes", value=EditGoodForm.IsControlled.YES, components=[ control_list_entries_question( control_list_entries=get_control_list_entries(request, convert_to_options=True), title=EditGoodForm.ControlListEntry.TITLE, description=EditGoodForm.ControlListEntry.DESCRIPTION, ), ], ), Option(key="no", value=EditGoodForm.IsControlled.NO), ], ), ], back_link=BackLink(CreateGoodForm.BACK_BUTTON, reverse_lazy("goods:good", kwargs={"pk": good_id})), )
def add_goods_questions(request, application_pk=None): return Form( title=conditional(application_pk, CreateGoodForm.TITLE_APPLICATION, CreateGoodForm.TITLE_GOODS_LIST), questions=[ TextArea( title=CreateGoodForm.Description.TITLE, description=CreateGoodForm.Description.DESCRIPTION, name="description", extras={"max_length": 280}, ), TextInput(title=CreateGoodForm.PartNumber.TITLE, name="part_number", optional=True), RadioButtons( title=CreateGoodForm.IsControlled.TITLE, description=conditional( application_pk, CreateGoodForm.IsControlled.DESCRIPTION, CreateGoodForm.IsControlled.CLC_REQUIRED, ), name="is_good_controlled", options=[ Option( key="yes", value=CreateGoodForm.IsControlled.YES, components=[ control_list_entries_question( control_list_entries=get_control_list_entries(request, convert_to_options=True), title=CreateGoodForm.ControlListEntry.TITLE, description=CreateGoodForm.ControlListEntry.DESCRIPTION, ), ], ), Option(key="no", value=CreateGoodForm.IsControlled.NO), conditional(not application_pk, Option(key="unsure", value=CreateGoodForm.IsControlled.UNSURE)), ], ), RadioButtons( title=CreateGoodForm.IsGraded.TITLE, description=CreateGoodForm.IsGraded.DESCRIPTION, name="is_pv_graded", options=[ Option(key="yes", value=CreateGoodForm.IsGraded.YES), Option(key="no", value=CreateGoodForm.IsGraded.NO), conditional( not application_pk, Option(key="grading_required", value=CreateGoodForm.IsGraded.RAISE_QUERY) ), ], ), ], back_link=conditional( application_pk, BackLink(generic.BACK, reverse_lazy("applications:goods", kwargs={"pk": application_pk})), Breadcrumbs( [ BackLink(generic.SERVICE_NAME, reverse_lazy("core:home")), BackLink(GoodsList.TITLE, reverse_lazy("goods:goods")), BackLink(GoodsList.CREATE_GOOD), ] ), ), default_button_name=CreateGoodForm.SUBMIT_BUTTON, )
def foreign_address_questions(countries, prefix="address."): return [ TextArea(title="Address", name=prefix + "address", classes=["govuk-input--width-20"], rows=6), conditional(countries, country_question(countries, prefix)), ]
def edit_document_text_form(kwargs, post_url): return Form( title=GenerateDocumentsPage.EditTextForm.HEADING, questions=[TextArea(name="text", extras={"max_length": 5000}),], default_button_name=GenerateDocumentsPage.EditTextForm.BUTTON, post_url=reverse_lazy(post_url, kwargs=kwargs), helpers=[HelpSection(picklists.NewPicklistForm.HELP, None, "teams/markdown-help.html")], container="case", )
def software_technology_details_form(request, category_type): category_text = get_category_display_string(category_type) return Form( title=CreateGoodForm.TechnologySoftware.TITLE + category_text, questions=[ HiddenField("is_software_or_technology_step", True), TextArea(title="", description="", name="software_or_technology_details", optional=False,), ], )
def edit_address_questions_form(is_commercial, in_uk, countries, prefix="site.address."): phone_number_label = "Organisation phone number" if is_commercial else "Phone number" if in_uk: questions = [ TextInput(title=RegisterAnOrganisation.NAME_OF_SITE, name="site.name"), Heading(RegisterAnOrganisation.WhereIsTheExporterBased.TITLE, HeadingStyle.M), TextInput( title="Building and street", accessible_description="line 1 of 2", name=prefix + "address_line_1", ), TextInput( title="", accessible_description="line 2 of 2", name=prefix + "address_line_2", ), TextInput(title="Town or city", name=prefix + "city"), TextInput(title="County or state", name=prefix + "region"), TextInput(title="Postcode", name=prefix + "postcode"), ] else: questions = [ TextInput(title=RegisterAnOrganisation.NAME_OF_SITE, name="site.name"), Heading(RegisterAnOrganisation.WhereIsTheExporterBased.TITLE, HeadingStyle.M), TextArea(title="Address", name=prefix + "address", classes=["govuk-input--width-20"], rows=6), ] return Form( title="Edit default site for this exporter", questions=questions + [ TextInput( title=phone_number_label, name="phone_number", description= "For international numbers include the country code", ), TextInput(title="Website", name="website", optional=True), conditional( not in_uk, AutocompleteInput(title="Country", name=prefix + "country", options=countries)), ], )
def review_goods_form(request, is_goods_type, **kwargs): return Form( title=cases.ReviewGoodsForm.HEADING, questions=[ RadioButtons( title=goods.ReviewGoods.IS_GOOD_CONTROLLED, name="is_good_controlled", options=[ Option( key=conditional(is_goods_type, True, "yes"), value="Yes", components=[ control_list_entries_question( control_list_entries=get_control_list_entries( request, convert_to_options=True), title=goods.ReviewGoods.ControlListEntries. TITLE, ), PicklistPicker( target="report_summary", title=goods.ReviewGoods.ReportSummary.TITLE, description=goods.ReviewGoods.ReportSummary. DESCRIPTION, type=PicklistCategories.report_summary.key, set_text=False, ), ], ), Option(key=conditional(is_goods_type, False, "no"), value="No"), ], ), DetailComponent( title=goods.ReviewGoods.Comment.TITLE, components=[ TextArea(name="comment", extras={ "max_length": 500, }), ], ), ], default_button_name=cases.ReviewGoodsForm.CONFIRM_BUTTON, container="case", back_link=BackLink(url=reverse("cases:case", kwargs={ "queue_pk": kwargs["queue_pk"], "pk": kwargs["pk"] })), helpers=[ HelpSection(goods.ReviewGoods.GIVING_ADVICE_ON, "", includes="case/includes/selection-sidebar.html") ], )
def software_technology_details_form(request, item_category=None): category = get_category_display_string( request.POST.get("item_category", "") if not item_category else item_category ) return Form( title=CreateGoodForm.TechnologySoftware.TITLE + category, questions=[ HiddenField("is_software_or_technology_step", True), TextArea(title="", description="", name="software_or_technology_details", optional=False,), ], )