homepage listing
This commit is contained in:
parent
e5367419c0
commit
ce8c12800c
9 changed files with 115 additions and 346 deletions
18
hub/services/migrations/0005_service_is_featured.py
Normal file
18
hub/services/migrations/0005_service_is_featured.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 5.1.5 on 2025-02-25 15:38
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("services", "0004_lead_message"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="service",
|
||||||
|
name="is_featured",
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 5.1.5 on 2025-02-25 15:54
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("services", "0005_service_is_featured"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="cloudprovider",
|
||||||
|
name="is_featured",
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="consultingpartner",
|
||||||
|
name="is_featured",
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
|
@ -55,6 +55,7 @@ class CloudProvider(models.Model):
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
)
|
)
|
||||||
|
is_featured = models.BooleanField(default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -105,6 +106,7 @@ class Service(models.Model):
|
||||||
)
|
)
|
||||||
categories = models.ManyToManyField(Category, related_name="services")
|
categories = models.ManyToManyField(Category, related_name="services")
|
||||||
features = ProseEditorField()
|
features = ProseEditorField()
|
||||||
|
is_featured = models.BooleanField(default=False)
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
@ -139,6 +141,7 @@ class ConsultingPartner(models.Model):
|
||||||
cloud_providers = models.ManyToManyField(
|
cloud_providers = models.ManyToManyField(
|
||||||
CloudProvider, related_name="consulting_partners", blank=True
|
CloudProvider, related_name="consulting_partners", blank=True
|
||||||
)
|
)
|
||||||
|
is_featured = models.BooleanField(default=False)
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
|
|
@ -12076,6 +12076,12 @@ a.btn:focus {
|
||||||
margin-bottom: 16px
|
margin-bottom: 16px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card__image__wide {
|
||||||
|
width: 150px;
|
||||||
|
height: 80px;
|
||||||
|
margin-bottom: 16px
|
||||||
|
}
|
||||||
|
|
||||||
.card__title {
|
.card__title {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 22 KiB |
BIN
hub/services/static/img/header-logo1.png
Normal file
BIN
hub/services/static/img/header-logo1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
|
@ -24,8 +24,8 @@
|
||||||
<div class="container-xl mx-auto px-3 px-lg-0 position-relative">
|
<div class="container-xl mx-auto px-3 px-lg-0 position-relative">
|
||||||
<div class="nav__wrapper d-flex justify-content-between align-items-center">
|
<div class="nav__wrapper d-flex justify-content-between align-items-center">
|
||||||
<div class="nav__brand logo">
|
<div class="nav__brand logo">
|
||||||
<a class="navbar__logo" href="" title="logo">
|
<a class="navbar__logo" href="{% url 'services:homepage' %}" title="logo">
|
||||||
<img src="{% static "img/header-logo.png" %}" alt="Servala Logo">
|
<img src="{% static "img/header-logo.png" %}" alt="Servala Logo" width="191" height="43">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div x-cloak class="nav__menu" :class="sideNav ? 'nav__menu-active' : 'nav__menu-hidden'">
|
<div x-cloak class="nav__menu" :class="sideNav ? 'nav__menu-active' : 'nav__menu-hidden'">
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
<ul class="navbar__menu menu mr-lg-27">
|
<ul class="navbar__menu menu mr-lg-27">
|
||||||
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:homepage' %}">Home</a></li>
|
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:homepage' %}">Home</a></li>
|
||||||
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:service_list' %}">Services</a></li>
|
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:service_list' %}">Services</a></li>
|
||||||
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:offering_list' %}">Service Offerings</a></li>
|
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:offering_list' %}">Offerings</a></li>
|
||||||
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:provider_list' %}">Cloud Providers</a></li>
|
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:provider_list' %}">Cloud Providers</a></li>
|
||||||
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:partner_list' %}">Consulting Partners</a></li>
|
<li class="menu__item"><a class="menu__item-link" href="{% url 'services:partner_list' %}">Consulting Partners</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="fs-14 fw-semibold">
|
<div class="fs-14 fw-semibold">
|
||||||
<p>Unlock the Power of Cloud Native Applications.</p>
|
<p>Unlock the Power of Cloud Native Applications</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex align-items-center space-x-20">
|
<div class="d-flex align-items-center space-x-20">
|
||||||
<a href="https://www.linkedin.com/company/5395280/">
|
<a href="https://www.linkedin.com/company/5395280/">
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
<ul class="list-unstyled space-y-20 fs-15 fw-medium ps-0">
|
<ul class="list-unstyled space-y-20 fs-15 fw-medium ps-0">
|
||||||
<li><a href="{% url 'services:homepage' %}">Home</a></li>
|
<li><a href="{% url 'services:homepage' %}">Home</a></li>
|
||||||
<li><a href="{% url 'services:service_list' %}">Services</a></li>
|
<li><a href="{% url 'services:service_list' %}">Services</a></li>
|
||||||
<li><a href="{% url 'services:offering_list' %}">Service Offerings</a></li>
|
<li><a href="{% url 'services:offering_list' %}">Offerings</a></li>
|
||||||
<li><a href="{% url 'services:provider_list' %}">Cloud Providers</a></li>
|
<li><a href="{% url 'services:provider_list' %}">Cloud Providers</a></li>
|
||||||
<li><a href="{% url 'services:partner_list' %}">Consulting Partners</a></li>
|
<li><a href="{% url 'services:partner_list' %}">Consulting Partners</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,22 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
from hub.services.models import Service, CloudProvider, ConsultingPartner
|
||||||
|
|
||||||
|
|
||||||
def homepage(request):
|
def homepage(request):
|
||||||
return render(request, "services/homepage.html")
|
featured_services = Service.objects.filter(is_featured=True).prefetch_related(
|
||||||
|
"categories"
|
||||||
|
)[:4]
|
||||||
|
|
||||||
|
featured_providers = CloudProvider.objects.filter(is_featured=True)[:4]
|
||||||
|
|
||||||
|
featured_partners = ConsultingPartner.objects.filter(
|
||||||
|
is_featured=True
|
||||||
|
).prefetch_related("services", "cloud_providers")[:4]
|
||||||
|
|
||||||
|
context = {
|
||||||
|
"featured_services": featured_services,
|
||||||
|
"featured_providers": featured_providers,
|
||||||
|
"featured_partners": featured_partners,
|
||||||
|
}
|
||||||
|
|
||||||
|
return render(request, "services/homepage.html", context)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue