diff --git a/hub/services/migrations/0015_cloudprovider_address_cloudprovider_email_and_more.py b/hub/services/migrations/0015_cloudprovider_address_cloudprovider_email_and_more.py new file mode 100644 index 0000000..bf75811 --- /dev/null +++ b/hub/services/migrations/0015_cloudprovider_address_cloudprovider_email_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.5 on 2025-03-03 08:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("services", "0014_plan_pricing"), + ] + + operations = [ + migrations.AddField( + model_name="cloudprovider", + name="address", + field=models.TextField(blank=True, max_length=250, null=True), + ), + migrations.AddField( + model_name="cloudprovider", + name="email", + field=models.EmailField(blank=True, max_length=254, null=True), + ), + migrations.AddField( + model_name="cloudprovider", + name="linkedin", + field=models.URLField(blank=True), + ), + migrations.AddField( + model_name="cloudprovider", + name="phone", + field=models.CharField(blank=True, max_length=25, null=True), + ), + ] diff --git a/hub/services/models.py b/hub/services/models.py index 8c24bb7..4b818df 100644 --- a/hub/services/models.py +++ b/hub/services/models.py @@ -87,6 +87,10 @@ class CloudProvider(models.Model): slug = models.SlugField(unique=True) description = ProseEditorField() website = models.URLField() + 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) logo = models.ImageField( upload_to="cloud_provider_logos/", validators=[validate_image_size], diff --git a/hub/services/templates/services/partner_detail.html b/hub/services/templates/services/partner_detail.html index 44ce531..da5be3e 100644 --- a/hub/services/templates/services/partner_detail.html +++ b/hub/services/templates/services/partner_detail.html @@ -143,29 +143,32 @@ {% 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 %} -
-
+
+
+ {% if service.logo %} +
+ {% if service.logo %} + -
- {{ service.description|safe|truncatewords_html:30 }} + {% endif %} +
+ {% endif %} +
+
+

{{ service.name }}

+

+ {% for category in service.categories.all %} + {{ category.full_path }} + {% endfor %} +

+
+
+

{{ service.description|safe|truncatewords:30 }}

diff --git a/hub/services/templates/services/provider_detail.html b/hub/services/templates/services/provider_detail.html index d35bf09..880ce4f 100644 --- a/hub/services/templates/services/provider_detail.html +++ b/hub/services/templates/services/provider_detail.html @@ -5,27 +5,176 @@ {% block content %}
-
-
-
-

{{ provider.name }}

-
-
+
+

Service Provider

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

Contact Information

+ +
+ + + {% if provider.partners.exists %} +
+

Consulting Partners

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

{{ provider.name }}

+
+
+ +
+
+ + +
+

About

+
{{ provider.description|safe }}
- {% if provider.website %} - - {% endif %} - -
-
-
- {% if provider.logo %} -
- {{ provider.name }} logo + + + {% if services %} +
+

Available Services

+
+ {% for offering in provider.offerings.all %} +
+
+ {% if offering.service.logo or offering.service.is_featured %} +
+ {% if offering.service.logo %} +
+ + {{ offering.service.name }} logo + +
+ {% endif %} +
+ {% endif %} +
+
+

{{ offering.service.name }}

+

+ {% for category in offering.service.categories.all %} + {{ category.full_path }} + {% endfor %} +

+
+
+

{{ offering.service.description|safe|truncatewords:30 }}

+
+
+
+
+ {% endfor %} +
{% endif %}
@@ -33,41 +182,4 @@
- -
-

Available Services

-

The following services are available on {{ provider.name }} through Servala

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