You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

78 lines
2.3 KiB

from django.db import models
from django.utils import timezone
from django.utils.functional import cached_property
from dateutil.relativedelta import relativedelta
class Membership(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now=True)
renewed_at = models.DateTimeField(default=timezone.now)
self_identification = models.CharField(max_length=255, null=True, blank=True)
gender = models.CharField(max_length=255, null=True, blank=True)
involvement = models.CharField(max_length=255, null=True, blank=True)
member = models.ForeignKey(
'registration.Member',
on_delete=models.CASCADE,
related_name='memberships',
blank=True,
null=True
)
payment = models.OneToOneField(
'Payment',
on_delete=models.CASCADE,
related_name='membership',
blank=False,
null=True
)
@cached_property
def expires_at(self):
return self.renewed_at + relativedelta(years=1)
class Payment(models.Model):
payment_choices = (
('NONE', 'None'),
('CASH', 'Cash'),
('CHEQUE', 'Cheque'),
('VOLUNTEERING', 'Volunteering'),
('SQUARE', 'Square'),
('PAYPAL', 'PayPal'),
('YOUTH', 'Youth'),
('UNKNOWN', 'Unknown')
)
type = models.CharField(max_length=12, choices=payment_choices, default='NONE')
created_at = models.DateTimeField(auto_now_add=True)
class Visit(models.Model):
VOLUNTEER = 'VOLUNTEER'
FIX = 'FIX'
BUILD = 'BUILD'
WORKSHOP = 'WORKSHOP'
VISIT = 'VISIT'
DONATE = 'DONATE'
STAFF = 'STAFF'
visit_choices = (
(VOLUNTEER, 'volunteer'),
(FIX, 'fix bike'),
(BUILD, 'build bike'),
(WORKSHOP, 'workshop'),
(VISIT, 'visit'),
(DONATE, 'donate'),
(STAFF, 'staff'),
)
member = models.ForeignKey(
'registration.Member',
on_delete=models.CASCADE
)
created_at = models.DateTimeField(default=timezone.now)
purpose = models.CharField(max_length=50, choices=visit_choices)
def __str__(self):
return '<Visit purpose: {purpose} created_at: {created_at}>'.format(purpose=self.purpose,
created_at=self.created_at.isoformat())