Skip to content

Commit

Permalink
Merge pull request #27 from hotosm/feat/ind-member-page
Browse files Browse the repository at this point in the history
created individual member page + improved existing page structure
  • Loading branch information
luminaryFlowers authored Jun 5, 2024
2 parents da53cf4 + 35db98d commit d394c78
Show file tree
Hide file tree
Showing 42 changed files with 1,184 additions and 175 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Generated by Django 4.2.7 on 2024-06-04 23:15

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('impact_areas', '0013_individualimpactareapage_external_icon_and_more'),
]

operations = [
migrations.RemoveField(
model_name='individualimpactareapage',
name='black_dogear_box_link_text',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='black_dogear_box_link_url',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='black_dogear_box_title',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='explore_impact_areas_text',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='load_more_projects_text',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='projects_title',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='red_dogear_box_link_text',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='red_dogear_box_link_url',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='red_dogear_box_title',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='use_cases_title',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='view_all_projects_link',
),
migrations.RemoveField(
model_name='individualimpactareapage',
name='view_all_projects_text',
),
migrations.AddField(
model_name='impactareaspage',
name='black_dogear_box_link_text',
field=models.CharField(default='Get Involved with HOT'),
),
migrations.AddField(
model_name='impactareaspage',
name='black_dogear_box_link_url',
field=models.URLField(blank=True),
),
migrations.AddField(
model_name='impactareaspage',
name='black_dogear_box_title',
field=models.CharField(default='Check many opportunities to get involved with HOT!'),
),
migrations.AddField(
model_name='impactareaspage',
name='explore_impact_areas_text',
field=models.CharField(default='Explore Other Impact Areas'),
),
migrations.AddField(
model_name='impactareaspage',
name='load_more_projects_text',
field=models.CharField(default='Load More Projects'),
),
migrations.AddField(
model_name='impactareaspage',
name='projects_title',
field=models.CharField(default='Projects'),
),
migrations.AddField(
model_name='impactareaspage',
name='red_dogear_box_link_text',
field=models.CharField(default='View Tools & Resources'),
),
migrations.AddField(
model_name='impactareaspage',
name='red_dogear_box_link_url',
field=models.URLField(blank=True),
),
migrations.AddField(
model_name='impactareaspage',
name='red_dogear_box_title',
field=models.CharField(default='Learn more about Tools & Resources and Data Access'),
),
migrations.AddField(
model_name='impactareaspage',
name='use_cases_title',
field=models.CharField(default='Use Cases'),
),
migrations.AddField(
model_name='impactareaspage',
name='view_all_projects_link',
field=models.URLField(blank=True),
),
migrations.AddField(
model_name='impactareaspage',
name='view_all_projects_text',
field=models.CharField(default='View all projects'),
),
]
78 changes: 45 additions & 33 deletions app/impact_areas/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ def get_context(self, request, *args, **kwargs):
context['other_impact_areas'] = other_impact_areas
return context

parent_page_type = [
'impact_areas.ImpactAreasPage'
]

header_image = models.ForeignKey(
"wagtailimages.Image",
null=True,
Expand Down Expand Up @@ -71,24 +75,8 @@ def get_context(self, request, *args, **kwargs):
intro = RichTextField(blank=True)
description = RichTextField(blank=True)

use_cases_title = models.CharField(default="Use Cases")
use_cases = StreamField(UseCaseBlock(), use_json_field=True, blank=True, null=True)

projects_title = models.CharField(default="Projects")
view_all_projects_text = models.CharField(default="View all projects")
view_all_projects_link = models.URLField(blank=True)
load_more_projects_text = models.CharField(default="Load More Projects")

explore_impact_areas_text = models.CharField(default="Explore Other Impact Areas")

red_dogear_box_title = models.CharField(blank=True)
red_dogear_box_link_text = models.CharField(blank=True)
red_dogear_box_link_url = models.URLField(blank=True)

black_dogear_box_title = models.CharField(blank=True)
black_dogear_box_link_text = models.CharField(blank=True)
black_dogear_box_link_url = models.URLField(blank=True)

content_panels = Page.content_panels + [
MultiFieldPanel([
FieldPanel('header_image'),
Expand All @@ -101,24 +89,8 @@ def get_context(self, request, *args, **kwargs):
FieldPanel('description'),
], heading="Body"),
MultiFieldPanel([
FieldPanel('use_cases_title'),
FieldPanel('use_cases'),
], heading="Use Cases"),
MultiFieldPanel([
FieldPanel('projects_title'),
FieldPanel('view_all_projects_text'),
FieldPanel('view_all_projects_link'),
FieldPanel('load_more_projects_text'),
], heading="Projects"),
FieldPanel('explore_impact_areas_text'),
MultiFieldPanel([
FieldPanel('red_dogear_box_title'),
FieldPanel('red_dogear_box_link_text'),
FieldPanel('red_dogear_box_link_url'),
FieldPanel('black_dogear_box_title'),
FieldPanel('black_dogear_box_link_text'),
FieldPanel('black_dogear_box_link_url'),
], heading="Dogear Boxes"),
]


Expand All @@ -134,6 +106,8 @@ class ImpactAreaBlock(StreamBlock):


class ImpactAreasPage(Page):
max_count = 1

intro = RichTextField(blank=True)

image = models.ForeignKey(
Expand All @@ -147,10 +121,48 @@ class ImpactAreasPage(Page):

impact_area_blocks = StreamField(ImpactAreaBlock(), use_json_field=True, null=True)

# > IMPACT AREA SHARED FIELDS
use_cases_title = models.CharField(default="Use Cases")

projects_title = models.CharField(default="Projects")
view_all_projects_text = models.CharField(default="View all projects")
view_all_projects_link = models.URLField(blank=True)
load_more_projects_text = models.CharField(default="Load More Projects")

explore_impact_areas_text = models.CharField(default="Explore Other Impact Areas")

red_dogear_box_title = models.CharField(default="Learn more about Tools & Resources and Data Access")
red_dogear_box_link_text = models.CharField(default="View Tools & Resources")
red_dogear_box_link_url = models.URLField(blank=True)

black_dogear_box_title = models.CharField(default="Check many opportunities to get involved with HOT!")
black_dogear_box_link_text = models.CharField(default="Get Involved with HOT")
black_dogear_box_link_url = models.URLField(blank=True)

content_panels = Page.content_panels + [
MultiFieldPanel([
FieldPanel('image'),
FieldPanel('intro')
], heading="Header section"),
FieldPanel('impact_area_blocks')
FieldPanel('impact_area_blocks'),
MultiFieldPanel([
MultiFieldPanel([
FieldPanel('use_cases_title'),
], heading="Use Cases"),
MultiFieldPanel([
FieldPanel('projects_title'),
FieldPanel('view_all_projects_text'),
FieldPanel('view_all_projects_link'),
FieldPanel('load_more_projects_text'),
], heading="Projects"),
FieldPanel('explore_impact_areas_text'),
MultiFieldPanel([
FieldPanel('red_dogear_box_title'),
FieldPanel('red_dogear_box_link_text'),
FieldPanel('red_dogear_box_link_url'),
FieldPanel('black_dogear_box_title'),
FieldPanel('black_dogear_box_link_text'),
FieldPanel('black_dogear_box_link_url'),
], heading="Dogear Boxes"),
], heading="Impact Area Shared Fields"),
]
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
</div>

{% comment %} USE CASES {% endcomment %}
{% include "ui/components/SectionHeadingWithUnderline.html" with title=page.use_cases_title %}
{% include "ui/components/SectionHeadingWithUnderline.html" with title=page.get_parent.specific.use_cases_title %}
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8 my-10">
{% for case in page.use_cases %}
{% include "./components/UseCaseBox.html" with number=forloop.counter body=case.value.description linktext=case.value.link_text linkurl=case.value.link_url %}
Expand All @@ -37,10 +37,10 @@
<div class="my-20">
<div class="grid grid-cols-1 md:grid-cols-2 gap-y-4">
<div>
{% include "ui/components/SectionHeadingWithUnderline.html" with title=page.projects_title %}
{% include "ui/components/SectionHeadingWithUnderline.html" with title=page.get_parent.specific.projects_title %}
</div>
<p class="md:text-right">
{% include "ui/components/BaseLink.html" with linktext=page.view_all_projects_text linkurl=page.view_all_projects_link %}
{% include "ui/components/BaseLink.html" with linktext=page.get_parent.specific.view_all_projects_text linkurl=page.view_all_projects_link %}
</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-x-8 mt-10" id="projects-list">
Expand All @@ -58,7 +58,7 @@
hx-select-oob="#projects-list:beforeend, #next-project:outerHTML"
>
<span class="border-b-hot-red border-b-2 pb-1 font-medium mr-4 text-intro">
Load More Projects
{{page.get_parent.specific.load_more_projects_text}}
</span>
{% include "ui/components/icon_svgs/LinkCaret.html" with class="rotate-90 text-hot-red" %}
</button>
Expand All @@ -69,7 +69,7 @@
{% comment %} OTHER IMPACT AREAS {% endcomment %}
<div class="my-20">
<h1 class="text-h2 font-bold">
{{ page.explore_impact_areas_text }}
{{ page.get_parent.specific.explore_impact_areas_text }}
</h1>
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-6 mt-10">
{% for area in other_impact_areas %}
Expand All @@ -91,10 +91,10 @@ <h1 class="text-h2 font-bold">
{% comment %} DOGEAR BOXES {% endcomment %}
<div class="grid grid-cols-1 md:grid-cols-2 text-white my-10 gap-8">
<div>
{% include "ui/components/dogear_boxes/DogearRed.html" with title=page.red_dogear_box_title linktext=page.red_dogear_box_link_text linkurl=page.red_dogear_box_link_url %}
{% include "ui/components/dogear_boxes/DogearRed.html" with title=page.get_parent.specific.red_dogear_box_title linktext=page.get_parent.specific.red_dogear_box_link_text linkurl=page.get_parent.specific.red_dogear_box_link_url %}
</div>
<div>
{% include "ui/components/dogear_boxes/DogearBlack.html" with title=page.black_dogear_box_title linktext=page.black_dogear_box_link_text linkurl=page.black_dogear_box_link_url %}
{% include "ui/components/dogear_boxes/DogearBlack.html" with title=page.get_parent.specific.black_dogear_box_title linktext=page.get_parent.specific.black_dogear_box_link_text linkurl=page.get_parent.specific.black_dogear_box_link_url %}
</div>
</div>
</div>
Expand Down
Empty file added app/members/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions app/members/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions app/members/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class MembersConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app.members'
47 changes: 47 additions & 0 deletions app/members/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Generated by Django 4.2.7 on 2024-06-03 23:02

from django.db import migrations, models
import django.db.models.deletion
import wagtail.blocks
import wagtail.fields


class Migration(migrations.Migration):

initial = True

dependencies = [
('wagtailcore', '0089_log_entry_data_json_null_to_object'),
('wagtailimages', '0025_alter_image_file_alter_rendition_file'),
]

operations = [
migrations.CreateModel(
name='MemberOwnerPage',
fields=[
('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')),
('on_the_web_title', models.CharField(default='On the Web')),
('posts_title', models.CharField(default='Posts')),
('project_contribution_title', models.CharField(default='Project Contribution')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='IndividualMemberPage',
fields=[
('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')),
('position', models.CharField()),
('location', models.CharField()),
('introduction', wagtail.fields.RichTextField()),
('on_the_web_links', wagtail.fields.StreamField([('blocks', wagtail.blocks.StructBlock([('link_text', wagtail.blocks.CharBlock(required=True)), ('link_url', wagtail.blocks.URLBlock(blank=True, required=False))]))], blank=True, use_json_field=True)),
('image', models.ForeignKey(blank=True, help_text='An image of the member', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 4.2.7 on 2024-06-03 23:26

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('mapping_hubs', '0008_alter_individualmappinghubpage_dogear_boxes'),
('members', '0001_initial'),
]

operations = [
migrations.RemoveField(
model_name='individualmemberpage',
name='location',
),
migrations.AddField(
model_name='individualmemberpage',
name='location_hub',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='mapping_hubs.individualmappinghubpage'),
),
]
Empty file.
Loading

0 comments on commit d394c78

Please sign in to comment.