add coming soon feature
This commit is contained in:
parent
5c626b0212
commit
bde13d4d95
5 changed files with 42 additions and 1 deletions
18
hub/services/migrations/0007_service_is_coming_soon.py
Normal file
18
hub/services/migrations/0007_service_is_coming_soon.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 5.1.5 on 2025-02-26 14:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("services", "0006_cloudprovider_is_featured_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="service",
|
||||||
|
name="is_coming_soon",
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
]
|
|
@ -107,13 +107,22 @@ 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)
|
is_featured = models.BooleanField(default=False)
|
||||||
|
is_coming_soon = 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)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
if self.is_featured and self.is_coming_soon:
|
||||||
|
raise ValidationError(
|
||||||
|
"A service cannot be both featured and coming soon simultaneously."
|
||||||
|
)
|
||||||
|
super().clean()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
self.clean() # Ensure validation runs on save
|
||||||
if not self.slug:
|
if not self.slug:
|
||||||
self.slug = slugify(self.name)
|
self.slug = slugify(self.name)
|
||||||
counter = 1
|
counter = 1
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="flex-1 pr-lg-40 mb-40 mb-lg-0">
|
<div class="flex-1 pr-lg-40 mb-40 mb-lg-0">
|
||||||
<div class="bg-gray-50 rounded-20 p-40">
|
<div class="bg-gray-50 rounded-20 p-40">
|
||||||
<header>
|
<header>
|
||||||
<h2 class="fs-44 fw-semibold mb-40">Enter your details</h2>
|
<h2 class="fs-44 fw-semibold mb-40">Inquiry for {{ service.name }}</h2>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<form method="post">
|
<form method="post">
|
||||||
|
|
|
@ -112,6 +112,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- CTA -->
|
||||||
|
{% if service.is_coming_soon %}
|
||||||
|
<div class="pt-24">
|
||||||
|
<div class="page-action">
|
||||||
|
<a class="btn btn-primary btn-lg mr-md-17 mb-17 mb-md-0px mb-lg-17 mb-xl-0 w-100 w-md-auto" href="{% url 'services:create_lead' service.slug %}"
|
||||||
|
role="button">I'm interested in this service</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -159,6 +159,10 @@
|
||||||
<div>
|
<div>
|
||||||
<a class="btn btn-primary btn-sm" href="">Featured</a>
|
<a class="btn btn-primary btn-sm" href="">Featured</a>
|
||||||
</div>
|
</div>
|
||||||
|
{% elif service.is_coming_soon %}
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-secondary btn-sm" href="">Coming Soon</a>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue