import logging from actions import open_page from classes.application_result import ApplicationResult from language import _ from providers._provider import ApplyContext, Provider logger = logging.getLogger("flat-apply") class Howoge(Provider): @property def domain(self) -> str: return "howoge.de" async def apply_for_flat(self, url: str, ctx: ApplyContext) -> ApplicationResult: r = ctx.recorder p = ctx.profile async with open_page(url, recorder=r) as page: r.step("cookies.check") cookie_accept_btn = page.get_by_role("button", name="Alles akzeptieren") if await cookie_accept_btn.is_visible(): await cookie_accept_btn.click() r.step("cookies.accepted") else: r.step("cookies.absent") r.step("page.404_check", detail=page.url) if page.url == "https://www.howoge.de/404": return ApplicationResult(False, message=_("not_found")) r.step("form.open") await page.get_by_role("link", name="Besichtigung anfragen").click() r.step("form.wbs_hint"); await page.get_by_text("Ja, ich habe die Hinweise zum WBS zur Kenntnis genommen.").click() await page.get_by_role("button", name="Weiter").click() r.step("form.income_hint"); await page.get_by_text("Ja, ich habe den Hinweis zum Haushaltsnettoeinkommen zur Kenntnis genommen.").click() await page.get_by_role("button", name="Weiter").click() r.step("form.bonitaet_hint"); await page.get_by_text("Ja, ich habe den Hinweis zur Bonitätsauskunft zur Kenntnis genommen.").click() await page.get_by_role("button", name="Weiter").click() r.step("form.name"); await page.locator("#immo-form-firstname").fill(p.firstname) await page.locator("#immo-form-lastname").fill(p.lastname) await page.locator("#immo-form-email").fill(p.email) if not ctx.submit_forms: r.step("submit.dry_run") return ApplicationResult(True, _("application_success_dry")) r.step("submit.click"); await page.get_by_role("button", name="Anfrage senden").click() r.step("success.check") if await page.get_by_role("heading", name="Vielen Dank.").is_visible(): return ApplicationResult(True) r.step("success.not_found", "warn") return ApplicationResult(False, _("submit_conformation_msg_not_found"))