Skip to content

Commit da53cf4

Browse files
Merge pull request #26 from hotosm/feat/home-page-continued
home page done! (for now!)
2 parents a3856c9 + 527ba42 commit da53cf4

34 files changed

+1051
-62
lines changed

app/impact_areas/models.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,9 @@ def get_context(self, request, *args, **kwargs):
2727

2828
projects_list = IndividualProjectPage.objects.live().filter(
2929
Q(impact_area_list__contains=[{'type': 'impact_area', 'value': context['page'].id}])
30-
)
31-
# print(IndividualProjectPage.objects.first().impact_area_list[0].value.id)
32-
# print(context['page'].id)
33-
# print(IndividualProjectPage.objects.first().impact_area_list.__contains__([{'value__id': context['page'].id}]))
34-
# print(dir(IndividualProjectPage.objects.first().impact_area_list))
30+
).filter(locale=context['page'].locale)
3531
page = request.GET.get('page', 1)
36-
paginator = Paginator(projects_list, 4)
32+
paginator = Paginator(projects_list, 8) # if you want more/less items per page (i.e., per load), change the number here to something else
3733
try:
3834
projects = paginator.page(page)
3935
except PageNotAnInteger:
@@ -42,7 +38,7 @@ def get_context(self, request, *args, **kwargs):
4238
projects = paginator.page(paginator.num_pages)
4339

4440
context['projects'] = projects
45-
other_impact_areas = IndividualImpactAreaPage.objects.live()
41+
other_impact_areas = IndividualImpactAreaPage.objects.live().filter(locale=context['page'].locale)
4642
context['other_impact_areas'] = other_impact_areas
4743
return context
4844

app/mapping_hubs/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ class DogearBoxBlock(StreamBlock):
3333
class IndividualMappingHubPage(Page):
3434
def get_context(self, request):
3535
context = super().get_context(request)
36-
projects = IndividualProjectPage.objects.filter(owner_region_hub=context['page'])
36+
projects = IndividualProjectPage.objects.filter(owner_region_hub=context['page'], locale=context['page'].locale)
3737
context['projects'] = projects
38-
other_hubs = IndividualMappingHubPage.objects.live()
38+
other_hubs = IndividualMappingHubPage.objects.live().filter(locale=context['page'].locale)
3939
context['other_hubs'] = other_hubs
4040
return context
4141

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 4.2.7 on 2024-05-27 23:44
2+
3+
from django.db import migrations
4+
import wagtail.blocks
5+
import wagtail.fields
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('news', '0014_individualnewspage_news_read_more_text'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='individualnewspage',
17+
name='article_body',
18+
field=wagtail.fields.StreamField([('text_block', wagtail.blocks.RichTextBlock(features=['h1', 'h2', 'h3', 'h4', 'bold', 'italic', 'link', 'ol', 'ul', 'hr', 'document-link', 'image', 'embed', 'code', 'blockquote']))], blank=True, null=True, use_json_field=True),
19+
),
20+
]

app/programs/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class ProgramGoalBlock(StreamBlock):
3636
class IndividualProgramPage(Page):
3737
def get_context(self, request):
3838
context = super().get_context(request)
39-
projects = IndividualProjectPage.objects.filter(owner_program=context['page'])
39+
projects = IndividualProjectPage.objects.filter(owner_program=context['page'], locale=context['page'].locale)
4040
context['projects'] = projects
4141
return context
4242

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 4.2.7 on 2024-05-27 23:44
2+
3+
from django.db import migrations
4+
import wagtail.blocks
5+
import wagtail.fields
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('projects', '0013_individualprojectpage_impact_area_list'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='individualprojectpage',
17+
name='description',
18+
field=wagtail.fields.StreamField([('text_block', wagtail.blocks.RichTextBlock(features=['h1', 'h2', 'h3', 'h4', 'bold', 'italic', 'link', 'ol', 'ul', 'hr', 'document-link', 'image', 'embed', 'code', 'blockquote']))], null=True, use_json_field=True),
19+
),
20+
]

app/ui/templates/ui/components/news/NewsPreviewBlockProjects.html

+10
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,18 @@
33
- news: an IndividualNewsPage object; the news page to be previewed
44
{% endcomment %}
55

6+
{% load wagtailimages_tags %}
7+
8+
{% image news.image original as image_p %}
69
<div class="my-4">
710
<a href="{{ news.url }}">
11+
{% if showimage %}
12+
<div class="image-hide-small w-full min-h-[9rem] mb-3 content-end bg-no-repeat bg-cover image-overshadow-gradient" style="background-image: url('{{ image_p.url }}')">
13+
<div>
14+
</div>
15+
</div>
16+
{% endif %}
17+
818
<p class="text-hot-red text-small font-semibold">
919
Blog
1020
</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{% load wagtailimages_tags %}
2+
<div x-data="{ partnerIndex: 0, fixedIndex(x) {return ({{programs|length}} + x + this.partnerIndex) % {{programs|length}}}, moveIndex(x) {this.partnerIndex = this.fixedIndex(x)} }" class="{{class}}">
3+
<div class="text-right mb-4">
4+
<div x-on:click="moveIndex(1)" class="pr-4 text-hot-red inline-flex flex-col justify-center">
5+
<div class="border-hot-red border-2 rounded-full h-8 w-8 text-center">
6+
{% include "ui/components/icon_svgs/LinkCaret.html" with class="rotate-180" %}
7+
</div>
8+
</div>
9+
<div x-on:click="moveIndex(-1)" class="text-hot-red inline-flex flex-col justify-center">
10+
<div class="border-hot-red border-2 rounded-full h-8 w-8 text-center">
11+
{% include "ui/components/icon_svgs/LinkCaret.html" %}
12+
</div>
13+
</div>
14+
</div>
15+
16+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
17+
{% for program in programs %}
18+
<div x-show="partnerIndex=={{forloop.counter0}} || fixedIndex(1)=={{forloop.counter0}} || fixedIndex(2)=={{forloop.counter0}} || fixedIndex(3)=={{forloop.counter0}}"
19+
x-bind:class="{'order-1': partnerIndex=={{forloop.counter0}}, 'order-2': fixedIndex(1)=={{forloop.counter0}}, 'order-3 hidden md:block': fixedIndex(2)=={{forloop.counter0}}, 'order-4 hidden lg:block': fixedIndex(3)=={{forloop.counter0}},}"
20+
21+
>
22+
{% include "ui/components/programs/ProgramPreviewBlockBase.html" with program=program.value %}
23+
</div>
24+
{% endfor %}
25+
</div>
26+
</div>

app/ui/templates/ui/components/projects/ProjectPreviewBlockNews.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
</div>
3030
</a>
3131

32-
<p class="text-mini">
32+
<div class="text-mini my-2">
3333
{% for area in project.impact_area_list %}
3434
<a class="text-hot-red text-mini" href="{{ area.value.url }}">
3535
<p>{{ area.value.title }}{% if not forloop.last %},{% endif %}</p>
3636
</a>
3737
{% endfor %}
38-
</p>
38+
</div>
3939
</div>

frontend/tailwind.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ module.exports = {
4444
colors: {
4545
"hot-red": "var(--hot-red)",
4646
"hot-navy": "var(--hot-navy)",
47+
"hot-navy-grey": "var(--hot-navy-grey)",
4748
"hot-dark-grey": "var(--hot-dark-grey)",
4849
"hot-slate-grey": "var(--hot-slate-grey)",
4950
"hot-light-grey": "var(--hot-light-grey)",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Generated by Django 4.2.7 on 2024-05-27 23:44
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import wagtail.blocks
6+
import wagtail.fields
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
13+
('home', '0008_blankinaccessiblepage'),
14+
]
15+
16+
operations = [
17+
migrations.AddField(
18+
model_name='homepage',
19+
name='get_involved_button_link',
20+
field=models.URLField(blank=True),
21+
),
22+
migrations.AddField(
23+
model_name='homepage',
24+
name='get_involved_button_text',
25+
field=models.CharField(default='Get Involved'),
26+
),
27+
migrations.AddField(
28+
model_name='homepage',
29+
name='highlighted_programs',
30+
field=wagtail.fields.StreamField([('program', wagtail.blocks.PageChooserBlock(page_type=['programs.IndividualProgramPage']))], blank=True, null=True, use_json_field=True),
31+
),
32+
migrations.AddField(
33+
model_name='homepage',
34+
name='highlighted_programs_description',
35+
field=wagtail.fields.RichTextField(blank=True),
36+
),
37+
migrations.AddField(
38+
model_name='homepage',
39+
name='highlighted_programs_title',
40+
field=models.CharField(default='Highlighted Programs'),
41+
),
42+
migrations.AddField(
43+
model_name='homepage',
44+
name='impact_areas_description',
45+
field=wagtail.fields.RichTextField(blank=True),
46+
),
47+
migrations.AddField(
48+
model_name='homepage',
49+
name='impact_areas_title',
50+
field=models.CharField(default='Impact Areas'),
51+
),
52+
migrations.AddField(
53+
model_name='homepage',
54+
name='mapping_hubs_description',
55+
field=wagtail.fields.RichTextField(blank=True),
56+
),
57+
migrations.AddField(
58+
model_name='homepage',
59+
name='mapping_hubs_title',
60+
field=wagtail.fields.RichTextField(blank=True, help_text='Any text written in bold will be displayed as red in this title.'),
61+
),
62+
migrations.AddField(
63+
model_name='homepage',
64+
name='opportunities_description',
65+
field=wagtail.fields.RichTextField(blank=True),
66+
),
67+
migrations.AddField(
68+
model_name='homepage',
69+
name='opportunities_title',
70+
field=wagtail.fields.RichTextField(blank=True, help_text='Any text written in bold will be displayed as red in this title.'),
71+
),
72+
migrations.AddField(
73+
model_name='homepage',
74+
name='our_work_title',
75+
field=models.CharField(default='Our Work'),
76+
),
77+
migrations.AddField(
78+
model_name='homepage',
79+
name='partner_with_us_button_link',
80+
field=models.URLField(blank=True),
81+
),
82+
migrations.AddField(
83+
model_name='homepage',
84+
name='partner_with_us_button_text',
85+
field=models.CharField(default='Partner With Us'),
86+
),
87+
migrations.AddField(
88+
model_name='homepage',
89+
name='tools_resources_button_text',
90+
field=models.CharField(default='Tools & Resources'),
91+
),
92+
migrations.AddField(
93+
model_name='homepage',
94+
name='tools_resources_button_url',
95+
field=models.URLField(blank=True),
96+
),
97+
migrations.AddField(
98+
model_name='homepage',
99+
name='tools_resources_description',
100+
field=wagtail.fields.RichTextField(blank=True),
101+
),
102+
migrations.AddField(
103+
model_name='homepage',
104+
name='tools_resources_image',
105+
field=models.ForeignKey(blank=True, help_text='Tools and Resources section image', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'),
106+
),
107+
migrations.AddField(
108+
model_name='homepage',
109+
name='tools_resources_title',
110+
field=wagtail.fields.RichTextField(blank=True, help_text='Any text written in bold will be displayed as red in this title.'),
111+
),
112+
migrations.AddField(
113+
model_name='homepage',
114+
name='view_all_programs_text',
115+
field=models.CharField(default='View all programs'),
116+
),
117+
migrations.AddField(
118+
model_name='homepage',
119+
name='who_we_are_button_link',
120+
field=models.URLField(blank=True),
121+
),
122+
migrations.AddField(
123+
model_name='homepage',
124+
name='who_we_are_button_text',
125+
field=models.CharField(blank=True),
126+
),
127+
migrations.AddField(
128+
model_name='homepage',
129+
name='who_we_are_intro_description',
130+
field=wagtail.fields.RichTextField(blank=True),
131+
),
132+
migrations.AddField(
133+
model_name='homepage',
134+
name='who_we_are_intro_title',
135+
field=wagtail.fields.RichTextField(blank=True, help_text='Any text written in bold will be displayed as red in this title.'),
136+
),
137+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Generated by Django 4.2.7 on 2024-05-28 00:22
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+
('home', '0009_homepage_get_involved_button_link_and_more'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='homepage',
17+
name='news_title',
18+
field=models.CharField(default='News'),
19+
),
20+
migrations.AddField(
21+
model_name='homepage',
22+
name='related_news',
23+
field=wagtail.fields.StreamField([('news_page', wagtail.blocks.PageChooserBlock(page_type=['news.IndividualNewsPage']))], blank=True, null=True, use_json_field=True),
24+
),
25+
migrations.AddField(
26+
model_name='homepage',
27+
name='view_all_news_text',
28+
field=models.CharField(default='View all news'),
29+
),
30+
migrations.AddField(
31+
model_name='homepage',
32+
name='view_all_news_url',
33+
field=models.URLField(blank=True),
34+
),
35+
migrations.AddField(
36+
model_name='homepage',
37+
name='view_all_programs_link',
38+
field=models.URLField(blank=True),
39+
),
40+
]

0 commit comments

Comments
 (0)