first commit web

This commit is contained in:
ahmadafriadi 2025-03-10 12:04:29 +07:00
parent b15ef3995e
commit 850a72fd51
6353 changed files with 762026 additions and 0 deletions

22
manage.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nin.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()

0
nin/__init__.py Normal file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

16
nin/asgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
ASGI config for nin project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nin.settings')
application = get_asgi_application()

129
nin/settings.py Normal file
View File

@ -0,0 +1,129 @@
"""
Django settings for nin project.
Generated by 'django-admin startproject' using Django 5.1.6.
For more information on this file, see
https://docs.djangoproject.com/en/5.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/5.1/ref/settings/
"""
from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-)7j8t^%*@kb9vmr#m_j(7gl0c14csp5so$zuqo3eg(eloz15x#'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'nin.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'nin.wsgi.application'
# Database
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/5.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.1/howto/static-files/
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
# Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

11
nin/urls.py Normal file
View File

@ -0,0 +1,11 @@
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.dashboard, name='dashboard'),
path('news/', views.news, name='news'),
path('news/detail', views.news_detail, name='news_detail'),
]

12
nin/views.py Normal file
View File

@ -0,0 +1,12 @@
from django.shortcuts import render, redirect
# Create your views here.
def dashboard(request):
return render(request, 'dashboard.html')
def news(request):
return render(request, 'news.html')
def news_detail(request):
return render(request, 'news-detail.html')

16
nin/wsgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
WSGI config for nin project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nin.settings')
application = get_wsgi_application()

1556
static/css/bootstrap-icons.css vendored Normal file

File diff suppressed because it is too large Load Diff

7
static/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

BIN
static/fonts/Metropolis/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

BIN
static/images/founder.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
static/images/logonin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
static/images/ours.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

7
static/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

37
static/js/click-scroll.js Normal file
View File

@ -0,0 +1,37 @@
//jquery-click-scroll
//by syamsul'isul' Arifin
var sectionArray = [1, 2, 3, 4, 5, 6];
$.each(sectionArray, function(index, value){
$(document).scroll(function(){
var offsetSection = $('#' + 'section_' + value).offset().top - 90;
var docScroll = $(document).scrollTop();
var docScroll1 = docScroll + 1;
if ( docScroll1 >= offsetSection ){
$('.navbar-nav .nav-item .nav-link').removeClass('active');
$('.navbar-nav .nav-item .nav-link:link').addClass('inactive');
$('.navbar-nav .nav-item .nav-link').eq(index).addClass('active');
$('.navbar-nav .nav-item .nav-link').eq(index).removeClass('inactive');
}
});
$('.click-scroll').eq(index).click(function(e){
var offsetClick = $('#' + 'section_' + value).offset().top - 90;
e.preventDefault();
$('html, body').animate({
'scrollTop':offsetClick
}, 300)
});
});
$(document).ready(function(){
$('.navbar-nav .nav-item .nav-link:link').addClass('inactive');
$('.navbar-nav .nav-item .nav-link').eq(0).addClass('active');
$('.navbar-nav .nav-item .nav-link:link').eq(0).removeClass('inactive');
});

89
static/js/counter.js Normal file
View File

@ -0,0 +1,89 @@
/*
* jQuery.appear
* http://code.google.com/p/jquery-appear/
*
* Copyright (c) 2009 Michael Hixson
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
*/
(function($){$.fn.appear=function(f,o){var s=$.extend({one:true},o);return this.each(function(){var t=$(this);t.appeared=false;if(!f){t.trigger('appear',s.data);return;}var w=$(window);var c=function(){if(!t.is(':visible')){t.appeared=false;return;}var a=w.scrollLeft();var b=w.scrollTop();var o=t.offset();var x=o.left;var y=o.top;if(y+t.height()>=b&&y<=b+w.height()&&x+t.width()>=a&&x<=a+w.width()){if(!t.appeared)t.trigger('appear',s.data);}else{t.appeared=false;}};var m=function(){t.appeared=true;if(s.one){w.unbind('scroll',c);var i=$.inArray(c,$.fn.appear.checks);if(i>=0)$.fn.appear.checks.splice(i,1);}f.apply(this,arguments);};if(s.one)t.one('appear',s.data,m);else t.bind('appear',s.data,m);w.scroll(c);$.fn.appear.checks.push(c);(c)();});};$.extend($.fn.appear,{checks:[],timeout:null,checkAll:function(){var l=$.fn.appear.checks.length;if(l>0)while(l--)($.fn.appear.checks[l])();},run:function(){if($.fn.appear.timeout)clearTimeout($.fn.appear.timeout);$.fn.appear.timeout=setTimeout($.fn.appear.checkAll,20);}});$.each(['append','prepend','after','before','attr','removeAttr','addClass','removeClass','toggleClass','remove','css','show','hide'],function(i,n){var u=$.fn[n];if(u){$.fn[n]=function(){var r=u.apply(this,arguments);$.fn.appear.run();return r;}}});})(jQuery);
(function ($) {
$.fn.countTo = function (options) {
options = options || {};
return $(this).each(function () {
// set options for current element
var settings = $.extend({}, $.fn.countTo.defaults, {
from: $(this).data('from'),
to: $(this).data('to'),
speed: $(this).data('speed'),
refreshInterval: $(this).data('refresh-interval'),
decimals: $(this).data('decimals')
}, options);
// how many times to update the value, and how much to increment the value on each update
var loops = Math.ceil(settings.speed / settings.refreshInterval),
increment = (settings.to - settings.from) / loops;
// references & variables that will change with each update
var self = this,
$self = $(this),
loopCount = 0,
value = settings.from,
data = $self.data('countTo') || {};
$self.data('countTo', data);
// if an existing interval can be found, clear it first
if (data.interval) {
clearInterval(data.interval);
}
data.interval = setInterval(updateTimer, settings.refreshInterval);
// initialize the element with the starting value
render(value);
function updateTimer() {
value += increment;
loopCount++;
render(value);
if (typeof(settings.onUpdate) == 'function') {
settings.onUpdate.call(self, value);
}
if (loopCount >= loops) {
// remove the interval
$self.removeData('countTo');
clearInterval(data.interval);
value = settings.to;
if (typeof(settings.onComplete) == 'function') {
settings.onComplete.call(self, value);
}
}
}
function render(value) {
var formattedValue = settings.formatter.call(self, value, settings);
$self.text(formattedValue);
}
});
};
$.fn.countTo.defaults = {
from: 0, // the number the element should start at
to: 0, // the number the element should end at
speed: 1000, // how long it should take to count between the target numbers
refreshInterval: 100, // how often the element should be updated
decimals: 0, // the number of decimal places to show
formatter: formatter, // handler for formatting the value before rendering
onUpdate: null, // callback method for every time the element is updated
onComplete: null // callback method for when the element finishes updating
};
function formatter(value, settings) {
return value.toFixed(settings.decimals);
}
}(jQuery));

33
static/js/custom.js Normal file
View File

@ -0,0 +1,33 @@
(function ($) {
"use strict";
// COUNTER NUMBERS
jQuery('.counter-thumb').appear(function() {
jQuery('.counter-number').countTo();
});
// CUSTOM LINK
$('.smoothscroll').click(function(){
var el = $(this).attr('href');
var elWrapped = $(el);
var header_height = $('.navbar').height();
scrollToDiv(elWrapped,header_height);
return false;
function scrollToDiv(element,navheight){
var offset = element.offset();
var offsetTop = offset.top;
var totalScroll = offsetTop-navheight;
$('body,html').animate({
scrollTop: totalScroll
}, 300);
}
});
})(window.jQuery);

4
static/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

219
static/js/jquery.sticky.js Normal file
View File

@ -0,0 +1,219 @@
// Sticky Plugin v1.0.3 for jQuery
// =============
// Author: Anthony Garand
// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
// Improvements by Leonardo C. Daronco (daronco)
// Created: 02/14/2011
// Date: 07/20/2015
// Website: http://stickyjs.com/
// Description: Makes an element on the page stick on the screen as you scroll
// It will only set the 'top' and 'position' of your element, you
// might need to adjust the width in some cases.
(function($) {
var slice = Array.prototype.slice; // save ref to original slice()
var splice = Array.prototype.splice; // save ref to original slice()
var defaults = {
topSpacing: 0,
bottomSpacing: 0,
className: 'is-sticky',
wrapperClassName: 'sticky-wrapper',
center: false,
getWidthFrom: '',
widthFromWrapper: true, // works only when .getWidthFrom is empty
responsiveWidth: false
},
$window = $(window),
$document = $(document),
sticked = [],
windowHeight = $window.height(),
scroller = function() {
var scrollTop = $window.scrollTop(),
documentHeight = $document.height(),
dwh = documentHeight - windowHeight,
extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
for (var i = 0; i < sticked.length; i++) {
var s = sticked[i],
elementTop = s.stickyWrapper.offset().top,
etse = elementTop - s.topSpacing - extra;
//update height in case of dynamic content
s.stickyWrapper.css('height', s.stickyElement.outerHeight());
if (scrollTop <= etse) {
if (s.currentTop !== null) {
s.stickyElement
.css({
'width': '',
'position': '',
'top': ''
});
s.stickyElement.parent().removeClass(s.className);
s.stickyElement.trigger('sticky-end', [s]);
s.currentTop = null;
}
}
else {
var newTop = documentHeight - s.stickyElement.outerHeight()
- s.topSpacing - s.bottomSpacing - scrollTop - extra;
if (newTop < 0) {
newTop = newTop + s.topSpacing;
} else {
newTop = s.topSpacing;
}
if (s.currentTop != newTop) {
var newWidth;
if (s.getWidthFrom) {
newWidth = $(s.getWidthFrom).width() || null;
} else if (s.widthFromWrapper) {
newWidth = s.stickyWrapper.width();
}
if (newWidth == null) {
newWidth = s.stickyElement.width();
}
s.stickyElement
.css('width', newWidth)
.css('position', 'fixed')
.css('top', newTop);
s.stickyElement.parent().addClass(s.className);
if (s.currentTop === null) {
s.stickyElement.trigger('sticky-start', [s]);
} else {
// sticky is started but it have to be repositioned
s.stickyElement.trigger('sticky-update', [s]);
}
if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
// just reached bottom || just started to stick but bottom is already reached
s.stickyElement.trigger('sticky-bottom-reached', [s]);
} else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
// sticky is started && sticked at topSpacing && overflowing from top just finished
s.stickyElement.trigger('sticky-bottom-unreached', [s]);
}
s.currentTop = newTop;
}
}
}
},
resizer = function() {
windowHeight = $window.height();
for (var i = 0; i < sticked.length; i++) {
var s = sticked[i];
var newWidth = null;
if (s.getWidthFrom) {
if (s.responsiveWidth === true) {
newWidth = $(s.getWidthFrom).width();
}
} else if(s.widthFromWrapper) {
newWidth = s.stickyWrapper.width();
}
if (newWidth != null) {
s.stickyElement.css('width', newWidth);
}
}
},
methods = {
init: function(options) {
var o = $.extend({}, defaults, options);
return this.each(function() {
var stickyElement = $(this);
var stickyId = stickyElement.attr('id');
var stickyHeight = stickyElement.outerHeight();
var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName
var wrapper = $('<div></div>')
.attr('id', wrapperId)
.addClass(o.wrapperClassName);
stickyElement.wrapAll(wrapper);
var stickyWrapper = stickyElement.parent();
if (o.center) {
stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
}
if (stickyElement.css("float") == "right") {
stickyElement.css({"float":"none"}).parent().css({"float":"right"});
}
stickyWrapper.css('height', stickyHeight);
o.stickyElement = stickyElement;
o.stickyWrapper = stickyWrapper;
o.currentTop = null;
sticked.push(o);
});
},
update: scroller,
unstick: function(options) {
return this.each(function() {
var that = this;
var unstickyElement = $(that);
var removeIdx = -1;
var i = sticked.length;
while (i-- > 0) {
if (sticked[i].stickyElement.get(0) === that) {
splice.call(sticked,i,1);
removeIdx = i;
}
}
if(removeIdx != -1) {
unstickyElement.unwrap();
unstickyElement
.css({
'width': '',
'position': '',
'top': '',
'float': ''
})
;
}
});
}
};
// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
if (window.addEventListener) {
window.addEventListener('scroll', scroller, false);
window.addEventListener('resize', resizer, false);
} else if (window.attachEvent) {
window.attachEvent('onscroll', scroller);
window.attachEvent('onresize', resizer);
}
$.fn.sticky = function(method) {
if (methods[method]) {
return methods[method].apply(this, slice.call(arguments, 1));
} else if (typeof method === 'object' || !method ) {
return methods.init.apply( this, arguments );
} else {
$.error('Method ' + method + ' does not exist on jQuery.sticky');
}
};
$.fn.unstick = function(method) {
if (methods[method]) {
return methods[method].apply(this, slice.call(arguments, 1));
} else if (typeof method === 'object' || !method ) {
return methods.unstick.apply( this, arguments );
} else {
$.error('Method ' + method + ' does not exist on jQuery.sticky');
}
};
$(function() {
setTimeout(scroller, 0);
});
})(jQuery);
$(document).ready(function(){
$(".navbar").sticky({topSpacing:0});
});

780
templates/dashboard.html Normal file
View File

@ -0,0 +1,780 @@
{% extends "snippets/main.html" %}
{% load static %}
{% block content %}
<section class="hero-section hero-section-full-height">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12 col-12 p-0">
<div id="hero-slide" class="carousel carousel-fade slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="{% static 'images/slide/volunteer-helping-with-donation-box.jpg' %}" class="carousel-image img-fluid" alt="...">
<div class="carousel-caption d-flex flex-column justify-content-end">
<h1>Social</h1>
<p>Social learning experience mencakup</br>budaya, interaksi, dan komunikasi sosial.</p>
</div>
</div>
<div class="carousel-item">
<img src="{% static 'images/slide/volunteer-selecting-organizing-clothes-donations-charity.jpg' %}" class="carousel-image img-fluid" alt="...">
<div class="carousel-caption d-flex flex-column justify-content-end">
<h1>Ecological</h1>
<p>Ecological learning experience mencerminkan</br>keseimbangan sumber daya dan ekosistem dalam </br>kegiatan Anindhaloka.</p>
</div>
</div>
<div class="carousel-item">
<img src="{% static 'images/slide/medium-shot-people-collecting-donations.jpg' %}" class="carousel-image img-fluid" alt="...">
<div class="carousel-caption d-flex flex-column justify-content-end">
<h1>Spiritual</h1>
<p>Spiritual learning experience menyeimbangkan</br>keyakinan, pikiran, dan pemahaman diri.</p>
</div>
</div>
<div class="carousel-item">
<img src="{% static 'images/slide/medium-shot-people-collecting-donations.jpg' %}" class="carousel-image img-fluid" alt="...">
<div class="carousel-caption d-flex flex-column justify-content-end">
<h1>Technological</h1>
<p>Technological learning menggambarkan</br>solusi, kemodernan, dan dampak teknologi Anindhaloka.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#hero-slide" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#hero-slide" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
</div>
</div>
</div>
</section>
<section class="section-padding">
<div class="container">
<div class="row">
<div class="col-lg-10 col-12 text-center mx-auto">
<h2 class="mb-5">Welcome to Anindhaloka</h2>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-4 mb-lg-0 mb-md-4">
<div class="featured-block d-flex justify-content-center align-items-center">
<a href="donate.html" class="d-block">
<img src="{% static 'images/icons/heart.png' %}" class="featured-block-image img-fluid" alt="">
<p class="featured-block-text"><strong>Caring</strong> Earth</p>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-4 mb-lg-0">
<div class="featured-block d-flex justify-content-center align-items-center">
<a href="donate.html" class="d-block">
<img src="{% static 'images/icons/scholarship.png' %}" class="featured-block-image img-fluid" alt="">
<p class="featured-block-text"><strong>Join a</strong> Program</p>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-4 mb-lg-0">
<div class="featured-block d-flex justify-content-center align-items-center">
<a href="donate.html" class="d-block">
<img src="{% static 'images/icons/hands.png' %}" class="featured-block-image img-fluid" alt="">
<p class="featured-block-text">Become a <strong>volunteer</strong></p>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6 col-12 mb-4 mb-lg-0 mb-md-4">
<div class="featured-block d-flex justify-content-center align-items-center">
<a href="donate.html" class="d-block">
<img src="{% static 'images/icons/receive.png' %}" class="featured-block-image img-fluid" alt="">
<p class="featured-block-text">Be a<strong>Support</strong></p>
</a>
</div>
</div>
</div>
</div>
</section>
<section class="section-padding section-bg" id="section_2">
<div class="container">
<div class="row">
<div class="col-lg-6 col-12 mb-5 mb-lg-0">
<img src="{% static 'images/ours.jpg' %}" class="custom-text-box-image img-fluid" alt="">
</div>
<div class="col-lg-6 col-12">
<div class="custom-text-box">
<h2 class="mb-2">Our Story</h2>
<h5 class="mb-3">Anindhaloka, Rumah Gotong Royong</h5>
<p class="mb-0">Rumah terpercaya dan kesayangan yang menghubungkan pikiran-hati-tindakan Pemelajar
Bahagia untuk melahirkan mahakarya bagi kemanusiaan, kelestarian alam, dan kebijaksanaan
spiritualitas melalui kerja Gotong Royong.</p>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-12">
<div class="custom-text-box mb-lg-0">
<h5 class="mb-3">Our Mission</h5>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<ul class="custom-list mt-2">
<li class="custom-list-item d-flex">
<i class="bi-check custom-text-box-icon me-2"></i>
Charity Theme
</li>
<li class="custom-list-item d-flex">
<i class="bi-check custom-text-box-icon me-2"></i>
Semantic HTML
</li>
</ul>
</div>
</div>
<div class="col-lg-6 col-md-6 col-12">
<div class="custom-text-box d-flex flex-wrap d-lg-block mb-lg-0">
<div class="counter-thumb">
<div class="d-flex">
<span class="counter-number" data-from="1" data-to="2009" data-speed="1000"></span>
<span class="counter-number-text"></span>
</div>
<span class="counter-text">Founded</span>
</div>
<div class="counter-thumb mt-4">
<div class="d-flex">
<span class="counter-number" data-from="1" data-to="120" data-speed="1000"></span>
<span class="counter-number-text">B</span>
</div>
<span class="counter-text">Donations</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="about-section section-padding">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-5 col-12">
<img src="{% static 'images/founder.jpg' %}" class="about-image ms-lg-auto bg-light shadow-lg img-fluid" alt="">
</div>
<div class="col-lg-5 col-md-7 col-12">
<div class="custom-text-block">
<h2 class="mb-0">Cokorda Istri Dewi</h2>
<p class="text-muted mb-lg-4 mb-md-4">Founder Anindhaloka</p>
<p>Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based</p>
<p>You are not allowed to redistribute this template ZIP file on any other template collection website. Please contact TemplateMo for more information.</p>
<ul class="social-icon mt-4">
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-twitter"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-facebook"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-instagram"></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="cta-section section-padding section-bg">
<div class="container">
<div class="row justify-content-center align-items-center">
<div class="col-lg-5 col-12 ms-auto">
<h2 class="mb-0">Make an impact. <br> Save lives.</h2>
</div>
<div class="col-lg-5 col-12">
<a href="#" class="me-4">Make a donation</a>
<a href="#section_4" class="custom-btn btn smoothscroll">Become a volunteer</a>
</div>
</div>
</div>
</section>
<section class="section-padding" id="section_3">
<div class="container">
<div class="row">
<div class="col-lg-12 col-12 text-center mb-4">
<h2>Our Program / Event</h2>
</div>
<div class="col-lg-4 col-md-6 col-12 mb-4 mb-lg-0">
<div class="custom-block-wrap">
<img src="{% static 'images/causes/group-african-kids-paying-attention-class.jpg' %}" class="custom-block-image img-fluid" alt="">
<div class="custom-block">
<div class="custom-block-body">
<h5 class="mb-3">Pencil x Nature</h5>
<p>Kelas interaktif anak-anak untuk belajar ilustrasi, cat air, dan menggambar kreatif.</p>
<div class="progress mt-4">
<div class="progress-bar w-75" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="d-flex align-items-center my-2">
<p class="mb-0">
<strong>Raised:</strong>
$18,500
</p>
<p class="ms-auto mb-0">
<strong>Goal:</strong>
$32,000
</p>
</div>
</div>
<a href="donate.html" class="custom-btn btn">Read More</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 mb-4 mb-lg-0">
<div class="custom-block-wrap">
<img src="{% static 'images/causes/poor-child-landfill-looks-forward-with-hope.jpg' %}" class="custom-block-image img-fluid" alt="">
<div class="custom-block">
<div class="custom-block-body">
<h5 class="mb-3">Pasar Bahagia</h5>
<p>Menghadirkan kreator untuk Indonesia yang lebih bahagia dan berkelanjutan.</p>
<div class="progress mt-4">
<div class="progress-bar w-50" role="progressbar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="d-flex align-items-center my-2">
<p class="mb-0">
<strong>Raised:</strong>
$27,600
</p>
<p class="ms-auto mb-0">
<strong>Goal:</strong>
$60,000
</p>
</div>
</div>
<a href="donate.html" class="custom-btn btn">Read More</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12">
<div class="custom-block-wrap">
<img src="{% static 'images/causes/african-woman-pouring-water-recipient-outdoors.jpg' %}" class="custom-block-image img-fluid" alt="">
<div class="custom-block">
<div class="custom-block-body">
<h5 class="mb-3">Kelas Unik</h5>
<p>Kelas Seni Unik x Nin hadir untuk mengasah kreativitas dan ekspresi melalui berbagai seni.</p>
<div class="progress mt-4">
<div class="progress-bar w-100" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="d-flex align-items-center my-2">
<p class="mb-0">
<strong>Raised:</strong>
$84,600
</p>
<p class="ms-auto mb-0">
<strong>Goal:</strong>
$100,000
</p>
</div>
</div>
<a href="donate.html" class="custom-btn btn">Read More</a>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="volunteer-section section-padding" id="section_4">
<div class="container">
<div class="row">
<div class="col-lg-6 col-12">
<h2 class="text-white mb-4">Volunteer</h2>
<form class="custom-form volunteer-form mb-5 mb-lg-0" action="#" method="post" role="form">
<h3 class="mb-4">Become a volunteer today</h3>
<div class="row">
<div class="col-lg-6 col-12">
<input type="text" name="volunteer-name" id="volunteer-name" class="form-control" placeholder="Jack Doe" required>
</div>
<div class="col-lg-6 col-12">
<input type="email" name="volunteer-email" id="volunteer-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Jackdoe@gmail.com" required>
</div>
<div class="col-lg-6 col-12">
<input type="text" name="volunteer-subject" id="volunteer-subject" class="form-control" placeholder="Subject" required>
</div>
<div class="col-lg-6 col-12">
<div class="input-group input-group-file">
<input type="file" class="form-control" id="inputGroupFile02">
<label class="input-group-text" for="inputGroupFile02">Upload your CV</label>
<i class="bi-cloud-arrow-up ms-auto"></i>
</div>
</div>
</div>
<textarea name="volunteer-message" rows="3" class="form-control" id="volunteer-message" placeholder="Comment (Optional)"></textarea>
<button type="submit" class="form-control">Submit</button>
</form>
</div>
<div class="col-lg-6 col-12">
<img src="{% static 'images/smiling-casual-woman-dressed-volunteer-t-shirt-with-badge.jpg' %}" class="volunteer-image img-fluid" alt="">
<div class="custom-block-body text-center">
<h4 class="text-white mt-lg-3 mb-lg-3">About Volunteering</h4>
<p class="text-white">Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based</p>
</div>
</div>
</div>
</div>
</section>
<section class="news-section section-padding" id="section_5">
<div class="container">
<div class="row">
<div class="col-lg-12 col-12 mb-5">
<h2>Latest News</h2>
</div>
<div class="col-lg-7 col-12">
<div class="news-block">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-volunteers-with-clothing-donations.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Lifestyle,
</a>
<a href="#" class="category-block-link">
Clothing Donation
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 12, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
32 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Clothing donation to urban area</a></h4>
</div>
<div class="news-block-body">
<p>Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based on Bootstrap</p>
</div>
</div>
</div>
<div class="news-block mt-3">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-people-collecting-foodstuff.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Food,
</a>
<a href="#" class="category-block-link">
Donation,
</a>
<a href="#" class="category-block-link">
Caring
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 20, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
35 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h4>
</div>
<div class="news-block-body">
<p>Sed leo nisl, posuere at molestie ac, suscipit auctor mauris. Etiam quis metus elementum, tempor risus vel, condimentum orci</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-12 mx-auto">
<form class="custom-form search-form" action="#" method="get" role="form">
<input name="search" type="search" class="form-control" id="search" placeholder="Search" aria-label="Search">
<button type="submit" class="form-control">
<i class="bi-search"></i>
</button>
</form>
<h5 class="mt-5 mb-3">Recent news</h5>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/africa-humanitarian-aid-doctor.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 16, 2036
</p>
</div>
</div>
</div>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/close-up-happy-people-working-together.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Volunteering Clean</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 24, 2036
</p>
</div>
</div>
</div>
<div class="category-block d-flex flex-column">
<h5 class="mb-3">Categories</h5>
<a href="#" class="category-block-link">
Drinking water
<span class="badge">20</span>
</a>
<a href="#" class="category-block-link">
Food Donation
<span class="badge">30</span>
</a>
<a href="#" class="category-block-link">
Children Education
<span class="badge">10</span>
</a>
<a href="#" class="category-block-link">
Poverty Development
<span class="badge">15</span>
</a>
<a href="#" class="category-block-link">
Clothing Donation
<span class="badge">20</span>
</a>
</div>
<div class="tags-block">
<h5 class="mb-3">Tags</h5>
<a href="#" class="tags-block-link">
Donation
</a>
<a href="#" class="tags-block-link">
Clothing
</a>
<a href="#" class="tags-block-link">
Food
</a>
<a href="#" class="tags-block-link">
Children
</a>
<a href="#" class="tags-block-link">
Education
</a>
<a href="#" class="tags-block-link">
Poverty
</a>
<a href="#" class="tags-block-link">
Clean Water
</a>
</div>
<form class="custom-form subscribe-form" action="#" method="get" role="form">
<h5 class="mb-4">Newsletter Form</h5>
<input type="email" name="subscribe-email" id="subscribe-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Email Address" required>
<div class="col-lg-12 col-12">
<button type="submit" class="form-control">Subscribe</button>
</div>
</form>
</div>
</div>
</div>
</section>
<section class="testimonial-section section-padding section-bg">
<div class="container">
<div class="row">
<div class="col-lg-8 col-12 mx-auto">
<h2 class="mb-lg-3">Happy Partners</h2>
<div id="testimonial-carousel" class="carousel carousel-fade slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="carousel-caption">
<h4 class="carousel-title">Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito charity theme</h4>
<small class="carousel-name"><span class="carousel-name-title">Maria</span>, Boss</small>
</div>
</div>
<div class="carousel-item">
<div class="carousel-caption">
<h4 class="carousel-title">Sed leo nisl, posuere at molestie ac, suscipit auctor mauris quis metus tempor orci</h4>
<small class="carousel-name"><span class="carousel-name-title">Thomas</span>, Partner</small>
</div>
</div>
<div class="carousel-item">
<div class="carousel-caption">
<h4 class="carousel-title">Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito charity theme</h4>
<small class="carousel-name"><span class="carousel-name-title">Jane</span>, Advisor</small>
</div>
</div>
<div class="carousel-item">
<div class="carousel-caption">
<h4 class="carousel-title">Sed leo nisl, posuere at molestie ac, suscipit auctor mauris quis metus tempor orci</h4>
<small class="carousel-name"><span class="carousel-name-title">Bob</span>, Entreprenuer</small>
</div>
</div>
<ol class="carousel-indicators">
<li data-bs-target="#testimonial-carousel" data-bs-slide-to="0" class="active">
<img src="{% static 'images/avatar/portrait-beautiful-young-woman-standing-grey-wall.jpg' %}" class="img-fluid rounded-circle avatar-image" alt="avatar">
</li>
<li data-bs-target="#testimonial-carousel" data-bs-slide-to="1" class="">
<img src="{% static 'images/avatar/portrait-young-redhead-bearded-male.jpg' %}" class="img-fluid rounded-circle avatar-image" alt="avatar">
</li>
<li data-bs-target="#testimonial-carousel" data-bs-slide-to="2" class="">
<img src="{% static 'images/avatar/pretty-blonde-woman-wearing-white-t-shirt.jpg' %}" class="img-fluid rounded-circle avatar-image" alt="avatar">
</li>
<li data-bs-target="#testimonial-carousel" data-bs-slide-to="3" class="">
<img src="{% static 'images/avatar/studio-portrait-emotional-happy-funny.jpg' %}" class="img-fluid rounded-circle avatar-image" alt="avatar">
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="contact-section section-padding" id="section_6">
<div class="container">
<div class="row">
<div class="col-lg-4 col-12 ms-auto mb-5 mb-lg-0">
<div class="contact-info-wrap">
<h2>Get in touch</h2>
<div class="contact-image-wrap d-flex flex-wrap">
<img src="{% static 'images/avatar/pretty-blonde-woman-wearing-white-t-shirt.jpg' %}" class="img-fluid avatar-image" alt="">
<div class="d-flex flex-column justify-content-center ms-3">
<p class="mb-0">Tri Wahyuning Rahayu</p>
<p class="mb-0"><strong>HR & Office Manager</strong></p>
</div>
</div>
<div class="contact-info">
<h5 class="mb-3">Contact Infomation</h5>
<p class="d-flex mb-2">
<i class="bi-geo-alt me-2"></i>
Bintaro, Jakarta, Indonesia
</p>
<p class="d-flex mb-2">
<i class="bi-telephone me-2"></i>
<a href="tel: 120-240-9600">
120-240-9600
</a>
</p>
<p class="d-flex">
<i class="bi-envelope me-2"></i>
<a href="mailto:info@yourgmail.com">
donate@charity.org
</a>
</p>
<a href="#" class="custom-btn btn mt-3">Get Direction</a>
</div>
</div>
</div>
<div class="col-lg-5 col-12 mx-auto">
<form class="custom-form contact-form" action="#" method="post" role="form">
<h2>Contact form</h2>
<p class="mb-4">Or, you can just send an email:
<a href="#">info@charity.org</a>
</p>
<div class="row">
<div class="col-lg-6 col-md-6 col-12">
<input type="text" name="first-name" id="first-name" class="form-control" placeholder="Jack" required>
</div>
<div class="col-lg-6 col-md-6 col-12">
<input type="text" name="last-name" id="last-name" class="form-control" placeholder="Doe" required>
</div>
</div>
<input type="email" name="email" id="email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Jackdoe@gmail.com" required>
<textarea name="message" rows="5" class="form-control" id="message" placeholder="What can we help you?"></textarea>
<button type="submit" class="form-control">Send Message</button>
</form>
</div>
</div>
</div>
</section>
{% endblock %}

374
templates/donate.html Normal file
View File

@ -0,0 +1,374 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Kind Heart Charity - Donation</title>
<!-- CSS FILES -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-icons.css" rel="stylesheet">
<link href="css/templatemo-kind-heart-charity.css" rel="stylesheet">
<!--
TemplateMo 581 Kind Heart Charity
https://templatemo.com/tm-581-kind-heart-charity
-->
</head>
<body>
<header class="site-header">
<div class="container">
<div class="row">
<div class="col-lg-8 col-12 d-flex flex-wrap">
<p class="d-flex me-4 mb-0">
<i class="bi-geo-alt me-2"></i>
Akershusstranda 20, 0150 Oslo, Norway
</p>
<p class="d-flex mb-0">
<i class="bi-envelope me-2"></i>
<a href="mailto:info@company.com">
info@company.com
</a>
</p>
</div>
<div class="col-lg-3 col-12 ms-auto d-lg-block d-none">
<ul class="social-icon">
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-twitter"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-facebook"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-instagram"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-youtube"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-whatsapp"></a>
</li>
</ul>
</div>
</div>
</div>
</header>
<nav class="navbar navbar-expand-lg bg-light shadow-lg">
<div class="container">
<a class="navbar-brand" href="index.html">
<img src="images/logo.png" class="logo img-fluid" alt="">
<span>
Kind Heart Charity
<small>Non-profit Organization</small>
</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link click-scroll" href="index.html#section_1">Home</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="index.html#section_2">About</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="index.html#section_3">Causes</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="index.html#section_4">Volunteer</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link click-scroll dropdown-toggle" href="index.html#section_5" id="navbarLightDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">News</a>
<ul class="dropdown-menu dropdown-menu-light" aria-labelledby="navbarLightDropdownMenuLink">
<li><a class="dropdown-item" href="news.html">News Listing</a></li>
<li><a class="dropdown-item" href="news-detail.html">News Detail</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="index.html#section_6">Contact</a>
</li>
<li class="nav-item ms-3">
<a class="nav-link custom-btn custom-border-btn btn" href="donate.html">Donate</a>
</li>
</ul>
</div>
</div>
</nav>
<main>
<section class="donate-section">
<div class="section-overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-6 col-12 mx-auto">
<form class="custom-form donate-form" action="#" method="get" role="form">
<h3 class="mb-4">Make a donation</h3>
<div class="row">
<div class="col-lg-12 col-12">
<h5 class="mb-3">Donation Frequency</h5>
</div>
<div class="col-lg-6 col-6 form-check-group form-check-group-donation-frequency">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="DonationFrequency" id="DonationFrequencyOne" checked>
<label class="form-check-label" for="DonationFrequencyOne">
One Time
</label>
</div>
</div>
<div class="col-lg-6 col-6 form-check-group form-check-group-donation-frequency">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="DonationFrequency" id="DonationFrequencyMonthly">
<label class="form-check-label" for="DonationFrequencyMonthly">
Monthly
</label>
</div>
</div>
<div class="col-lg-12 col-12">
<h5 class="mt-2 mb-3">Select an amount</h5>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1">
<label class="form-check-label" for="flexRadioDefault1">
$10
</label>
</div>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault2">
<label class="form-check-label" for="flexRadioDefault2">
$15
</label>
</div>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault3">
<label class="form-check-label" for="flexRadioDefault3">
$20
</label>
</div>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault4">
<label class="form-check-label" for="flexRadioDefault4">
$30
</label>
</div>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault5">
<label class="form-check-label" for="flexRadioDefault5">
$45
</label>
</div>
</div>
<div class="col-lg-3 col-md-6 col-6 form-check-group">
<div class="form-check form-check-radio">
<input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault6">
<label class="form-check-label" for="flexRadioDefault6">
$50
</label>
</div>
</div>
<div class="col-lg-6 col-12 form-check-group">
<div class="input-group">
<span class="input-group-text" id="basic-addon1">$</span>
<input type="text" class="form-control" placeholder="Custom amount" aria-label="Username" aria-describedby="basic-addon1">
</div>
</div>
<div class="col-lg-12 col-12">
<h5 class="mt-1">Personal Info</h5>
</div>
<div class="col-lg-6 col-12 mt-2">
<input type="text" name="donation-name" id="donation-name" class="form-control" placeholder="Jack Doe" required>
</div>
<div class="col-lg-6 col-12 mt-2">
<input type="email" name="donation-email" id="donation-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Jackdoe@gmail.com" required>
</div>
<div class="col-lg-12 col-12">
<h5 class="mt-4 pt-1">Choose Payment</h5>
</div>
<div class="col-lg-12 col-12 mt-2">
<div class="form-check">
<input class="form-check-input" type="radio" name="DonationPayment" id="flexRadioDefault9">
<label class="form-check-label" for="flexRadioDefault9">
<i class="bi-credit-card custom-icon ms-1"></i>
Debit or Credit card
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="DonationPayment" id="flexRadioDefault10">
<label class="form-check-label" for="flexRadioDefault10">
<i class="bi-paypal custom-icon ms-1"></i>
Paypal
</label>
</div>
<button type="submit" class="form-control mt-4">Submit Donation</button>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<div class="row">
<div class="col-lg-3 col-12 mb-4">
<img src="images/logo.png" class="logo img-fluid" alt="">
</div>
<div class="col-lg-4 col-md-6 col-12 mb-4">
<h5 class="site-footer-title mb-3">Quick Links</h5>
<ul class="footer-menu">
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Our Story</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Newsroom</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Causes</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Become a volunteer</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Partner with us</a></li>
</ul>
</div>
<div class="col-lg-4 col-md-6 col-12 mx-auto">
<h5 class="site-footer-title mb-3">Contact Infomation</h5>
<p class="text-white d-flex mb-2">
<i class="bi-telephone me-2"></i>
<a href="tel: 120-240-9600" class="site-footer-link">
120-240-9600
</a>
</p>
<p class="text-white d-flex">
<i class="bi-envelope me-2"></i>
<a href="mailto:donate@charity.org" class="site-footer-link">
donate@charity.org
</a>
</p>
<p class="text-white d-flex mt-3">
<i class="bi-geo-alt me-2"></i>
Akershusstranda 20, 0150 Oslo, Norway
</p>
<a href="#" class="custom-btn btn mt-3">Get Direction</a>
</div>
</div>
</div>
<div class="site-footer-bottom">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-7 col-12">
<p class="copyright-text mb-0">Copyright © 2036 <a href="#">Kind Heart</a> Charity Org.
Design: <a href="https://templatemo.com" target="_blank">TemplateMo</a></p>
</div>
<div class="col-lg-6 col-md-5 col-12 d-flex justify-content-center align-items-center mx-auto">
<ul class="social-icon">
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-twitter"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-facebook"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-instagram"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-linkedin"></a>
</li>
<li class="social-icon-item">
<a href="https://youtube.com/templatemo" class="social-icon-link bi-youtube"></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<!-- JAVASCRIPT FILES -->
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.sticky.js"></script>
<script src="js/counter.js"></script>
<script src="js/custom.js"></script>
</body>
</html>

1030
templates/index.html Normal file

File diff suppressed because it is too large Load Diff

423
templates/news-detail.html Normal file
View File

@ -0,0 +1,423 @@
{% extends 'snippets/main.html' %}
{% load static %}
{% block content %}
<section class="news-detail-header-section text-center">
<div class="section-overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-12 col-12">
<h1 class="text-white">News Detail</h1>
</div>
</div>
</div>
</section>
<section class="news-section section-padding">
<div class="container">
<div class="row">
<div class="col-lg-7 col-12">
<div class="news-block">
<div class="news-block-top">
<img src="{% static 'images/news/medium-shot-volunteers-with-clothing-donations.jpg' %}" class="news-image img-fluid" alt="">
<div class="news-category-block">
<a href="#" class="category-block-link">
Lifestyle,
</a>
<a href="#" class="category-block-link">
Clothing Donation
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 12, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
48 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4>Clothing donation to urban area</h4>
</div>
<div class="news-block-body">
<p><strong>Lorem Ipsum</strong> dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based on Bootstrap</p>
<p><strong>Sed leo</strong> nisl, This is a Bootstrap 5.2.2 CSS template for charity organization websites. You can feel free to use it. Please tell your friends about TemplateMo website. Thank you.</p>
<blockquote>Sed leo nisl, posuere at molestie ac, suscipit auctor mauris. Etiam quis metus elementum, tempor risus vel, condimentum orci.</blockquote>
</div>
<div class="row mt-5 mb-4">
<div class="col-lg-6 col-12 mb-4 mb-lg-0">
<img src="{% static 'images/news/africa-humanitarian-aid-doctor.jpg' %}" class="news-detail-image img-fluid" alt="">
</div>
<div class="col-lg-6 col-12">
<img src="{% static 'images/news/close-up-happy-people-working-together.jpg' %}" class="news-detail-image img-fluid" alt="">
</div>
</div>
<p>You are not allowed to redistribute this template ZIP file on any other template collection website. Please <a href="https://templatemo.com/contact" target="_blank">contact TemplateMo</a> for more information.</p>
<div class="social-share border-top mt-5 py-4 d-flex flex-wrap align-items-center">
<div class="tags-block me-auto">
<a href="#" class="tags-block-link">
Donation
</a>
<a href="#" class="tags-block-link">
Clothing
</a>
<a href="#" class="tags-block-link">
Food
</a>
</div>
<div class="d-flex">
<a href="#" class="social-icon-link bi-facebook"></a>
<a href="#" class="social-icon-link bi-twitter"></a>
<a href="#" class="social-icon-link bi-printer"></a>
<a href="#" class="social-icon-link bi-envelope"></a>
</div>
</div>
<div class="author-comment d-flex mt-3 mb-4">
<img src="{% static 'images/avatar/studio-portrait-emotional-happy-funny.jpg' %}" class="img-fluid avatar-image" alt="">
<div class="author-comment-info ms-3">
<h6 class="mb-1">Jack</h6>
<p class="mb-0">Kind Heart Charity is the most supportive organization. This is Bootstrap 5 HTML CSS template for everyone. Thank you.</p>
<div class="d-flex mt-2">
<a href="#" class="author-comment-link me-3">Like</a>
<a href="#" class="author-comment-link">Reply</a>
</div>
</div>
</div>
<div class="author-comment d-flex ms-5 ps-3">
<img src="{% static 'images/avatar/pretty-blonde-woman-wearing-white-t-shirt.jpg' %}" class="img-fluid avatar-image" alt="">
<div class="author-comment-info ms-3">
<h6 class="mb-1">Daisy</h6>
<p class="mb-0">Sed leo nisl, posuere at molestie ac, suscipit auctor mauris. Etiam quis metus elementum, tempor risus vel, condimentum orci</p>
<div class="d-flex mt-2">
<a href="#" class="author-comment-link me-3">Like</a>
<a href="#" class="author-comment-link">Reply</a>
</div>
</div>
</div>
<div class="author-comment d-flex mt-3 mb-4">
<img src="{% static 'images/avatar/portrait-young-redhead-bearded-male.jpg' %}" class="img-fluid avatar-image" alt="">
<div class="author-comment-info ms-3">
<h6 class="mb-1">Wilson</h6>
<p class="mb-0">Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based on Bootstrap</p>
<div class="d-flex mt-2">
<a href="#" class="author-comment-link me-3">Like</a>
<a href="#" class="author-comment-link">Reply</a>
</div>
</div>
</div>
<form class="custom-form comment-form mt-4" action="#" method="post" role="form">
<h6 class="mb-3">Write a comment</h6>
<textarea name="comment-message" rows="4" class="form-control" id="comment-message" placeholder="Your comment here"></textarea>
<div class="col-lg-3 col-md-4 col-6 ms-auto">
<button type="submit" class="form-control">Comment</button>
</div>
</form>
</div>
</div>
</div>
<div class="col-lg-4 col-12 mx-auto mt-4 mt-lg-0">
<form class="custom-form search-form" action="#" method="post" role="form">
<input class="form-control" type="search" placeholder="Search" aria-label="Search">
<button type="submit" class="form-control">
<i class="bi-search"></i>
</button>
</form>
<h5 class="mt-5 mb-3">Recent news</h5>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/africa-humanitarian-aid-doctor.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 16, 2036
</p>
</div>
</div>
</div>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/close-up-happy-people-working-together.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Volunteering Clean</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 20, 2036
</p>
</div>
</div>
</div>
<div class="category-block d-flex flex-column">
<h5 class="mb-3">Categories</h5>
<a href="#" class="category-block-link">
Drinking water
<span class="badge">20</span>
</a>
<a href="#" class="category-block-link">
Food Donation
<span class="badge">30</span>
</a>
<a href="#" class="category-block-link">
Children Education
<span class="badge">10</span>
</a>
<a href="#" class="category-block-link">
Poverty Development
<span class="badge">15</span>
</a>
<a href="#" class="category-block-link">
Clothing Donation
<span class="badge">20</span>
</a>
</div>
<div class="tags-block">
<h5 class="mb-3">Tags</h5>
<a href="#" class="tags-block-link">
Donation
</a>
<a href="#" class="tags-block-link">
Clothing
</a>
<a href="#" class="tags-block-link">
Food
</a>
<a href="#" class="tags-block-link">
Children
</a>
<a href="#" class="tags-block-link">
Education
</a>
<a href="#" class="tags-block-link">
Poverty
</a>
<a href="#" class="tags-block-link">
Clean Water
</a>
</div>
<form class="custom-form subscribe-form" action="#" method="post" role="form">
<h5 class="mb-4">Newsletter Form</h5>
<input type="email" name="subscribe-email" id="subscribe-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Email Address" required>
<div class="col-lg-12 col-12">
<button type="submit" class="form-control">Subscribe</button>
</div>
</form>
</div>
</div>
</div>
</section>
<section class="news-section section-padding section-bg">
<div class="container">
<div class="row">
<div class="col-lg-12 col-12 mb-4">
<h2>Related news</h2>
</div>
<div class="col-lg-6 col-12">
<div class="news-block">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-volunteers-with-clothing-donations.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Lifestyle,
</a>
<a href="#" class="category-block-link">
Clothing Donation
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 16, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
24 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Clothing donation to urban area</a></h4>
</div>
<div class="news-block-body">
<p>Lorem Ipsum dolor sit amet, consectetur adipsicing kengan omeg kohm tokito Professional charity theme based on Bootstrap</p>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="news-block">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-people-collecting-foodstuff.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Food,
</a>
<a href="#" class="category-block-link">
Donation,
</a>
<a href="#" class="category-block-link">
Caring
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 20, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
36 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h4>
</div>
<div class="news-block-body">
<p>Sed leo nisl, posuere at molestie ac, suscipit auctor mauris. Etiam quis metus elementum, tempor risus vel, condimentum orci</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
{% endblock%}

258
templates/news.html Normal file
View File

@ -0,0 +1,258 @@
{% extends 'snippets/main.html' %}
{% load static %}
{% block content %}
<section class="news-detail-header-section text-center">
<div class="section-overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-12 col-12">
<h1 class="text-white">News Listing</h1>
</div>
</div>
</div>
</section>
<section class="news-section section-padding">
<div class="container">
<div class="row">
<div class="col-lg-7 col-12">
<div class="news-block">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-volunteers-with-clothing-donations.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Lifestyle,
</a>
<a href="#" class="category-block-link">
Clothing Donation
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 18, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
32 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Clothing donation to urban area</a></h4>
</div>
<div class="news-block-body">
<p>This is a Bootstrap 5.2.2 CSS template for charity organization websites. You can feel free to use it. Please tell your friends about TemplateMo website. Thank you.</p>
</div>
</div>
</div>
<div class="news-block mt-3">
<div class="news-block-top">
<a href="news-detail.html">
<img src="{% static 'images/news/medium-shot-people-collecting-foodstuff.jpg' %}" class="news-image img-fluid" alt="">
</a>
<div class="news-category-block">
<a href="#" class="category-block-link">
Food,
</a>
<a href="#" class="category-block-link">
Donation,
</a>
<a href="#" class="category-block-link">
Caring
</a>
</div>
</div>
<div class="news-block-info">
<div class="d-flex mt-2">
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 12, 2036
</p>
</div>
<div class="news-block-author mx-5">
<p>
<i class="bi-person custom-icon me-1"></i>
By Admin
</p>
</div>
<div class="news-block-comment">
<p>
<i class="bi-chat-left custom-icon me-1"></i>
35 Comments
</p>
</div>
</div>
<div class="news-block-title mb-2">
<h4><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h4>
</div>
<div class="news-block-body">
<p>You are not allowed to redistribute this template ZIP file on any other template collection website. Please <a href="https://templatemo.com/contact" target="_blank">contact TemplateMo</a> for more information.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-12 mx-auto mt-4 mt-lg-0">
<form class="custom-form search-form" action="#" method="post" role="form">
<input class="form-control" type="search" placeholder="Search" aria-label="Search">
<button type="submit" class="form-control">
<i class="bi-search"></i>
</button>
</form>
<h5 class="mt-5 mb-3">Recent news</h5>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/africa-humanitarian-aid-doctor.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Food donation area</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 16, 2036
</p>
</div>
</div>
</div>
<div class="news-block news-block-two-col d-flex mt-4">
<div class="news-block-two-col-image-wrap">
<a href="news-detail.html">
<img src="{% static 'images/news/close-up-happy-people-working-together.jpg' %}" class="news-image img-fluid" alt="">
</a>
</div>
<div class="news-block-two-col-info">
<div class="news-block-title mb-2">
<h6><a href="news-detail.html" class="news-block-title-link">Volunteering Clean</a></h6>
</div>
<div class="news-block-date">
<p>
<i class="bi-calendar4 custom-icon me-1"></i>
October 24, 2036
</p>
</div>
</div>
</div>
<div class="category-block d-flex flex-column">
<h5 class="mb-3">Categories</h5>
<a href="#" class="category-block-link">
Drinking water
<span class="badge">20</span>
</a>
<a href="#" class="category-block-link">
Food Donation
<span class="badge">30</span>
</a>
<a href="#" class="category-block-link">
Children Education
<span class="badge">10</span>
</a>
<a href="#" class="category-block-link">
Poverty Development
<span class="badge">15</span>
</a>
<a href="#" class="category-block-link">
Clothing Donation
<span class="badge">20</span>
</a>
</div>
<div class="tags-block">
<h5 class="mb-3">Tags</h5>
<a href="#" class="tags-block-link">
Donation
</a>
<a href="#" class="tags-block-link">
Clothing
</a>
<a href="#" class="tags-block-link">
Food
</a>
<a href="#" class="tags-block-link">
Children
</a>
<a href="#" class="tags-block-link">
Education
</a>
<a href="#" class="tags-block-link">
Poverty
</a>
<a href="#" class="tags-block-link">
Clean Water
</a>
</div>
<form class="custom-form subscribe-form" action="#" method="post" role="form">
<h5 class="mb-4">Newsletter Form</h5>
<input type="email" name="subscribe-email" id="subscribe-email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Email Address" required>
<div class="col-lg-12 col-12">
<button type="submit" class="form-control">Subscribe</button>
</div>
</form>
</div>
</div>
</div>
</section>
{% endblock %}

View File

@ -0,0 +1,90 @@
{% load static %}
<footer class="site-footer">
<div class="container">
<div class="row">
<div class="col-lg-3 col-12 mb-4">
<img src="{% static 'images/logo.png' %}" class="logo img-fluid" alt="">
</div>
<div class="col-lg-4 col-md-6 col-12 mb-4">
<h5 class="site-footer-title mb-3">Quick Links</h5>
<ul class="footer-menu">
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Our Story</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Newsroom</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Causes</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Become a volunteer</a></li>
<li class="footer-menu-item"><a href="#" class="footer-menu-link">Partner with us</a></li>
</ul>
</div>
<div class="col-lg-4 col-md-6 col-12 mx-auto">
<h5 class="site-footer-title mb-3">Contact Infomation</h5>
<p class="text-white d-flex mb-2">
<i class="bi-telephone me-2"></i>
<a href="tel: 120-240-9600" class="site-footer-link">
120-240-9600
</a>
</p>
<p class="text-white d-flex">
<i class="bi-envelope me-2"></i>
<a href="mailto:info@yourgmail.com" class="site-footer-link">
donate@charity.org
</a>
</p>
<p class="text-white d-flex mt-3">
<i class="bi-geo-alt me-2"></i>
Jl. YRS No. 20, Jakarta, Indonesia
</p>
<a href="#" class="custom-btn btn mt-3">Get Direction</a>
</div>
</div>
</div>
<div class="site-footer-bottom">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-7 col-12">
<p class="copyright-text mb-0">Copyright © 2036 <a href="#">Kind Heart</a> Charity Org.
Design: <a href="https://templatemo.com" target="_blank">TemplateMo</a></p>
</div>
<div class="col-lg-6 col-md-5 col-12 d-flex justify-content-center align-items-center mx-auto">
<ul class="social-icon">
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-twitter"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-facebook"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-instagram"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-linkedin"></a>
</li>
<li class="social-icon-item">
<a href="https://youtube.com/templatemo" class="social-icon-link bi-youtube"></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</footer>

View File

@ -0,0 +1,83 @@
{% load static %}
<header class="site-header">
<div class="container">
<div class="row">
<div class="col-lg-8 col-12 d-flex flex-wrap">
<p class="d-flex me-4 mb-0">
<i class="bi-geo-alt me-2"></i>
Jl. YRS No. 20, Jakarta, Indonesia
</p>
<p class="d-flex mb-0">
<i class="bi-envelope me-2"></i>
<a href="mailto:info@company.com">
info@company.com
</a>
</p>
</div>
<div class="col-lg-3 col-12 ms-auto d-lg-block d-none">
<ul class="social-icon">
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-twitter"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-facebook"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-instagram"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-youtube"></a>
</li>
<li class="social-icon-item">
<a href="#" class="social-icon-link bi-whatsapp"></a>
</li>
</ul>
</div>
</div>
</div>
</header>
<nav class="navbar navbar-expand-lg bg-light shadow-lg">
<div class="container">
<a class="navbar-brand" href="{% url 'dashboard' %}">
<img src="{% static 'images/logonin.png' %}" class="logo img-fluid" alt="Anindhaloka">
<span>
Anindhaloka
<small>Rumah Gotong Royong</small>
</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link click-scroll" href="{% url 'dashboard' %}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="{% url 'dashboard' %}#section_2">About</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="{% url 'dashboard' %}#section_3">Causes</a>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="{% url 'dashboard' %}#section_4">Volunteer</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link click-scroll dropdown-toggle" href="#section_5" id="navbarLightDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">News</a>
<ul class="dropdown-menu dropdown-menu-light" aria-labelledby="navbarLightDropdownMenuLink">
<li><a class="dropdown-item" href="{% url 'news' %}">News Listing</a></li>
<li><a class="dropdown-item" href="{% url 'news_detail' %}">News Detail</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link click-scroll" href="#section_6">Contact</a>
</li>
<li class="nav-item ms-3">
<a class="nav-link custom-btn custom-border-btn btn" href="donate.html">Login</a>
</li>
</ul>
</div>
</div>
</nav>

View File

@ -0,0 +1,36 @@
{% load static %}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="{% static 'images/logonin.png' %}" type="image/x-icon">
<link rel="shortcut icon" href="{% static 'images/logonin.png' %}" type="image/x-icon">
<title>Anindhaloka</title>
<!-- CSS FILES -->
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
<link href="{% static 'css/bootstrap-icons.css' %}" rel="stylesheet">
<link href="{% static 'css/templatemo-kind-heart-charity.css' %}" rel="stylesheet">
</head>
<body id="section_1">
{% include 'snippets/header.html' %}
<main>
{% block content %}{% endblock content %}
</main>
{% include 'snippets/footer.html' %}
<!-- JAVASCRIPT FILES -->
<script src="{% static 'js/jquery.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="{% static 'js/jquery.sticky.js' %}"></script>
<script src="{% static 'js/click-scroll.js' %}"></script>
<script src="{% static 'js/counter.js' %}"></script>
<script src="{% static 'js/custom.js' %}"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
pip

View File

@ -0,0 +1,27 @@
Copyright (c) Django Software Foundation and individual contributors.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Django nor the names of its contributors may be used
to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,288 @@
Django is licensed under the three-clause BSD license; see the file
LICENSE for details.
Django includes code from the Python standard library, which is licensed under
the Python license, a permissive open source license. The copyright and license
is included below for compliance with Python's terms.
----------------------------------------------------------------------
Copyright (c) 2001-present Python Software Foundation; All Rights Reserved
A. HISTORY OF THE SOFTWARE
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
as a successor of a language called ABC. Guido remains Python's
principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for
National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
in Reston, Virginia where he released several versions of the
software.
In May 2000, Guido and the Python core development team moved to
BeOpen.com to form the BeOpen PythonLabs team. In October of the same
year, the PythonLabs team moved to Digital Creations, which became
Zope Corporation. In 2001, the Python Software Foundation (PSF, see
https://www.python.org/psf/) was formed, a non-profit organization
created specifically to own Python-related Intellectual Property.
Zope Corporation was a sponsoring member of the PSF.
All Python releases are Open Source (see https://opensource.org for
the Open Source Definition). Historically, most, but not all, Python
releases have also been GPL-compatible; the table below summarizes
the various releases.
Release Derived Year Owner GPL-
from compatible? (1)
0.9.0 thru 1.2 1991-1995 CWI yes
1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
1.6 1.5.2 2000 CNRI no
2.0 1.6 2000 BeOpen.com no
1.6.1 1.6 2001 CNRI yes (2)
2.1 2.0+1.6.1 2001 PSF no
2.0.1 2.0+1.6.1 2001 PSF yes
2.1.1 2.1+2.0.1 2001 PSF yes
2.1.2 2.1.1 2002 PSF yes
2.1.3 2.1.2 2002 PSF yes
2.2 and above 2.1.1 2001-now PSF yes
Footnotes:
(1) GPL-compatible doesn't mean that we're distributing Python under
the GPL. All Python licenses, unlike the GPL, let you distribute
a modified version without making your changes open source. The
GPL-compatible licenses make it possible to combine Python with
other software that is released under the GPL; the others don't.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
because its license has a choice of law clause. According to
CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
is "not incompatible" with the GPL.
Thanks to the many outside volunteers who have worked under Guido's
direction to make these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
===============================================================
Python software and documentation are licensed under the
Python Software Foundation License Version 2.
Starting with Python 3.8.6, examples, recipes, and other code in
the documentation are dual licensed under the PSF License Version 2
and the Zero-Clause BSD license.
Some software incorporated into Python is under different licenses.
The licenses are listed with code falling under that license.
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001-2024 Python Software Foundation; All Rights Reserved"
are retained in Python alone or in any derivative version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
-------------------------------------------
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
Individual or Organization ("Licensee") accessing and otherwise using
this software in source or binary form and its associated
documentation ("the Software").
2. Subject to the terms and conditions of this BeOpen Python License
Agreement, BeOpen hereby grants Licensee a non-exclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform
and/or display publicly, prepare derivative works, distribute, and
otherwise use the Software alone or in any derivative version,
provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an "AS IS"
basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all
respects by the law of the State of California, excluding conflict of
law provisions. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture
between BeOpen and Licensee. This License Agreement does not grant
permission to use BeOpen trademarks or trade names in a trademark
sense to endorse or promote products or services of Licensee, or any
third party. As an exception, the "BeOpen Python" logos available at
http://www.pythonlabs.com/logos.html may be used according to the
permissions granted on that web page.
7. By copying, installing or otherwise using the software, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
---------------------------------------
1. This LICENSE AGREEMENT is between the Corporation for National
Research Initiatives, having an office at 1895 Preston White Drive,
Reston, VA 20191 ("CNRI"), and the Individual or Organization
("Licensee") accessing and otherwise using Python 1.6.1 software in
source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python 1.6.1
alone or in any derivative version, provided, however, that CNRI's
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
1995-2001 Corporation for National Research Initiatives; All Rights
Reserved" are retained in Python 1.6.1 alone or in any derivative
version prepared by Licensee. Alternately, in lieu of CNRI's License
Agreement, Licensee may substitute the following text (omitting the
quotes): "Python 1.6.1 is made available subject to the terms and
conditions in CNRI's License Agreement. This Agreement together with
Python 1.6.1 may be located on the internet using the following
unique, persistent identifier (known as a handle): 1895.22/1013. This
Agreement may also be obtained from a proxy server on the internet
using the following URL: http://hdl.handle.net/1895.22/1013".
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python 1.6.1 or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. This License Agreement shall be governed by the federal
intellectual property law of the United States, including without
limitation the federal copyright law, and, to the extent such
U.S. federal law does not apply, by the law of the Commonwealth of
Virginia, excluding Virginia's conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based
on Python 1.6.1 that incorporate non-separable material that was
previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License
Agreement only as to issues arising under or with respect to
Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
License Agreement shall be deemed to create any relationship of
agency, partnership, or joint venture between CNRI and Licensee. This
License Agreement does not grant permission to use CNRI trademarks or
trade name in a trademark sense to endorse or promote products or
services of Licensee, or any third party.
8. By clicking on the "ACCEPT" button where indicated, or by copying,
installing or otherwise using Python 1.6.1, Licensee agrees to be
bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
--------------------------------------------------
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
----------------------------------------------------------------------
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@ -0,0 +1,101 @@
Metadata-Version: 2.1
Name: Django
Version: 5.1.6
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Author-email: Django Software Foundation <foundation@djangoproject.com>
License: BSD-3-Clause
Project-URL: Homepage, https://www.djangoproject.com/
Project-URL: Documentation, https://docs.djangoproject.com/
Project-URL: Release notes, https://docs.djangoproject.com/en/stable/releases/
Project-URL: Funding, https://www.djangoproject.com/fundraising/
Project-URL: Source, https://github.com/django/django
Project-URL: Tracker, https://code.djangoproject.com/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: LICENSE.python
License-File: AUTHORS
Requires-Dist: asgiref<4,>=3.8.1
Requires-Dist: sqlparse>=0.3.1
Requires-Dist: tzdata; sys_platform == "win32"
Provides-Extra: argon2
Requires-Dist: argon2-cffi>=19.1.0; extra == "argon2"
Provides-Extra: bcrypt
Requires-Dist: bcrypt; extra == "bcrypt"
======
Django
======
Django is a high-level Python web framework that encourages rapid development
and clean, pragmatic design. Thanks for checking it out.
All documentation is in the "``docs``" directory and online at
https://docs.djangoproject.com/en/stable/. If you're just getting started,
here's how we recommend you read the docs:
* First, read ``docs/intro/install.txt`` for instructions on installing Django.
* Next, work through the tutorials in order (``docs/intro/tutorial01.txt``,
``docs/intro/tutorial02.txt``, etc.).
* If you want to set up an actual deployment server, read
``docs/howto/deployment/index.txt`` for instructions.
* You'll probably want to read through the topical guides (in ``docs/topics``)
next; from there you can jump to the HOWTOs (in ``docs/howto``) for specific
problems, and check out the reference (``docs/ref``) for gory details.
* See ``docs/README`` for instructions on building an HTML version of the docs.
Docs are updated rigorously. If you find any problems in the docs, or think
they should be clarified in any way, please take 30 seconds to fill out a
ticket here: https://code.djangoproject.com/newticket
To get more help:
* Join the ``#django`` channel on ``irc.libera.chat``. Lots of helpful people
hang out there. `Webchat is available <https://web.libera.chat/#django>`_.
* Join the django-users mailing list, or read the archives, at
https://groups.google.com/group/django-users.
* Join the `Django Discord community <https://chat.djangoproject.com>`_.
* Join the community on the `Django Forum <https://forum.djangoproject.com/>`_.
To contribute to Django:
* Check out https://docs.djangoproject.com/en/dev/internals/contributing/ for
information about getting involved.
To run Django's test suite:
* Follow the instructions in the "Unit tests" section of
``docs/internals/contributing/writing-code/unit-tests.txt``, published online at
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/#running-the-unit-tests
Supporting the Development of Django
====================================
Django's development depends on your contributions.
If you depend on Django, remember to support the Django Software Foundation: https://www.djangoproject.com/fundraising/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.45.1)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -0,0 +1,2 @@
[console_scripts]
django-admin = django.core.management:execute_from_command_line

View File

@ -0,0 +1 @@
django

View File

@ -0,0 +1 @@
pip

View File

@ -0,0 +1,27 @@
Copyright (c) Django Software Foundation and individual contributors.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Django nor the names of its contributors may be used
to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,246 @@
Metadata-Version: 2.1
Name: asgiref
Version: 3.8.1
Summary: ASGI specs, helper code, and adapters
Home-page: https://github.com/django/asgiref/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Project-URL: Documentation, https://asgi.readthedocs.io/
Project-URL: Further Documentation, https://docs.djangoproject.com/en/stable/topics/async/#async-adapter-functions
Project-URL: Changelog, https://github.com/django/asgiref/blob/master/CHANGELOG.txt
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.8
License-File: LICENSE
Requires-Dist: typing-extensions >=4 ; python_version < "3.11"
Provides-Extra: tests
Requires-Dist: pytest ; extra == 'tests'
Requires-Dist: pytest-asyncio ; extra == 'tests'
Requires-Dist: mypy >=0.800 ; extra == 'tests'
asgiref
=======
.. image:: https://github.com/django/asgiref/actions/workflows/tests.yml/badge.svg
:target: https://github.com/django/asgiref/actions/workflows/tests.yml
.. image:: https://img.shields.io/pypi/v/asgiref.svg
:target: https://pypi.python.org/pypi/asgiref
ASGI is a standard for Python asynchronous web apps and servers to communicate
with each other, and positioned as an asynchronous successor to WSGI. You can
read more at https://asgi.readthedocs.io/en/latest/
This package includes ASGI base libraries, such as:
* Sync-to-async and async-to-sync function wrappers, ``asgiref.sync``
* Server base classes, ``asgiref.server``
* A WSGI-to-ASGI adapter, in ``asgiref.wsgi``
Function wrappers
-----------------
These allow you to wrap or decorate async or sync functions to call them from
the other style (so you can call async functions from a synchronous thread,
or vice-versa).
In particular:
* AsyncToSync lets a synchronous subthread stop and wait while the async
function is called on the main thread's event loop, and then control is
returned to the thread when the async function is finished.
* SyncToAsync lets async code call a synchronous function, which is run in
a threadpool and control returned to the async coroutine when the synchronous
function completes.
The idea is to make it easier to call synchronous APIs from async code and
asynchronous APIs from synchronous code so it's easier to transition code from
one style to the other. In the case of Channels, we wrap the (synchronous)
Django view system with SyncToAsync to allow it to run inside the (asynchronous)
ASGI server.
Note that exactly what threads things run in is very specific, and aimed to
keep maximum compatibility with old synchronous code. See
"Synchronous code & Threads" below for a full explanation. By default,
``sync_to_async`` will run all synchronous code in the program in the same
thread for safety reasons; you can disable this for more performance with
``@sync_to_async(thread_sensitive=False)``, but make sure that your code does
not rely on anything bound to threads (like database connections) when you do.
Threadlocal replacement
-----------------------
This is a drop-in replacement for ``threading.local`` that works with both
threads and asyncio Tasks. Even better, it will proxy values through from a
task-local context to a thread-local context when you use ``sync_to_async``
to run things in a threadpool, and vice-versa for ``async_to_sync``.
If you instead want true thread- and task-safety, you can set
``thread_critical`` on the Local object to ensure this instead.
Server base classes
-------------------
Includes a ``StatelessServer`` class which provides all the hard work of
writing a stateless server (as in, does not handle direct incoming sockets
but instead consumes external streams or sockets to work out what is happening).
An example of such a server would be a chatbot server that connects out to
a central chat server and provides a "connection scope" per user chatting to
it. There's only one actual connection, but the server has to separate things
into several scopes for easier writing of the code.
You can see an example of this being used in `frequensgi <https://github.com/andrewgodwin/frequensgi>`_.
WSGI-to-ASGI adapter
--------------------
Allows you to wrap a WSGI application so it appears as a valid ASGI application.
Simply wrap it around your WSGI application like so::
asgi_application = WsgiToAsgi(wsgi_application)
The WSGI application will be run in a synchronous threadpool, and the wrapped
ASGI application will be one that accepts ``http`` class messages.
Please note that not all extended features of WSGI may be supported (such as
file handles for incoming POST bodies).
Dependencies
------------
``asgiref`` requires Python 3.8 or higher.
Contributing
------------
Please refer to the
`main Channels contributing docs <https://github.com/django/channels/blob/master/CONTRIBUTING.rst>`_.
Testing
'''''''
To run tests, make sure you have installed the ``tests`` extra with the package::
cd asgiref/
pip install -e .[tests]
pytest
Building the documentation
''''''''''''''''''''''''''
The documentation uses `Sphinx <http://www.sphinx-doc.org>`_::
cd asgiref/docs/
pip install sphinx
To build the docs, you can use the default tools::
sphinx-build -b html . _build/html # or `make html`, if you've got make set up
cd _build/html
python -m http.server
...or you can use ``sphinx-autobuild`` to run a server and rebuild/reload
your documentation changes automatically::
pip install sphinx-autobuild
sphinx-autobuild . _build/html
Releasing
'''''''''
To release, first add details to CHANGELOG.txt and update the version number in ``asgiref/__init__.py``.
Then, build and push the packages::
python -m build
twine upload dist/*
rm -r build/ dist/
Implementation Details
----------------------
Synchronous code & threads
''''''''''''''''''''''''''
The ``asgiref.sync`` module provides two wrappers that let you go between
asynchronous and synchronous code at will, while taking care of the rough edges
for you.
Unfortunately, the rough edges are numerous, and the code has to work especially
hard to keep things in the same thread as much as possible. Notably, the
restrictions we are working with are:
* All synchronous code called through ``SyncToAsync`` and marked with
``thread_sensitive`` should run in the same thread as each other (and if the
outer layer of the program is synchronous, the main thread)
* If a thread already has a running async loop, ``AsyncToSync`` can't run things
on that loop if it's blocked on synchronous code that is above you in the
call stack.
The first compromise you get to might be that ``thread_sensitive`` code should
just run in the same thread and not spawn in a sub-thread, fulfilling the first
restriction, but that immediately runs you into the second restriction.
The only real solution is to essentially have a variant of ThreadPoolExecutor
that executes any ``thread_sensitive`` code on the outermost synchronous
thread - either the main thread, or a single spawned subthread.
This means you now have two basic states:
* If the outermost layer of your program is synchronous, then all async code
run through ``AsyncToSync`` will run in a per-call event loop in arbitrary
sub-threads, while all ``thread_sensitive`` code will run in the main thread.
* If the outermost layer of your program is asynchronous, then all async code
runs on the main thread's event loop, and all ``thread_sensitive`` synchronous
code will run in a single shared sub-thread.
Crucially, this means that in both cases there is a thread which is a shared
resource that all ``thread_sensitive`` code must run on, and there is a chance
that this thread is currently blocked on its own ``AsyncToSync`` call. Thus,
``AsyncToSync`` needs to act as an executor for thread code while it's blocking.
The ``CurrentThreadExecutor`` class provides this functionality; rather than
simply waiting on a Future, you can call its ``run_until_future`` method and
it will run submitted code until that Future is done. This means that code
inside the call can then run code on your thread.
Maintenance and Security
------------------------
To report security issues, please contact security@djangoproject.com. For GPG
signatures and more security process information, see
https://docs.djangoproject.com/en/dev/internals/security/.
To report bugs or request new features, please open a new GitHub issue.
This repository is part of the Channels project. For the shepherd and maintenance team, please see the
`main Channels readme <https://github.com/django/channels/blob/master/README.rst>`_.

View File

@ -0,0 +1,27 @@
asgiref-3.8.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
asgiref-3.8.1.dist-info/LICENSE,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552
asgiref-3.8.1.dist-info/METADATA,sha256=Cbu67XPstSkMxAdA4puvY-FAzN9OrT_AasH7IuK6DaM,9259
asgiref-3.8.1.dist-info/RECORD,,
asgiref-3.8.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
asgiref-3.8.1.dist-info/top_level.txt,sha256=bokQjCzwwERhdBiPdvYEZa4cHxT4NCeAffQNUqJ8ssg,8
asgiref/__init__.py,sha256=kZzGpxWKY4rWDQrrrlM7bN7YKRAjy17Wv4w__djvVYU,22
asgiref/__pycache__/__init__.cpython-312.pyc,,
asgiref/__pycache__/compatibility.cpython-312.pyc,,
asgiref/__pycache__/current_thread_executor.cpython-312.pyc,,
asgiref/__pycache__/local.cpython-312.pyc,,
asgiref/__pycache__/server.cpython-312.pyc,,
asgiref/__pycache__/sync.cpython-312.pyc,,
asgiref/__pycache__/testing.cpython-312.pyc,,
asgiref/__pycache__/timeout.cpython-312.pyc,,
asgiref/__pycache__/typing.cpython-312.pyc,,
asgiref/__pycache__/wsgi.cpython-312.pyc,,
asgiref/compatibility.py,sha256=DhY1SOpOvOw0Y1lSEjCqg-znRUQKecG3LTaV48MZi68,1606
asgiref/current_thread_executor.py,sha256=EuowbT0oL_P4Fq8KTXNUyEgk3-k4Yh4E8F_anEVdeBI,3977
asgiref/local.py,sha256=bNeER_QIfw2-PAPYanqAZq6yAAEJ-aio7e9o8Up-mgI,4808
asgiref/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
asgiref/server.py,sha256=egTQhZo1k4G0F7SSBQNp_VOekpGcjBJZU2kkCoiGC_M,6005
asgiref/sync.py,sha256=Why0YQV84vSp7IBBr-JDbxYCua-InLgBjuiCMlj9WgI,21444
asgiref/testing.py,sha256=QgZgXKrwdq5xzhZqynr1msWOiTS3Kpastj7wHU2ePRY,3481
asgiref/timeout.py,sha256=LtGL-xQpG8JHprdsEUCMErJ0kNWj4qwWZhEHJ3iKu4s,3627
asgiref/typing.py,sha256=rLF3y_9OgvlQMaDm8yMw8QTgsO9Mv9YAc6Cj8xjvWo0,6264
asgiref/wsgi.py,sha256=fxBLgUE_0PEVgcp13ticz6GHf3q-aKWcB5eFPhd6yxo,6753

View File

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.43.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@ -0,0 +1 @@
asgiref

View File

@ -0,0 +1 @@
__version__ = "3.8.1"

View File

@ -0,0 +1,48 @@
import inspect
from .sync import iscoroutinefunction
def is_double_callable(application):
"""
Tests to see if an application is a legacy-style (double-callable) application.
"""
# Look for a hint on the object first
if getattr(application, "_asgi_single_callable", False):
return False
if getattr(application, "_asgi_double_callable", False):
return True
# Uninstanted classes are double-callable
if inspect.isclass(application):
return True
# Instanted classes depend on their __call__
if hasattr(application, "__call__"):
# We only check to see if its __call__ is a coroutine function -
# if it's not, it still might be a coroutine function itself.
if iscoroutinefunction(application.__call__):
return False
# Non-classes we just check directly
return not iscoroutinefunction(application)
def double_to_single_callable(application):
"""
Transforms a double-callable ASGI application into a single-callable one.
"""
async def new_application(scope, receive, send):
instance = application(scope)
return await instance(receive, send)
return new_application
def guarantee_single_callable(application):
"""
Takes either a single- or double-callable application and always returns it
in single-callable style. Use this to add backwards compatibility for ASGI
2.0 applications to your server/test harness/etc.
"""
if is_double_callable(application):
application = double_to_single_callable(application)
return application

View File

@ -0,0 +1,115 @@
import queue
import sys
import threading
from concurrent.futures import Executor, Future
from typing import TYPE_CHECKING, Any, Callable, TypeVar, Union
if sys.version_info >= (3, 10):
from typing import ParamSpec
else:
from typing_extensions import ParamSpec
_T = TypeVar("_T")
_P = ParamSpec("_P")
_R = TypeVar("_R")
class _WorkItem:
"""
Represents an item needing to be run in the executor.
Copied from ThreadPoolExecutor (but it's private, so we're not going to rely on importing it)
"""
def __init__(
self,
future: "Future[_R]",
fn: Callable[_P, _R],
*args: _P.args,
**kwargs: _P.kwargs,
):
self.future = future
self.fn = fn
self.args = args
self.kwargs = kwargs
def run(self) -> None:
__traceback_hide__ = True # noqa: F841
if not self.future.set_running_or_notify_cancel():
return
try:
result = self.fn(*self.args, **self.kwargs)
except BaseException as exc:
self.future.set_exception(exc)
# Break a reference cycle with the exception 'exc'
self = None # type: ignore[assignment]
else:
self.future.set_result(result)
class CurrentThreadExecutor(Executor):
"""
An Executor that actually runs code in the thread it is instantiated in.
Passed to other threads running async code, so they can run sync code in
the thread they came from.
"""
def __init__(self) -> None:
self._work_thread = threading.current_thread()
self._work_queue: queue.Queue[Union[_WorkItem, "Future[Any]"]] = queue.Queue()
self._broken = False
def run_until_future(self, future: "Future[Any]") -> None:
"""
Runs the code in the work queue until a result is available from the future.
Should be run from the thread the executor is initialised in.
"""
# Check we're in the right thread
if threading.current_thread() != self._work_thread:
raise RuntimeError(
"You cannot run CurrentThreadExecutor from a different thread"
)
future.add_done_callback(self._work_queue.put)
# Keep getting and running work items until we get the future we're waiting for
# back via the future's done callback.
try:
while True:
# Get a work item and run it
work_item = self._work_queue.get()
if work_item is future:
return
assert isinstance(work_item, _WorkItem)
work_item.run()
del work_item
finally:
self._broken = True
def _submit(
self,
fn: Callable[_P, _R],
*args: _P.args,
**kwargs: _P.kwargs,
) -> "Future[_R]":
# Check they're not submitting from the same thread
if threading.current_thread() == self._work_thread:
raise RuntimeError(
"You cannot submit onto CurrentThreadExecutor from its own thread"
)
# Check they're not too late or the executor errored
if self._broken:
raise RuntimeError("CurrentThreadExecutor already quit or is broken")
# Add to work queue
f: "Future[_R]" = Future()
work_item = _WorkItem(f, fn, *args, **kwargs)
self._work_queue.put(work_item)
# Return the future
return f
# Python 3.9+ has a new signature for submit with a "/" after `fn`, to enforce
# it to be a positional argument. If we ignore[override] mypy on 3.9+ will be
# happy but 3.8 will say that the ignore comment is unused, even when
# defining them differently based on sys.version_info.
# We should be able to remove this when we drop support for 3.8.
if not TYPE_CHECKING:
def submit(self, fn, *args, **kwargs):
return self._submit(fn, *args, **kwargs)

Some files were not shown because too many files have changed in this diff Show More