Skip to content

Commit

Permalink
Merge pull request #721 from WesternFriend/online-worship-importer
Browse files Browse the repository at this point in the history
Online worship importer
  • Loading branch information
brylie committed Jun 17, 2023
2 parents 0198a3a + 86ef31f commit 1d2e07a
Show file tree
Hide file tree
Showing 9 changed files with 330 additions and 51 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 4.2.1 on 2023-06-16 10:27

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("community", "0001_squashed_0012_alter_communitypage_body"),
]

operations = [
migrations.AddField(
model_name="onlineworship",
name="drupal_body_migrated",
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name="onlineworship",
name="drupal_node_id",
field=models.IntegerField(blank=True, null=True),
),
migrations.AddField(
model_name="onlineworship",
name="drupal_path",
field=models.CharField(blank=True, max_length=255, null=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 4.2.1 on 2023-06-16 11:10

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("community", "0013_onlineworship_drupal_body_migrated_and_more"),
]

operations = [
migrations.RenameField(
model_name="onlineworship",
old_name="drupal_path",
new_name="drupal_url_path",
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Generated by Django 4.2.1 on 2023-06-16 11:36

from django.db import migrations, models
import timezone_field.fields


class Migration(migrations.Migration):
dependencies = [
("community", "0014_rename_drupal_path_onlineworship_drupal_url_path"),
]

operations = [
migrations.AddField(
model_name="onlineworship",
name="online_worship_day",
field=models.CharField(
blank=True,
choices=[
("Sunday", "Sunday"),
("Monday", "Monday"),
("Tuesday", "Tuesday"),
("Wednesday", "Wednesday"),
("Thursday", "Thursday"),
("Friday", "Friday"),
("Saturday", "Saturday"),
],
max_length=255,
null=True,
),
),
migrations.AddField(
model_name="onlineworship",
name="online_worship_time",
field=models.TimeField(blank=True, null=True),
),
migrations.AddField(
model_name="onlineworship",
name="online_worship_timezone",
field=timezone_field.fields.TimeZoneField(blank=True, null=True),
),
]
29 changes: 28 additions & 1 deletion community/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from wagtail.models import Page
from wagtail.search import index

from timezone_field import TimeZoneField # type: ignore

from blocks import blocks as wf_blocks


Expand Down Expand Up @@ -47,6 +49,15 @@ class CommunityPage(Page):


class OnlineWorship(Page):
class OnlineWorshipDayChoices(models.TextChoices):
SUNDAY = "Sunday", "Sunday"
MONDAY = "Monday", "Monday"
TUESDAY = "Tuesday", "Tuesday"
WEDNESDAY = "Wednesday", "Wednesday"
THURSDAY = "Thursday", "Thursday"
FRIDAY = "Friday", "Friday"
SATURDAY = "Saturday", "Saturday"

description = RichTextField(blank=True)

hosted_by = models.ForeignKey(
Expand All @@ -56,11 +67,27 @@ class OnlineWorship(Page):
on_delete=models.SET_NULL,
related_name="online_worship",
)

# TODO: Define a custom, orderable model for this
# to allow for multiple times of worship.
times_of_worship = RichTextField(blank=True)
online_worship_day = models.CharField(
max_length=255,
null=True,
blank=True,
choices=OnlineWorshipDayChoices.choices,
)
online_worship_time = models.TimeField(null=True, blank=True)
online_worship_timezone = TimeZoneField(
null=True,
blank=True,
)

website = models.URLField(null=True, blank=True)

drupal_node_id = models.IntegerField(null=True, blank=True)
drupal_body_migrated = models.TextField(null=True, blank=True)
drupal_url_path = models.CharField(max_length=255, null=True, blank=True)

content_panels = Page.content_panels + [
FieldPanel("description"),
PageChooserPanel("hosted_by", ["contact.Meeting", "contact.Organization"]),
Expand Down
1 change: 1 addition & 0 deletions community/templates/community/online_worship.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
{% block title %}{{ page.title }}{% endblock %}

{% block content %}
<a href="{% pageurl page.get_parent %}">Online Worship Directory</a>
<h1>{{ page.title }}</h1>

{% if page.hosted_by %}
Expand Down
97 changes: 54 additions & 43 deletions community/templates/community/online_worship_index_page.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,47 +11,58 @@ <h1>

{{ page.intro | richtext }}

<div class="list-group">
{% for online_worship in self.get_children %}
{% if online_worship.specific.website %}
<a href="{{ online_worship.specific.website }}" class="list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h3 class="mb-1">{{ online_worship.title }}</h3>
</div>

{% if online_worship.specific.description %}
<span>
{{ online_worship.specific.description | richtext }}
</span>
{% endif %}

{% if online_worship.specific.times_of_worship %}
<span>
<strong>Times of worship:</strong>&nbsp;
{{ online_worship.specific.times_of_worship | richtext }}
</span>
{% endif %}
</a>
{% else %}
<div class="list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h3 class="mb-1">{{ online_worship.title }}</h3>
</div>

{% if online_worship.specific.description %}
<span>
{{ online_worship.specific.description | richtext }}
</span>
{% endif %}

{% if online_worship.specific.times_of_worship %}
<span>
<strong>Times of worship:</strong>&nbsp;
{{ online_worship.specific.times_of_worship | richtext }}
</span>
{% endif %}
</div>
{% endif %}
{% endfor %}
</div>
{% for online_worship in self.get_children|dictsort:"title" %}
<div class="card mb-3">
<div class="card-body">
<h2 class="card-title fs-3">{{ online_worship.title }}</h2>

{% if online_worship.specific.times_of_worship %}
<p class="card-text">
<strong>Times of worship:</strong>&nbsp;
{{ online_worship.specific.times_of_worship | richtext }}
</p>
{% endif %}

{% if online_worship.specific.hosted_by %}
<p>
<strong>Hosted by:</strong>&nbsp;
{{ online_worship.specific.hosted_by }}
</p>
{% endif %}

{% if online_worship.specific.online_worship_day %}
<p>
<strong>Online worship day:</strong>&nbsp;
{{ online_worship.specific.online_worship_day }}
</p>
{% endif %}

{% if online_worship.specific.online_worship_time %}
<p>
<strong>Online worship time:</strong>&nbsp;
{{ online_worship.specific.online_worship_time }}
{% if online_worship.specific.online_worship_timezone %}
({{ online_worship.specific.online_worship_timezone }})
{% endif %}
</p>
{% endif %}

{% if online_worship.specific.online_worship_url %}
<p>
<strong>Online worship URL:</strong>&nbsp;
{{ online_worship.specific.online_worship_url }}
</p>
{% endif %}

{% if online_worship.specific.online_worship_notes %}
<p>
<strong>Online worship notes:</strong>&nbsp;
{{ online_worship.specific.online_worship_notes }}
</p>
{% endif %}
<a href="{{ online_worship.url }}" class="btn btn-primary stretched-link">View details</a>
</div>
</div>
{% endfor %}

{% endblock %}
16 changes: 16 additions & 0 deletions content_migration/management/commands/import_online_worship.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""Management command to import Online Worship content."""
from django.core.management.base import BaseCommand

from content_migration.management.import_online_worship_handler import (
handle_import_online_worship,
)


class Command(BaseCommand):
"""Import Online Worship content."""

help = "Import Online Worship content"

def handle(self, *args: tuple, **options: dict) -> None:
"""Import Online Worship content."""
handle_import_online_worship()
Loading

0 comments on commit 1d2e07a

Please sign in to comment.