homepage listing

This commit is contained in:
Tobias Brunner 2025-02-25 17:02:01 +01:00
parent e5367419c0
commit ce8c12800c
No known key found for this signature in database
9 changed files with 115 additions and 346 deletions

View 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),
),
]

View file

@ -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),
),
]

View file

@ -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)

View file

@ -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

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -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

View file

@ -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)