Change to content to Orderable
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,44 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:57
|
||||
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
import wagtail.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('about', '0003_rename_af1img_aboutpage_section_one_img_and_more'),
|
||||
('wagtailimages', '0026_delete_uploadedimage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='aboutpage',
|
||||
name='section_two_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='aboutpage',
|
||||
name='section_two_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='aboutpage',
|
||||
name='section_two_title',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AboutPageSections',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||
('section_title', wagtail.fields.RichTextField(blank=True)),
|
||||
('section_text', wagtail.fields.RichTextField(blank=True)),
|
||||
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='sections_about', to='about.aboutpage')),
|
||||
('section_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:58
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('about', '0004_remove_aboutpage_section_two_img_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='aboutpage',
|
||||
old_name='section_one_img',
|
||||
new_name='intro_image',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='aboutpage',
|
||||
old_name='section_one_text',
|
||||
new_name='intro_text',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='aboutpage',
|
||||
old_name='section_one_title',
|
||||
new_name='intro_title',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,32 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 13:54
|
||||
|
||||
import wagtail.fields
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('about', '0005_rename_section_one_img_aboutpage_intro_image_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='aboutpage',
|
||||
name='section_one_image',
|
||||
field=wagtail.fields.RichTextField(blank=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='aboutpage',
|
||||
name='section_one_text',
|
||||
field=wagtail.fields.RichTextField(blank=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='aboutpage',
|
||||
name='section_one_title',
|
||||
field=wagtail.fields.RichTextField(blank=True),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='AboutPageSections',
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,25 +10,25 @@ from saburly.custom_editor import FULL_EDITOR
|
||||
|
||||
class AboutPage(Page):
|
||||
|
||||
intro_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_image = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_one_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_two_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_image = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_one_title', classname="full"),
|
||||
FieldPanel('section_one_text', classname="full"),
|
||||
FieldPanel('section_one_img', classname="full"),
|
||||
], heading="Section One"),
|
||||
FieldPanel('intro_title', classname="full"),
|
||||
FieldPanel('intro_text', classname="full"),
|
||||
FieldPanel('intro_image', classname="full"),
|
||||
], heading="Intro"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_two_title', classname="full"),
|
||||
FieldPanel('section_two_text', classname="full"),
|
||||
FieldPanel('section_two_img', classname="full"),
|
||||
], heading="Section Two"),
|
||||
FieldPanel('section_one_title', classname="full"),
|
||||
FieldPanel('section_one_text', classname="full"),
|
||||
FieldPanel('section_one_image', classname="full"),
|
||||
], heading="Section One"),
|
||||
]
|
||||
|
||||
|
||||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:36
|
||||
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
import wagtail.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0005_rename_hf4img_homepage_section_five_img_and_more'),
|
||||
('wagtailimages', '0026_delete_uploadedimage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='homepage',
|
||||
old_name='section_one_img',
|
||||
new_name='intro_image',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='homepage',
|
||||
old_name='section_one_text',
|
||||
new_name='intro_text',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='homepage',
|
||||
old_name='section_one_title',
|
||||
new_name='intro_title',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='HomePageSections',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||
('section_title', wagtail.fields.RichTextField(blank=True)),
|
||||
('section_text', wagtail.fields.RichTextField(blank=True)),
|
||||
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='homepage_sections', to='home.homepage')),
|
||||
('section_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,61 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:39
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0006_rename_section_one_img_homepage_intro_image_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_five_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_five_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_five_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_four_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_four_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_four_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_three_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_three_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_three_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_two_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_two_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='homepage',
|
||||
name='section_two_title',
|
||||
),
|
||||
]
|
||||
18
home/migrations/0008_alter_homepagesections_id.py
Normal file
18
home/migrations/0008_alter_homepagesections_id.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 13:01
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0007_remove_homepage_section_five_img_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='homepagesections',
|
||||
name='id',
|
||||
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,62 +2,45 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.db import models
|
||||
|
||||
from wagtail.models import Page
|
||||
from wagtail.models import Page, Orderable
|
||||
from wagtail.fields import RichTextField
|
||||
from wagtail.admin.panels import FieldPanel, MultiFieldPanel
|
||||
from wagtail.admin.panels import FieldPanel, MultiFieldPanel, InlinePanel
|
||||
from modelcluster.models import ParentalKey
|
||||
|
||||
from saburly.custom_editor import FULL_EDITOR
|
||||
|
||||
class HomePage(Page):
|
||||
intro_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_image = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_one_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_two_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_three_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_three_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_three_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_four_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_four_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_four_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_five_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_five_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_five_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_one_title', classname="full"),
|
||||
FieldPanel('section_one_text', classname="full"),
|
||||
FieldPanel('section_one_img', classname="full"),
|
||||
], heading="Section One"),
|
||||
FieldPanel('intro_title', classname="full"),
|
||||
FieldPanel('intro_text', classname="full"),
|
||||
FieldPanel('intro_image', classname="full"),
|
||||
], heading="Intro Section"),
|
||||
InlinePanel('homepage_sections', heading="Sections Home", label="Sections Home"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_two_title', classname="full"),
|
||||
FieldPanel('section_two_text', classname="full"),
|
||||
FieldPanel('section_two_img', classname="full"),
|
||||
], heading="Section Two"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_three_title', classname="full"),
|
||||
FieldPanel('section_three_text', classname="full"),
|
||||
FieldPanel('section_three_img', classname="full"),
|
||||
], heading="Section Three"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_four_title', classname="full"),
|
||||
FieldPanel('section_four_text', classname="full"),
|
||||
FieldPanel('section_four_img', classname="full"),
|
||||
], heading="Section Four"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_five_title', classname="full"),
|
||||
FieldPanel('section_five_text', classname="full"),
|
||||
FieldPanel('section_five_img', classname="full"),
|
||||
], heading="Section Five"),
|
||||
]
|
||||
|
||||
|
||||
class HomePageSections(Orderable):
|
||||
page = ParentalKey(HomePage, on_delete=models.CASCADE, related_name='homepage_sections')
|
||||
|
||||
section_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_image = models.ForeignKey(
|
||||
'wagtailimages.Image',
|
||||
null=True,
|
||||
blank=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='+'
|
||||
)
|
||||
|
||||
panels = [
|
||||
FieldPanel('section_title'),
|
||||
FieldPanel('section_text'),
|
||||
FieldPanel('section_image'),
|
||||
]
|
||||
|
||||
Binary file not shown.
@@ -97,6 +97,8 @@ DATABASES = {
|
||||
}
|
||||
}
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
|
||||
|
||||
Binary file not shown.
31
services/migrations/0006_servicespagesections.py
Normal file
31
services/migrations/0006_servicespagesections.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-15 18:45
|
||||
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
import wagtail.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0005_rename_carouse_image_servicespagecarousel_carousel_image_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ServicesPageSections',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||
('section_title', wagtail.fields.RichTextField(blank=True)),
|
||||
('section_text', wagtail.fields.RichTextField(blank=True)),
|
||||
('section_image', wagtail.fields.RichTextField(blank=True)),
|
||||
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='sections_services', to='services.servicespage')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:06
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0006_servicespagesections'),
|
||||
('wagtailimages', '0026_delete_uploadedimage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='servicespagesections',
|
||||
name='section_image',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:14
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0007_alter_servicespagesections_section_image'),
|
||||
('wagtailimages', '0026_delete_uploadedimage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='servicespage',
|
||||
old_name='section_one_text',
|
||||
new_name='intro_text',
|
||||
),
|
||||
migrations.RenameField(
|
||||
model_name='servicespage',
|
||||
old_name='section_one_title',
|
||||
new_name='intro_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_one_img',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='servicespage',
|
||||
name='intro_image',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,80 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:23
|
||||
|
||||
import django.db.models.deletion
|
||||
import modelcluster.fields
|
||||
import wagtail.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0008_rename_section_one_text_servicespage_intro_text_and_more'),
|
||||
('wagtailimages', '0026_delete_uploadedimage'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_five_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_five_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_five_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_four_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_four_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_four_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_three_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_three_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_three_title',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_two_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_two_text',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='section_two_title',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ServicesPageSubSection',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(blank=True, editable=False, null=True)),
|
||||
('sub_section_title', wagtail.fields.RichTextField(blank=True)),
|
||||
('sub_section_text', wagtail.fields.RichTextField(blank=True)),
|
||||
('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='subsections_services', to='services.servicespage')),
|
||||
('sub_section_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['sort_order'],
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:52
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0009_remove_servicespage_section_five_img_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='servicespagesubsection',
|
||||
name='sub_section_title',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,61 @@
|
||||
# Generated by Django 5.0.8 on 2024-09-16 12:57
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0010_remove_servicespagesubsection_sub_section_title'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_five',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_five_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_four',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_four_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_one',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_one_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_six',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_six_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_three',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_three_img',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_two',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='servicespage',
|
||||
name='sub_section_two_img',
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,98 +10,24 @@ from saburly.custom_editor import FULL_EDITOR
|
||||
|
||||
|
||||
class ServicesPage(Page):
|
||||
section_one_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_one_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
|
||||
section_two_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_two_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
section_three_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_three_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_three_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
|
||||
section_four_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_four_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_four_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
|
||||
section_five_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_five_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_five_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
|
||||
sub_section_one = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_one_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
sub_section_two = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_two_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
sub_section_three = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_three_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
sub_section_four = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_four_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
sub_section_five = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_five_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
sub_section_six = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_six_img = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
|
||||
|
||||
|
||||
intro_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
intro_image = models.ForeignKey(
|
||||
'wagtailimages.Image',
|
||||
null=True,
|
||||
blank=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='+'
|
||||
)
|
||||
content_panels = Page.content_panels + [
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_one_title'),
|
||||
FieldPanel('section_one_text'),
|
||||
FieldPanel('section_one_img'),
|
||||
], heading="Section 1"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_two_title'),
|
||||
FieldPanel('section_two_text'),
|
||||
FieldPanel('section_two_img'),
|
||||
], heading="Section 2"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_three_title'),
|
||||
FieldPanel('section_three_text'),
|
||||
FieldPanel('section_three_img'),
|
||||
], heading="Section 3"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_four_title'),
|
||||
FieldPanel('section_four_text'),
|
||||
FieldPanel('section_four_img'),
|
||||
], heading="Section 4"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('section_five_title'),
|
||||
FieldPanel('section_five_text'),
|
||||
FieldPanel('section_five_img'),
|
||||
], heading="Section 5"),
|
||||
|
||||
MultiFieldPanel([
|
||||
FieldPanel('sub_section_one'),
|
||||
FieldPanel('sub_section_one_img'),
|
||||
FieldPanel('sub_section_two'),
|
||||
FieldPanel('sub_section_two_img'),
|
||||
FieldPanel('sub_section_three'),
|
||||
FieldPanel('sub_section_three_img'),
|
||||
FieldPanel('sub_section_four'),
|
||||
FieldPanel('sub_section_four_img'),
|
||||
FieldPanel('sub_section_five'),
|
||||
FieldPanel('sub_section_five_img'),
|
||||
FieldPanel('sub_section_six'),
|
||||
FieldPanel('sub_section_six_img'),
|
||||
], heading="Section 5 Subfields"),
|
||||
|
||||
FieldPanel('intro_title'),
|
||||
FieldPanel('intro_text'),
|
||||
FieldPanel('intro_image'),
|
||||
], heading="Intro Section"),
|
||||
InlinePanel('carousel_services', heading="Carousel Services", label="Carousel Services"),
|
||||
|
||||
InlinePanel('sections_services', heading="Sections Services", label="Sections Services"),
|
||||
InlinePanel('subsections_services', heading="Sub-Sections Services", label="Sub-Sections Services"),
|
||||
]
|
||||
|
||||
class ServicesPageCarousel(Orderable):
|
||||
@@ -120,3 +46,39 @@ class ServicesPageCarousel(Orderable):
|
||||
FieldPanel('carousel_name'),
|
||||
FieldPanel('carousel_image'),
|
||||
]
|
||||
|
||||
class ServicesPageSections(Orderable):
|
||||
page = ParentalKey(ServicesPage, on_delete=models.CASCADE, related_name='sections_services')
|
||||
|
||||
section_title = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
section_image = models.ForeignKey(
|
||||
'wagtailimages.Image',
|
||||
null=True,
|
||||
blank=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='+'
|
||||
)
|
||||
|
||||
panels = [
|
||||
FieldPanel('section_title'),
|
||||
FieldPanel('section_text'),
|
||||
FieldPanel('section_image'),
|
||||
]
|
||||
|
||||
class ServicesPageSubSection(Orderable):
|
||||
page = ParentalKey(ServicesPage, on_delete=models.CASCADE, related_name='subsections_services')
|
||||
|
||||
sub_section_text = RichTextField(blank=True, features=FULL_EDITOR)
|
||||
sub_section_image = models.ForeignKey(
|
||||
'wagtailimages.Image',
|
||||
null=True,
|
||||
blank=True,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='+'
|
||||
)
|
||||
|
||||
panels = [
|
||||
FieldPanel('sub_section_text'),
|
||||
FieldPanel('sub_section_image'),
|
||||
]
|
||||
@@ -7,19 +7,19 @@
|
||||
{% block content %}
|
||||
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="container mx-auto p-4 pt-6">
|
||||
<div class="flex flex-col lg:flex-row">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pr-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_one_title|richtext }}
|
||||
{{ page.intro_title|richtext }}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_one_text|richtext }}
|
||||
{{ page.intro_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_one_img|richtext }}
|
||||
{{ page.intro_image|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,15 +33,15 @@
|
||||
<div class="flex flex-col lg:flex-row">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pr-8">
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_two_title|richtext }}
|
||||
{{ page.section_one_title|richtext }}
|
||||
</div>
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_two_text|richtext }}
|
||||
{{ page.section_one_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_two_img|richtext }}
|
||||
{{ page.section_one_image|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -25,6 +25,5 @@
|
||||
{% include 'footer.html' %}
|
||||
</main>
|
||||
<script src="{%static './js/index.js'%}"></script>
|
||||
<script src="{%static './js/carousel.js'%}"></script>
|
||||
</body>
|
||||
|
||||
@@ -10,88 +10,70 @@
|
||||
<div class="container mx-auto items-center flex xl:flex-row justify-between flex-col p-4">
|
||||
<div class="lg:w-3/5 text-center lg:text-left">
|
||||
<h2 class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_one_title|richtext }}
|
||||
{{ page.intro_title|richtext }}
|
||||
</h2>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_one_text|richtext }}
|
||||
{{ page.intro_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_one_img|richtext }}
|
||||
{{ page.intro_image|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto items-center flex xl:flex-row justify-between flex-col p-4">
|
||||
<div class="lg:w-2/5">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_two_img|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-3/5 text-center lg:text-left">
|
||||
<h2 class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_two_title|richtext }}
|
||||
</h2>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_two_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto items-center flex xl:flex-row justify-between flex-col p-4">
|
||||
<div class="lg:w-3/5 text-center lg:text-left">
|
||||
<h2 class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_three_title|richtext }}
|
||||
</h2>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_three_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_three_img|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto items-center flex xl:flex-row justify-between flex-col p-4">
|
||||
<div class="lg:w-2/5">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_four_img|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-3/5 text-center lg:text-left">
|
||||
<h2 class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_four_title|richtext }}
|
||||
</h2>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_four_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% for item in page.homepage_sections.all %}
|
||||
{% if item.section_image %}
|
||||
{% if forloop.counter|divisibleby:2 %}
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto grid grid-cols-1 gap-6 p-4">
|
||||
<div class="text-center lg:text-center">
|
||||
<div class="container mx-auto items-center flex xl:flex-row justify-between flex-col p-4">
|
||||
<div class="lg:w-3/5 text-center lg:text-left">
|
||||
<h2 class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_five_title|richtext }}
|
||||
{{ item.section_title|richtext }}
|
||||
</h2>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ item.section_text|richtext }}
|
||||
</div>
|
||||
<div class="text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_five_text|richtext }}
|
||||
</div>
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_five_img|richtext }}
|
||||
<div class="lg:w-2/5">
|
||||
<img src="{{ item.section_image.file.url }}" alt="{{ item.section_title }}" class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
{% else %}
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8"></div>
|
||||
<div class="flex flex-col lg:flex-row-reverse">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pl-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ item.section_title|richtext}}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ item.section_text|richtext}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<img src="{{ item.section_image.file.url }}" alt="Intro Image" class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto grid grid-cols-1 gap-6 p-4">
|
||||
<div>
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ item.section_title|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ item.section_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock content %}
|
||||
@@ -12,81 +12,75 @@
|
||||
<div class="flex flex-col lg:flex-row">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pr-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_one_title|richtext }}
|
||||
{{ page.intro_title|richtext }}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_one_text|richtext }}
|
||||
{{ page.intro_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_one_img|richtext }}
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto tiltImage">
|
||||
<img src="{{ page.intro_image.file.url }}" alt="Intro Image" class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8"></div>
|
||||
<div class="flex flex-col lg:flex-row-reverse">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pl-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_two_title|richtext }}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_two_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_two_img|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-white">
|
||||
{% for item in page.sections_services.all %}
|
||||
{% if item.section_image %}
|
||||
{% if forloop.counter|divisibleby:2 %}
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8"></div>
|
||||
<div class="flex flex-col lg:flex-row">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pr-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_three_title|richtext }}
|
||||
{{ item.section_title|richtext}}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_three_text|richtext }}
|
||||
{{ item.section_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5">
|
||||
<img src="{{ item.section_image.file.url }}" alt="{{ item.section_title }}" class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% else %}
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8"></div>
|
||||
<div class="flex flex-col lg:flex-row-reverse">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pl-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ item.section_title|richtext}}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ item.section_text|richtext}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_three_img|richtext }}
|
||||
<img src="{{ item.section_image.file.url }}" alt="Intro Image" class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="relative bg-gray-100 shadow-3xl border border-gray-300">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8">
|
||||
</div>
|
||||
<div class="grid grid-cols-1 lg:grid-cols-1 gap-8">
|
||||
<div class="text-center text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_four_title|richtext }}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-sm sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_four_text|richtext }}
|
||||
</div>
|
||||
<div class="flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_four_img|richtext }}
|
||||
</section>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<section class="relative bg-gray-100">
|
||||
<div class="container mx-auto grid grid-cols-1 gap-6 p-4">
|
||||
<div class="text-center lg:text-center">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ item.section_title|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ item.section_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
{% if forloop.counter == 3 %}
|
||||
<div class="container mx-auto px-4 pb-5">
|
||||
<div class="relative">
|
||||
<div class="carousel-slider">
|
||||
@@ -103,79 +97,31 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<section class="relative bg-white">
|
||||
<div class="container mx-auto p-4">
|
||||
<div class="text-center mb-8"></div>
|
||||
<div class="flex flex-col lg:flex-row">
|
||||
<div class="lg:w-3/5 mb-4 lg:mb-0 lg:pr-8">
|
||||
<div class="text-3xl xsm:text-4xl md:text-5xl py-2 my-2 lg:text-5xl">
|
||||
{{ page.section_five_title|richtext }}
|
||||
</div>
|
||||
<div class="mb-10 text-base md:text-lg lg:text-lg text-left leading-smaller sm:leading-mid md:leading-normal lg:leading-loose">
|
||||
{{ page.section_five_text|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:w-2/5 flex items-center justify-center">
|
||||
<div class="md:max-h-sm md:max-w-35 mx-auto">
|
||||
{{ page.section_five_img|richtext }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="container mx-auto shadow-xl border border-gray-300">
|
||||
<div class="grid grid-cols-1 sm:grid-cols-2">
|
||||
|
||||
{% for item in page.subsections_services.all %}
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_one_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_one|richtext }}</div>
|
||||
<div class="flex justify-center">
|
||||
<img src="{{ item.sub_section_image.file.url }}" style="max-width: 30%; height: auto;"/>
|
||||
</div>
|
||||
<div>{{ item.sub_section_text|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<br />
|
||||
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_two_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_two|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% load static %}
|
||||
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_three_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_three|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_four_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_four|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_five_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_five|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="border border-gray-300 p-6">
|
||||
<div class="grid grid-cols-1 gap-4 text-center">
|
||||
<div class="flex justify-center">{{ page.sub_section_six_img|richtext }}</div>
|
||||
<div>{{ page.sub_section_six|richtext }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
<br />
|
||||
{% endblock %}
|
||||
<script src="{%static './js/carousel.js'%}"></script>
|
||||
|
||||
{% endblock content%}
|
||||
Reference in New Issue
Block a user