Skip to content

Commit 3ef9637

Browse files
Merge pull request #23 from hotosm/feat/ind-program-page
Feat/ind program page
2 parents beab81f + e46c57d commit 3ef9637

37 files changed

+650
-11
lines changed

app/core/__init__.py

Whitespace-only changes.

app/core/admin.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.

app/core/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class CoreConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'app.core'

app/core/migrations/0001_initial.py

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 21:39
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Partner',
18+
fields=[
19+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('partner_name', models.CharField()),
21+
('partner_url', models.URLField()),
22+
('partner_logo', models.ForeignKey(blank=True, help_text='Partner logo', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
23+
],
24+
options={
25+
'verbose_name_plural': 'Partners',
26+
},
27+
),
28+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 21:50
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
11+
('core', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='partner',
17+
name='partner_logo',
18+
field=models.ForeignKey(help_text='Partner logo', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
19+
),
20+
migrations.AlterField(
21+
model_name='partner',
22+
name='partner_url',
23+
field=models.URLField(blank=True),
24+
),
25+
]

app/core/migrations/__init__.py

Whitespace-only changes.

app/core/models.py

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from django.db import models
2+
3+
from wagtail.snippets.models import register_snippet
4+
from wagtail.admin.panels import FieldPanel, MultiFieldPanel, InlinePanel
5+
6+
7+
@register_snippet
8+
class Partner(models.Model):
9+
partner_name = models.CharField()
10+
partner_logo = models.ForeignKey(
11+
"wagtailimages.Image",
12+
null=True,
13+
on_delete=models.SET_NULL,
14+
related_name="+",
15+
help_text="Partner logo"
16+
)
17+
partner_url = models.URLField(blank=True)
18+
19+
panels = [
20+
FieldPanel("partner_name"),
21+
FieldPanel("partner_logo"),
22+
FieldPanel("partner_url"),
23+
]
24+
25+
def __str__(self):
26+
return self.partner_name
27+
28+
class Meta:
29+
verbose_name_plural = "Partners"

app/core/tests.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.

app/core/views.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.shortcuts import render
2+
3+
# Create your views here.

app/news/templates/news/individual_news_page.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ <h1>{{ page.title }}</h1>
3737
<h1 class="text-h2 font-bold mb-4">
3838
{{ page.related_projects_title }}
3939
</h1>
40-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-1">
40+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-1 gap-x-4">
4141
{% with projects=page.related_projects %}
4242
{% for project in projects %}
4343
{% include "ui/components/projects/ProjectPreviewBlockNews.html" with project=project.value %}
@@ -54,7 +54,7 @@ <h1 class="text-h2 font-bold mb-4">
5454
{{ page.related_news_title }}
5555
</h1>
5656
{% include "ui/components/BaseLink.html" with linkurl="#" linktext=page.view_all_news_text %}
57-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-1">
57+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-1 gap-x-4">
5858
{% with allnews=page.related_news %}
5959
{% for news in allnews %}
6060
{% include "ui/components/news/NewsPreviewBlockNews.html" with news=news.value %}

app/programs/__init__.py

Whitespace-only changes.

app/programs/admin.py

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.

app/programs/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class ProgramsConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'app.programs'
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 16:06
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import wagtail.blocks
6+
import wagtail.fields
7+
import wagtail.images.blocks
8+
9+
10+
class Migration(migrations.Migration):
11+
12+
initial = True
13+
14+
dependencies = [
15+
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
16+
('wagtailcore', '0089_log_entry_data_json_null_to_object'),
17+
]
18+
19+
operations = [
20+
migrations.CreateModel(
21+
name='IndividualProgramPage',
22+
fields=[
23+
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
24+
('subtitle', wagtail.fields.RichTextField(blank=True)),
25+
('intro', wagtail.fields.RichTextField(blank=True)),
26+
('description', wagtail.fields.RichTextField(blank=True)),
27+
('stats_title', models.CharField(default='Stats')),
28+
('stats', wagtail.fields.StreamField([('stat_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock()), ('description', wagtail.blocks.RichTextBlock())]))], blank=True, null=True, use_json_field=True)),
29+
('goals_title', models.CharField(default='Goals')),
30+
('goals', wagtail.fields.StreamField([('goal_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock()), ('description', wagtail.blocks.RichTextBlock()), ('icon', wagtail.images.blocks.ImageChooserBlock())]))], blank=True, null=True, use_json_field=True)),
31+
('projects_title', models.CharField(default='Projects')),
32+
('partners_title', models.CharField(default='Meet Our Partners')),
33+
('more_programs_title', models.CharField(default='More Programs')),
34+
('header_image', models.ForeignKey(blank=True, help_text='Header image', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
35+
('intro_image', models.ForeignKey(blank=True, help_text='Intro image', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
36+
],
37+
options={
38+
'abstract': False,
39+
},
40+
bases=('wagtailcore.page',),
41+
),
42+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 21:46
2+
3+
from django.db import migrations
4+
import modelcluster.fields
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('core', '0001_initial'),
11+
('programs', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='individualprogrampage',
17+
name='partners',
18+
field=modelcluster.fields.ParentalManyToManyField(blank=True, to='core.partner'),
19+
),
20+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 23:29
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('programs', '0002_individualprogrampage_partners'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='individualprogrampage',
15+
name='view_all_partners_title',
16+
field=models.CharField(default='View All Partners'),
17+
),
18+
migrations.AddField(
19+
model_name='individualprogrampage',
20+
name='view_all_programs_title',
21+
field=models.CharField(default='View All Programs'),
22+
),
23+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 4.2.7 on 2024-05-15 23:33
2+
3+
from django.db import migrations, models
4+
import wagtail.blocks
5+
import wagtail.fields
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('programs', '0003_individualprogrampage_view_all_partners_title_and_more'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='individualprogrampage',
17+
name='more_programs',
18+
field=wagtail.fields.StreamField([('program_page', wagtail.blocks.PageChooserBlock(page_type=['programs.IndividualProgramPage']))], blank=True, null=True, use_json_field=True),
19+
),
20+
migrations.AddField(
21+
model_name='individualprogrampage',
22+
name='view_all_partners_link',
23+
field=models.CharField(blank=True),
24+
),
25+
migrations.AddField(
26+
model_name='individualprogrampage',
27+
name='view_all_programs_link',
28+
field=models.URLField(blank=True),
29+
),
30+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 4.2.7 on 2024-05-21 16:33
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('programs', '0004_individualprogrampage_more_programs_and_more'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='individualprogrampage',
15+
name='bottom_banner_text',
16+
field=models.CharField(default='Check out the many opportunities to get involved with HOT!'),
17+
),
18+
migrations.AddField(
19+
model_name='individualprogrampage',
20+
name='bottom_banner_url',
21+
field=models.URLField(blank=True),
22+
),
23+
migrations.AddField(
24+
model_name='individualprogrampage',
25+
name='bottom_banner_url_text',
26+
field=models.CharField(default='Get Involved with HOT'),
27+
),
28+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.7 on 2024-05-21 16:47
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('programs', '0005_individualprogrampage_bottom_banner_text_and_more'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='individualprogrampage',
15+
name='bottom_banner_text',
16+
field=models.CharField(default='Check out many opportunities to get involved with HOT!'),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.7 on 2024-05-21 17:04
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('programs', '0006_alter_individualprogrampage_bottom_banner_text'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='individualprogrampage',
15+
name='bottom_banner_text',
16+
field=models.CharField(default='Check out the many opportunities to get involved with HOT!'),
17+
),
18+
]

app/programs/migrations/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)