From 6320ea38558c4c389dab5767ae1aa51a042dc10f Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Thu, 27 Feb 2025 17:11:04 +0100 Subject: [PATCH] redesign partner detail page --- ...ddress_consultingpartner_email_and_more.py | 40 ++++ hub/services/models.py | 10 +- .../templates/services/partner_detail.html | 224 +++++++++++++----- 3 files changed, 214 insertions(+), 60 deletions(-) create mode 100644 hub/services/migrations/0009_consultingpartner_address_consultingpartner_email_and_more.py diff --git a/hub/services/migrations/0009_consultingpartner_address_consultingpartner_email_and_more.py b/hub/services/migrations/0009_consultingpartner_address_consultingpartner_email_and_more.py new file mode 100644 index 0000000..5f481e7 --- /dev/null +++ b/hub/services/migrations/0009_consultingpartner_address_consultingpartner_email_and_more.py @@ -0,0 +1,40 @@ +# Generated by Django 5.1.5 on 2025-02-27 15:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("services", "0008_alter_lead_company_alter_lead_message_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="consultingpartner", + name="address", + field=models.TextField(blank=True, max_length=250, null=True), + ), + migrations.AddField( + model_name="consultingpartner", + name="email", + field=models.EmailField(blank=True, max_length=254, null=True), + ), + migrations.AddField( + model_name="consultingpartner", + name="linkedin", + field=models.URLField(blank=True), + ), + migrations.AddField( + model_name="consultingpartner", + name="phone", + field=models.CharField(blank=True, max_length=25, null=True), + ), + migrations.AlterField( + model_name="consultingpartner", + name="services", + field=models.ManyToManyField( + blank=True, related_name="consulting_partners", to="services.service" + ), + ), + ] diff --git a/hub/services/models.py b/hub/services/models.py index 7bbe86d..af02664 100644 --- a/hub/services/models.py +++ b/hub/services/models.py @@ -146,10 +146,18 @@ class ConsultingPartner(models.Model): blank=True, ) website = models.URLField(blank=True) - services = models.ManyToManyField(Service, related_name="consulting_partners") + linkedin = models.URLField(blank=True) + phone = models.CharField(max_length=25, blank=True, null=True) + email = models.EmailField(max_length=254, blank=True, null=True) + address = models.TextField(max_length=250, blank=True, null=True) + + services = models.ManyToManyField( + Service, related_name="consulting_partners", blank=True + ) cloud_providers = models.ManyToManyField( CloudProvider, related_name="consulting_partners", blank=True ) + is_featured = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) diff --git a/hub/services/templates/services/partner_detail.html b/hub/services/templates/services/partner_detail.html index e7fcd4c..be3f6f4 100644 --- a/hub/services/templates/services/partner_detail.html +++ b/hub/services/templates/services/partner_detail.html @@ -4,74 +4,180 @@
-
+
-

{{ partner.name }}

-
-
+

Servala Consulting Partner

+
+
+
+
+
+
+
+
+ +
+
+ +
+ {% if partner.logo %} + {{ partner.name }} logo + {% endif %} +
+ + +
+

Contact Information

+ +
+ + + {% if partner.cloud_providers.exists %} +
+

Cloud Providers

+ +
+ {% endif %} +
+
+ + +
+
+ +
+
+

{{ partner.name }}

+
+
+ +
+
+ + +
+

About

+
{{ partner.description|safe }}
- {% if partner.website %} -
- Visit Website + + + {% if services %} +
+

Consulting for Services

+
+ {% for service in services %} +
+
+
+
+ {% if service.logo %} + + {{ service.name }} logo + + {% endif %} +
+
{{ service.name }}
+
+ {% for category in service.categories.all|slice:":1" %} + {{ category.name }} + {% endfor %} +
+
+
+
+ {{ service.description|safe|truncatewords_html:30 }} +
+
+
+
+ {% endfor %} +
{% endif %} - -
-
-
- {% if partner.logo %} - {{ partner.name }} logo - {% endif %}
- -
-

Available Services

-

{{ partner.name }} provides consulting services for the following services

-
- {% for service in services %} -
-
-
-
- {% if service.logo %} - - {{ service.name }} logo - - {% endif %} -
-
{{ service.name }}
-
- {% if service.cloud_provider.logo %} - {{ service.cloud_provider.name }} logo - {% endif %} -
- {{ service.cloud_provider.name }} -
-
-
-
-
- {{ service.description|safe|truncatewords_html:30 }} -
-
-
-
- {% empty %} -
-
- No services available from this partner yet. -
-
- {% endfor %} -
-
{% endblock %} \ No newline at end of file