Files
fet2020/fet2020/members/models.py
Moses e94d19602b Added filters and search fields for members, jobs
Member are searchable by name, nickname, mailaccount
Jobs are searchable by name
Menbers can be filtered by Active,Pension,All
NOT WORKING YET: Inline Widget JobMember filter for inactive jobs
2020-06-09 14:00:29 +02:00

72 lines
2.0 KiB
Python

from django.db import models
from django.utils.translation import gettext_lazy as _
import uuid
class MemberManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(role='A')
class PensionManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(role='P')
class Member(models.Model):
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=128)
nickname = models.CharField(max_length=128)
mailaccount = models.CharField(max_length=128)
role = models.CharField(max_length=1, choices=[('A', _('Active')), ('P', _('Pension'))], default='A')
body = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
#birthday
#handy phone
# TimeStamps
date_modified = models.DateTimeField(auto_now=True)
date_created = models.DateTimeField(auto_now_add=True)
has_jobs = models.ManyToManyField(
'Job',
through='JobMember',
through_fields=('member', 'job')
)
# Managers
all_members = models.Manager()
active_member = MemberManager()
pension_member = PensionManager()
def __str__(self):
return self.name
class Job(models.Model):
name = models.CharField(max_length=128)
body = models.TextField(null=True, blank=True)
image = models.ImageField(null=True, blank=True)
has_members = models.ManyToManyField(
'Member',
through='JobMember',
through_fields=('job', 'member')
)
def __str__(self):
return self.name
class JobMember(models.Model):
member = models.ForeignKey(Member, on_delete=models.CASCADE)
job = models.ForeignKey(Job, on_delete=models.CASCADE)
job_start = models.DateField('Job Start')
job_end = models.DateField('Job Ende', null=True, blank=True)
class Meta:
unique_together = [['member', 'job']]
jobmember = models.Manager()