style partner detail
This commit is contained in:
parent
fc06226f5a
commit
869ec8bb8e
4 changed files with 87 additions and 59 deletions
|
@ -1,27 +1,38 @@
|
|||
{% extends 'services/base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-start mb-4">
|
||||
{% if partner.logo %}
|
||||
<img src="{{ partner.logo.url }}" alt="{{ partner.name }} logo" class="me-4"
|
||||
style="max-height: 120px; max-width: 240px; object-fit: contain;">
|
||||
{% endif %}
|
||||
<div>
|
||||
<h2 class="card-title mb-3">{{ partner.name }}</h2>
|
||||
{% if partner.website %}
|
||||
<a href="{{ partner.website }}" class="btn btn-outline-primary mb-3" target="_blank">
|
||||
Visit Website
|
||||
</a>
|
||||
{% endif %}
|
||||
<section class="section bg-primary-subtle">
|
||||
<div class="container mx-auto px-20 px-lg-0 pt-40 pb-60">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-12 col-lg-5 mb-47 mb-lg-0">
|
||||
<header class="section-primary__header">
|
||||
<h2 class="section-h1 fs-40 fs-lg-64 mb-14">{{ partner.name }}</h2>
|
||||
<div class="text-gray-300 mb-14">
|
||||
<div class="rich-text-content">
|
||||
{{ partner.description|safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% if partner.website %}
|
||||
<div>
|
||||
<a class="btn btn-primary btn-lg" href="{{ partner.website }}" target="_blank" role="button">Visit Website</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</header>
|
||||
</div>
|
||||
<div class="col-12 col-lg-7">
|
||||
<div>
|
||||
{% if partner.logo %}
|
||||
<img class="img-fluid d-block ml-lg-auto" src="{{ partner.logo.url }}" alt="{{ partner.name }} logo">
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<h3 class="mb-4">Available Services</h3>
|
||||
<div class="container mx-auto px-20 px-lg-0 py-60">
|
||||
<h3 class="section-h2 fs-32 fs-lg-48 mb-40 mt-5">Available Services</h3>
|
||||
<p>{{ partner.name }} provides consulting services for the following services</p>
|
||||
<div class="row row-cols-1 row-cols-md-2 g-4">
|
||||
{% for service in services %}
|
||||
<div class="col">
|
||||
|
@ -29,11 +40,13 @@
|
|||
<div class="card-body">
|
||||
<div class="d-flex align-items-center mb-3">
|
||||
{% if service.logo %}
|
||||
<a href="{{ service.get_absolute_url }}">
|
||||
<img src="{{ service.logo.url }}" alt="{{ service.name }} logo"
|
||||
class="me-3" style="max-height: 50px; max-width: 100px; object-fit: contain;">
|
||||
</a>
|
||||
{% endif %}
|
||||
<div>
|
||||
<h5 class="card-title mb-0">{{ service.name }}</h5>
|
||||
<h5 class="card-title mb-0"><a href="{{ service.get_absolute_url }}" class="text-decoration-none">{{ service.name }}</a></h5>
|
||||
<div class="d-flex align-items-center mt-2">
|
||||
{% if service.cloud_provider.logo %}
|
||||
<img src="{{ service.cloud_provider.logo.url }}" alt="{{ service.cloud_provider.name }} logo"
|
||||
|
@ -49,12 +62,6 @@
|
|||
<div class="card-text description-preview mb-3">
|
||||
{{ service.description|safe|truncatewords_html:30 }}
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
{% for category in service.categories.all %}
|
||||
<span class="badge bg-secondary me-1">{{ category.full_path }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<a href="{{ service.get_absolute_url }}" class="btn btn-primary">View Details</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -66,6 +73,5 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -72,6 +72,23 @@
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Service Filter -->
|
||||
<div class="pt-24 mb-24">
|
||||
<div class="d-flex justify-content-between align-items-center h-33 mb-5px" role="button">
|
||||
<h3 class="sidebar-title mb-0">Service</h3>
|
||||
</div>
|
||||
<div>
|
||||
<select class="form-select" id="service" name="service" @change="submitForm()">
|
||||
<option value="">All Services</option>
|
||||
{% for service in services %}
|
||||
<option value="{{ service.id }}" {% if request.GET.service == service.id|stringformat:'i' %}selected{% endif %}>
|
||||
{{ service.name }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Cloud Provider Filter -->
|
||||
<div class="pt-24 mb-24">
|
||||
<div class="d-flex justify-content-between align-items-center h-33 mb-5px" role="button">
|
||||
|
|
|
@ -18,7 +18,7 @@ def offering_list(request):
|
|||
|
||||
cloud_providers = CloudProvider.objects.all()
|
||||
categories = Category.objects.filter(parent=None).prefetch_related("children")
|
||||
services = Service.objects.all().order_by("name") # Add this line
|
||||
services = Service.objects.all().order_by("name")
|
||||
|
||||
# Handle cloud provider filter
|
||||
if request.GET.get("cloud_provider"):
|
||||
|
@ -34,7 +34,7 @@ def offering_list(request):
|
|||
Q(service__categories=category) | Q(service__categories__in=subcategories)
|
||||
).distinct()
|
||||
|
||||
# Add service filter handling
|
||||
# Handle service filter
|
||||
if request.GET.get("service"):
|
||||
service_id = request.GET.get("service")
|
||||
offerings = offerings.filter(service_id=service_id)
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
from django.shortcuts import render, get_object_or_404
|
||||
from django.db.models import Q
|
||||
from hub.services.models import (
|
||||
ConsultingPartner,
|
||||
CloudProvider,
|
||||
)
|
||||
from hub.services.models import ConsultingPartner, CloudProvider, Service
|
||||
|
||||
|
||||
def partner_list(request):
|
||||
|
@ -11,11 +8,18 @@ def partner_list(request):
|
|||
"services", "cloud_providers"
|
||||
)
|
||||
|
||||
services = Service.objects.all().order_by("name")
|
||||
|
||||
# Handle cloud provider filter
|
||||
if request.GET.get("cloud_provider"):
|
||||
provider_id = request.GET.get("cloud_provider")
|
||||
partners = partners.filter(cloud_providers__id=provider_id)
|
||||
|
||||
# Handle service filter
|
||||
if request.GET.get("service"):
|
||||
service_id = request.GET.get("service")
|
||||
partners = partners.filter(services__id=service_id)
|
||||
|
||||
# Handle search
|
||||
if request.GET.get("search"):
|
||||
query = request.GET.get("search")
|
||||
|
@ -25,6 +29,7 @@ def partner_list(request):
|
|||
|
||||
context = {
|
||||
"partners": partners,
|
||||
"services": services,
|
||||
"cloud_providers": CloudProvider.objects.all(),
|
||||
}
|
||||
return render(request, "services/partner_list.html", context)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue