├── apps ├── __init__.py ├── blog │ ├── __init__.py │ ├── migrations │ │ ├── __init__.py │ │ ├── 0003_alter_post_slug.py │ │ ├── 0001_initial.py │ │ └── 0002_bibleverse.py │ ├── tests.py │ ├── apps.py │ ├── sitemaps.py │ ├── context_processors.py │ ├── templates │ │ └── blog │ │ │ ├── 403_csrf.html │ │ │ ├── 404.html │ │ │ ├── post_edit.html │ │ │ ├── post_new.html │ │ │ ├── detail.html │ │ │ ├── index.html │ │ │ └── about.html │ ├── forms.py │ ├── urls.py │ ├── tasks.py │ ├── admin.py │ ├── models.py │ ├── newsletter.py │ └── views.py ├── search │ ├── __init__.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── admin.py │ ├── urls.py │ ├── apps.py │ ├── views.py │ └── templates │ │ └── search │ │ └── search_result.html ├── sermon │ ├── __init__.py │ ├── migrations │ │ ├── __init__.py │ │ └── 0001_initial.py │ ├── templatetags │ │ ├── __init__.py │ │ └── sermon_tags.py │ ├── tests.py │ ├── apps.py │ ├── sitemaps.py │ ├── urls.py │ ├── admin.py │ ├── templates │ │ └── sermon │ │ │ ├── latest_sermons.html │ │ │ ├── sermon_pdf.html │ │ │ ├── detail.html │ │ │ └── index.html │ ├── models.py │ └── views.py ├── user │ ├── __init__.py │ ├── migrations │ │ ├── __init__.py │ │ └── 0001_initial.py │ ├── tests.py │ ├── admin.py │ ├── apps.py │ ├── templates │ │ ├── registration │ │ │ ├── password_change_done.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_complete.html │ │ │ ├── password_reset_confirm.html │ │ │ ├── password_reset_form.html │ │ │ ├── password_reset_email.html │ │ │ ├── password_change_form.html │ │ │ └── login.html │ │ └── user │ │ │ ├── register.html │ │ │ ├── profile_edit.html │ │ │ └── profile.html │ ├── signals.py │ ├── models.py │ ├── forms.py │ ├── urls.py │ └── views.py ├── utils │ ├── __init__.py │ ├── templatetags │ │ ├── __init__.py │ │ └── filters.py │ └── bible_books.py └── payment │ ├── __init__.py │ ├── migrations │ ├── __init__.py │ ├── 0002_donation_paid.py │ ├── 0003_donation_ref_id.py │ └── 0001_initial.py │ ├── tests.py │ ├── apps.py │ ├── context_processors.py │ ├── forms.py │ ├── templates │ └── payment │ │ ├── success.html │ │ ├── failure.html │ │ └── payment_form.html │ ├── admin.py │ ├── urls.py │ ├── models.py │ └── views.py ├── Procfile ├── static ├── search │ └── css │ │ └── search.css ├── blog │ ├── images │ │ ├── blog.jpg │ │ ├── logo.jpg │ │ ├── cross_1.png │ │ ├── search.png │ │ ├── latest_1.jpg │ │ ├── latest_2.jpg │ │ ├── latest_3.jpg │ │ ├── latest_4.jpg │ │ ├── logo_large.jpg │ │ ├── openmenu.png │ │ ├── quote_char.png │ │ └── sidebar_quote.jpg │ ├── js │ │ └── countdown.js │ └── css │ │ └── base.css ├── sermon │ ├── images │ │ ├── church_3.png │ │ ├── church_7.png │ │ ├── sermon.png │ │ ├── sermons.jpg │ │ ├── services.jpg │ │ ├── xsermon.webp │ │ ├── featured_1.jpg │ │ ├── featured_2.jpg │ │ ├── popular_1.jpg │ │ ├── sermon_big.jpg │ │ ├── services_1.png │ │ ├── services_2.png │ │ ├── services_3.png │ │ ├── services_4.png │ │ ├── services_5.png │ │ ├── services_6.png │ │ ├── sermon_image.jpg │ │ ├── sermon_pastor.jpg │ │ ├── sermon_single.jpg │ │ ├── sermon_small.jpg │ │ ├── sermon_4.svg │ │ ├── sermon_5.svg │ │ ├── sermon_3.svg │ │ ├── sermon_2.svg │ │ ├── sermon_6.svg │ │ └── sermon_1.svg │ ├── js │ │ └── read_text.js │ └── css │ │ └── sermon.css ├── user │ └── css │ │ └── form.css ├── payment │ └── js │ │ └── popup.js └── admin │ └── css │ └── base.css ├── config ├── __init__.py ├── settings │ ├── __init__.py │ ├── base.py │ ├── production.py │ └── local.py ├── asgi.py ├── wsgi.py ├── celery.py └── urls.py ├── .gitignore ├── .env.sample ├── templates ├── admin │ └── base_site.html └── base.html ├── Pipfile ├── manage.py └── README.md /apps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/blog/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/search/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/sermon/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/user/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/payment/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/blog/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/user/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/payment/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/search/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/sermon/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/sermon/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/utils/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn config.wsgi --log-file - -------------------------------------------------------------------------------- /static/search/css/search.css: -------------------------------------------------------------------------------- 1 | .highlight { 2 | background-color: yellow; 3 | } -------------------------------------------------------------------------------- /apps/blog/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/payment/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/search/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /apps/search/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/sermon/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/user/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /config/__init__.py: -------------------------------------------------------------------------------- 1 | from .celery import app as celery_app 2 | 3 | __all__ = (celery_app,) 4 | -------------------------------------------------------------------------------- /apps/search/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /static/blog/images/blog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/blog.jpg -------------------------------------------------------------------------------- /static/blog/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/logo.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | staticfiles 3 | media 4 | 5 | 6 | # celery beat 7 | celerybeat* 8 | 9 | #redis 10 | dump.rdb -------------------------------------------------------------------------------- /static/blog/images/cross_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/cross_1.png -------------------------------------------------------------------------------- /static/blog/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/search.png -------------------------------------------------------------------------------- /static/blog/images/latest_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/latest_1.jpg -------------------------------------------------------------------------------- /static/blog/images/latest_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/latest_2.jpg -------------------------------------------------------------------------------- /static/blog/images/latest_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/latest_3.jpg -------------------------------------------------------------------------------- /static/blog/images/latest_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/latest_4.jpg -------------------------------------------------------------------------------- /static/blog/images/logo_large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/logo_large.jpg -------------------------------------------------------------------------------- /static/blog/images/openmenu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/openmenu.png -------------------------------------------------------------------------------- /static/blog/images/quote_char.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/quote_char.png -------------------------------------------------------------------------------- /static/sermon/images/church_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/church_3.png -------------------------------------------------------------------------------- /static/sermon/images/church_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/church_7.png -------------------------------------------------------------------------------- /static/sermon/images/sermon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon.png -------------------------------------------------------------------------------- /static/sermon/images/sermons.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermons.jpg -------------------------------------------------------------------------------- /static/sermon/images/services.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services.jpg -------------------------------------------------------------------------------- /static/sermon/images/xsermon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/xsermon.webp -------------------------------------------------------------------------------- /static/sermon/images/featured_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/featured_1.jpg -------------------------------------------------------------------------------- /static/sermon/images/featured_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/featured_2.jpg -------------------------------------------------------------------------------- /static/sermon/images/popular_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/popular_1.jpg -------------------------------------------------------------------------------- /static/sermon/images/sermon_big.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon_big.jpg -------------------------------------------------------------------------------- /static/sermon/images/services_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_1.png -------------------------------------------------------------------------------- /static/sermon/images/services_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_2.png -------------------------------------------------------------------------------- /static/sermon/images/services_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_3.png -------------------------------------------------------------------------------- /static/sermon/images/services_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_4.png -------------------------------------------------------------------------------- /static/sermon/images/services_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_5.png -------------------------------------------------------------------------------- /static/sermon/images/services_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/services_6.png -------------------------------------------------------------------------------- /static/blog/images/sidebar_quote.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/blog/images/sidebar_quote.jpg -------------------------------------------------------------------------------- /static/sermon/images/sermon_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon_image.jpg -------------------------------------------------------------------------------- /static/sermon/images/sermon_pastor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon_pastor.jpg -------------------------------------------------------------------------------- /static/sermon/images/sermon_single.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon_single.jpg -------------------------------------------------------------------------------- /static/sermon/images/sermon_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BOVAGE/church-management-system/HEAD/static/sermon/images/sermon_small.jpg -------------------------------------------------------------------------------- /config/settings/__init__.py: -------------------------------------------------------------------------------- 1 | from .base import * 2 | 3 | if not config("DEBUG", cast=bool): 4 | from .production import * 5 | else: 6 | from .local import * 7 | -------------------------------------------------------------------------------- /apps/search/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from .views import search 3 | 4 | app_name = "search" 5 | urlpatterns = [ 6 | path("", search, name="search"), 7 | ] 8 | -------------------------------------------------------------------------------- /apps/blog/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BlogConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.blog" 7 | -------------------------------------------------------------------------------- /.env.sample: -------------------------------------------------------------------------------- 1 | SECRET_KEY= 2 | DEBUG= 3 | AWS_ACCESS_KEY_ID = 4 | AWS_SECRET_ACCESS_KEY = 5 | MAILCHIMP_KEY = 6 | MAILCHIMP_SERVER = 7 | DB_PASSWORD= 8 | PAYSTACK_SECRET= 9 | PAYSTACK_PUBLIC= -------------------------------------------------------------------------------- /apps/search/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class SearchConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.search" 7 | -------------------------------------------------------------------------------- /apps/sermon/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class SermonConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.sermon" 7 | -------------------------------------------------------------------------------- /apps/payment/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class PaymentConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "apps.payment" 7 | -------------------------------------------------------------------------------- /apps/payment/context_processors.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | 4 | def get_payment_secret(request): 5 | context = {"public_key": settings.PAYSTACK_PUBLIC} 6 | return context 7 | -------------------------------------------------------------------------------- /config/asgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.asgi import get_asgi_application 4 | 5 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 6 | 7 | application = get_asgi_application() 8 | -------------------------------------------------------------------------------- /config/wsgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.wsgi import get_wsgi_application 4 | 5 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings") 6 | 7 | application = get_wsgi_application() 8 | -------------------------------------------------------------------------------- /apps/utils/templatetags/filters.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | 3 | register = template.Library() 4 | 5 | 6 | @register.filter(name="pretty_") 7 | def underscore_to_space(value): 8 | return value.replace("_", " ") 9 | -------------------------------------------------------------------------------- /apps/payment/forms.py: -------------------------------------------------------------------------------- 1 | from django.forms import ModelForm 2 | from .models import Donation 3 | 4 | 5 | class PaymentForm(ModelForm): 6 | class Meta: 7 | model = Donation 8 | exclude = ["date", "paid", "ref_id"] 9 | -------------------------------------------------------------------------------- /apps/payment/templates/payment/success.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load static %} 3 | {% block content %} 4 |
Payment Successful.Thanks for Donating. God Bless You
6 |Payment not Successful. Please Try again
6 |
5 |
6 | {{ sermon.title }}
9 |No Sermon to show
13 | {% endfor %} -------------------------------------------------------------------------------- /apps/user/templates/registration/password_change_done.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load static %} 3 | {% block title %}Believe - Password Change Done{% endblock title %} 4 | {% block current-page %}Password Rest Change Done{% endblock current-page %} 5 | {% block content %} 6 |Your password was changed.
10 |We've emailed you instructions for setting your password. You should receive the email shortly!
10 |
10 | Your new password has been set. You can log in now on the 10 | log in page. 11 |
12 |Enter your email address below, and we'll email instructions for setting a new one.
10 | 15 |Username: {{ user.username }}
15 |Firstname: {{ user.first_name }}
16 |Lastname: {{ user.last_name }}
17 |Email Address: {{ user.email }}
18 |Social Link: {{ profile.social_link }}
19 |Bio: {{ profile.bio }}
20 |Role: {{ profile.role }}
21 |Please enter your old password, for security's sake, and then enter your 11 | new password twice so we can verify you typed it in correctly. 12 |
13 | 23 |
19 |
20 | {{ result.author }}
24 |There is no result for this query.
29 | {% endif %} 30 |Search again
33 | 36 |Sermon by: {{ sermon.author.first_name }} {{ sermon.author.last_name }}
26 |Tags: {{ sermon.tags.all|join:", " }}
27 |Date: {{ sermon.date_created|date:"l j F, Y" }}
28 |{{ post.date_created|date:"d" }}
12 |{{ post.date_created|date:"N, Y" }}
13 |19 | By {{ post.author.first_name|title }} {{ post.author.last_name|title }} | In {{ post.category }} | {{ post.comment_set.count }} Comments 20 | {% if request.user == post.author %} 21 | |Edit 22 | | 23 | {% endif %} 24 |
25 |Sermon by: {{ sermon.author.first_name }} {{ sermon.author.last_name }}
31 |Tags: {{ sermon.tags.all|join:", " }}
32 |Date: {{ sermon.date_created|date:"l j F, Y" }}
33 |View: {{ total_views }} View{{ total_views|pluralize }}
34 |{{ sermon.author.profile.bio }}
49 |{{ sermon.author.profile.role }}
50 |{{ post.date_created|date:"d" }}
16 |{{ post.date_created|date:"N, Y" }}
17 |23 | By {{ post.author.first_name|title }} {{ post.author.last_name|title }}| In {{ post.category }} | {{ post.comment_set.count }} 24 | Comments 25 |
26 |
12 | God loves us all
14 |Sermon by: {{ ts.author.first_name }} {{ ts.author.last_name }}
25 |Tags: {{ ts.tags.all|join:", " }}
26 |Date: {{ ts.date_created|date:"l j F, Y" }}
27 |View: {{ total_views }} View{{ total_views|pluralize }}
28 |
55 | God loves us all
57 |Sermon by: {{ s.author.first_name }} {{ s.author.last_name }}
67 |Tags: {{ s.tags.all|join:", " }}
68 |Date: {{ s.date_created|date:"l j F, Y" }}
69 |27 | {{ announcement.event_name }}: 28 |
29 |31 | Days 32 |
33 |34 | Hours 35 |
36 |37 | Minutes 38 |
39 |40 | Seconds 41 |
42 |45 | No Upcoming Event. 46 |
47 | {% endif %} 48 | Send Donations 49 |Home/ {% block current-page %}{% endblock current-page %}
87 |
127 | Church template
129 | 135 |
{{ sermon.author.profile.bio }}
43 |{{ sermon.author.profile.role }}
44 |