Skip to content

Instantly share code, notes, and snippets.

@paulwababu
Created March 7, 2022 16:45
Show Gist options
  • Save paulwababu/73c1055bb155489ea5510dab474e44e4 to your computer and use it in GitHub Desktop.
Save paulwababu/73c1055bb155489ea5510dab474e44e4 to your computer and use it in GitHub Desktop.
Church Models
import os, random
from django.db import models
from django.utils.timezone import now
from django.db import models
from django.db.models import Model
from django.db.models import Sum
from django.forms.fields import DateField
from django.contrib.admin.widgets import AdminDateWidget
from django.db import models
#
from django_tenants.models import TenantMixin, DomainMixin
def filename_ext(filepath):
file_base = os.path.basename(filepath)
filename, ext = os.path.splitext(file_base)
return filename, ext
def upload_image_path(instance, filename):
new_filename = random.randint(1, 9498594795)
name, ext = filename_ext(filename)
final_filename = "{new_filename}{ext}".format(new_filename=new_filename, ext=ext)
return "pictures/{new_filename}/{final_filename}".format(new_filename=new_filename, final_filename=final_filename)
class Ministry(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
leader = models.CharField(max_length=255)
def __str__(self):
return self.name
class Shepherd(models.Model):
name = models.CharField(max_length=255)
age = models.PositiveIntegerField()
def __str__(self):
return self.name
class MemberManager(models.Manager):
def get_by_id(self, id):
qs = self.get_queryset().filter(id=id)
if qs.count() == 1:
return qs.first()
return None
def active(self):
qs = self.get_queryset().filter(active=True)
return qs
def deleted(self):
return self.get_queryset().filter(active=False)
def new_believer_school(self):
# return self.get_queryset().filter(new_believer_school=True)
return self.active().filter(new_believer_school=True)
def pays_tithe(self):
# return self.get_queryset().filter(pays_tithe=True)
return self.active().filter(pays_tithe=True)
def working(self):
# return self.get_queryset().filter(working=True)
return self.active().filter(working=True)
def schooling(self):
# return self.get_queryset().filter(schooling=True)
return self.active().filter(schooling=True)
class Member(models.Model):
name = models.CharField(max_length=255)
active = models.BooleanField()
shepherd = models.ForeignKey(Shepherd, on_delete=models.CASCADE, null=True, blank=True)
ministry = models.ForeignKey(Ministry, on_delete=models.CASCADE, null=True, blank=True)
telephone = models.PositiveIntegerField(null=True, blank=True)
location = models.CharField(max_length=255)
fathers_name = models.CharField(max_length=255, null=True, blank=True)
mothers_name = models.CharField(max_length=255, null=True, blank=True)
guardians_name = models.CharField(max_length=255, null=True, blank=True)
new_believer_school = models.BooleanField()
pays_tithe = models.BooleanField()
working = models.BooleanField()
schooling = models.BooleanField()
picture = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
objects = MemberManager()
def __str__(self):
return self.name
class TestDb(models.Model):
field = models.CharField(max_length=120)
class Church(TenantMixin):
name = models.CharField(max_length=100)
class Domain(DomainMixin):
pass
class StaffDetails(models.Model):
image = models.ImageField(upload_to="media", default="Photo")
FistName= models.CharField(max_length=150,blank=False)
SecondName = models.CharField(max_length=150,blank=False)
Salary = models.IntegerField(default=0)
Role = models.CharField(max_length=20, default="MALE", blank=False)
Duties = models.CharField(max_length=1000, blank=False)
choices=(
('Male','Male'),
('Female', 'Female'))
Sex = models.CharField(max_length=7, default="MALE", blank=False, choices=choices)
Contact = models.CharField(max_length=100, default="Tel or Email")
def __str__(self):
return self.FistName + ' ' + self.SecondName
class Salary(models.Model):
months = (
('January','January'),('February','February'),('March', 'March'),('April', 'April')
,('May','May'),('June', 'June'),('July', 'July'),('August','August'),
('September', 'September'),('October', 'October'),('November','November'),('December', 'December')
)
Date = models.DateField()
Name = models.CharField(max_length=100, blank=False)
Month = models.CharField(max_length=12,choices=months, blank=False)
Amount = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return self.Name
class Sundry(Model):
Date = models.DateField()
PaymentMadeTo = models.CharField(max_length=100, blank=False)
ReasonForPayment = models.CharField(max_length=250)
Amount = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return self.PaymentMadeTo
class Offerings(Model):
Date = models.DateField()
DayOfTheWeek = models.CharField(max_length=100, blank=False)
TotalOffering = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return self.DayOfTheWeek
class Tithes(Model):
Date = models.DateField()
DayOfTheWeek = models.CharField(max_length=100, blank=False)
TitheMadeBy = models.CharField(max_length=100, blank=False)
Amount = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return self.TitheMadeBy
class Pledges(Model):
Date = models.DateField()
DayOfTheWeek = models.CharField(max_length=100, blank=False)
PledgeMadeBy = models.CharField(max_length=100, blank=False)
Reason = models.CharField(max_length=100, null=True)
Amount = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return self.PledgeMadeBy
class Spend(models.Model):
reason=(
('Mechanic','Car Repairing'),('WaterBills','Water Bills'),('Electricity','Electricity Bills'),('URA','Paying Revenue')
)
Date = models.DateField()
PaymentMadeTo = models.CharField(max_length=100,blank=False)
ReasonForPayment = models.CharField(max_length=100, choices=reason)
Amount = models.IntegerField(default=0)
AmountInWords = models.CharField(max_length=500, blank=False)
def __str__(self):
return 'Name:{0}, Reason:{1}, Amount: {2}'.format(self.PaymentMadeTo, self.ReasonForPayment, self.Amount)
##########################################
#REPORT ARCHIVING MODELS AFTER SUBMISSION #
##########################################
class ExpensesReportArchive(models.Model):
Date = models.DateField()
Name = models.CharField(max_length=100, default='Name', null=True)
Amount = models.FloatField(default=0.0, null=True)
Reason = models.CharField(max_length=100,null=True)
month = models.CharField(max_length=100,null=True)
year = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Reason:{2} Amount:{0}'.format(self.Name,self.Reason, self.Amount)
class SundryReportArchive(models.Model):
Date = models.DateField()
Name = models.CharField(max_length=100, default='Name', null=True)
Amount = models.FloatField(default=0.0, null=True)
Reason = models.CharField(max_length=100,null=True)
month = models.CharField(max_length=100,null=True)
year = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Reason:{2} Amount:{0}'.format(self.Name,self.Reason, self.Amount)
class SalaryReportArchive(models.Model):
Date = models.DateField()
Staff = models.CharField( max_length=100,null=True)
Month = models.CharField(max_length=100,null=True)
Amount = models.IntegerField(default=0)
archivedmonth = models.CharField(max_length=100,null=True)
archivedyear = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Amount:{0}'.format(self.Staff, self.Amount)
class OfferingsReportArchive(models.Model):
Date = models.DateField(())
Day = models.CharField( max_length=100,null=True)
Amount = models.IntegerField(default=0)
archivedmonth = models.CharField(max_length=100,null=True)
archivedyear = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Amount:{0}'.format(self.Day, self.Amount)
class TithesReportArchive(models.Model):
Date = models.DateField()
Name = models.CharField( max_length=100,null=True)
Day = models.CharField(max_length=100, null=True)
Amount = models.IntegerField(default=0)
archivedmonth = models.CharField(max_length=100,null=True)
archivedyear = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Amount:{0}'.format(self.Name, self.Amount)
class PledgesReportArchive(models.Model):
Date = models.DateField()
Name = models.CharField( max_length=100,null=True)
Day = models.CharField(max_length=100,null=True)
Reason = models.CharField(max_length=100, null=True)
Amount = models.IntegerField(default=0)
archivedmonth = models.CharField(max_length=100,null=True)
archivedyear = models.CharField(max_length=100,null=True)
def __str__(self):
return 'Name: {1} Amount:{0}'.format(self.Name, self.Amount)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment