From dc78acba199b7c16946ea07798ed72ba790e3fe5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Fri, 30 Apr 2021 01:21:17 +0200
Subject: [PATCH] donate: Get subpage URL refactoring

---
 donate/models.py | 16 +++++-----------
 shared/utils.py  |  8 ++++++++
 2 files changed, 13 insertions(+), 11 deletions(-)
 create mode 100644 shared/utils.py

diff --git a/donate/models.py b/donate/models.py
index 1eec15b5..f4a78aa0 100644
--- a/donate/models.py
+++ b/donate/models.py
@@ -21,6 +21,7 @@ from wagtail.images.edit_handlers import ImageChooserPanel
 from wagtailmetadata.models import MetadataPageMixin
 
 from shared.models import SubpageMixin
+from shared.utils import get_subpage_url
 from tuning import help
 
 from .forms import DonateForm
@@ -73,13 +74,6 @@ class DonateFormAmountsMixin(models.Model):
         abstract = True
 
 
-def get_url(page, dest_page_type):
-    try:
-        return page.get_children().type(dest_page_type).live().first().get_url()
-    except (Page.DoesNotExist, AttributeError):
-        return "#"
-
-
 class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPageMixin):
     ### FIELDS
 
@@ -198,15 +192,15 @@ class DonateHomePage(DonateFormMixin, DonateFormAmountsMixin, Page, MetadataPage
 
     @property
     def info_page_url(self):
-        return get_url(self, DonateInfoPage)
+        return get_subpage_url(self, DonateInfoPage)
 
     @property
     def projects_page_url(self):
-        return get_url(self, DonateProjectIndexPage)
+        return get_subpage_url(self, DonateProjectIndexPage)
 
     @property
     def regions_page_url(self):
-        return get_url(self, DonateRegionIndexPage)
+        return get_subpage_url(self, DonateRegionIndexPage)
 
     @property
     def has_projects(self):
@@ -332,7 +326,7 @@ class DonateRegionPage(
 
     @property
     def targeted_donations_page_url(self):
-        return get_url(self, DonateTargetedDonationsPage)
+        return get_subpage_url(self, DonateTargetedDonationsPage)
 
     @property
     def has_targeted_donations(self):
diff --git a/shared/utils.py b/shared/utils.py
new file mode 100644
index 00000000..f4e3713c
--- /dev/null
+++ b/shared/utils.py
@@ -0,0 +1,8 @@
+from wagtail.core.models import Page
+
+
+def get_subpage_url(page, dest_page_type):
+    try:
+        return page.get_descendants().type(dest_page_type).live().first().get_url()
+    except (Page.DoesNotExist, AttributeError):
+        return "#"
-- 
GitLab