From 0a6f4e5f9e11c31594908bfc56262674d1962e00 Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Mon, 13 Apr 2020 17:11:59 +0200
Subject: [PATCH] Add member information fields. Advances #86

---
 aleksis/apps/ticdesk_org/model_extensions.py | 43 +++++++++++++++++++-
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/aleksis/apps/ticdesk_org/model_extensions.py b/aleksis/apps/ticdesk_org/model_extensions.py
index 21aec7a..b1dd466 100644
--- a/aleksis/apps/ticdesk_org/model_extensions.py
+++ b/aleksis/apps/ticdesk_org/model_extensions.py
@@ -1,7 +1,46 @@
-from jsonstore import CharField
+from django.utils import timezone
+from django.utils.translation import gettext_lazy as _
+from jsonstore import CharField, IntegerField, DateField
 
-from aleksis.core.models import Person
+from aleksis.core.models import Person, Group
 
+
+@Person.property
+def is_member_of(self, group):
+    """ Check if person is member of a given group """
+
+    return group in self.groups
+
+
+@Person.property
+def is_member(self):
+    """ Check if person is still a member """
+
+    now = timezone.datetime.now().date()
+    members = Groups.objects.get(short_name="members")
+    return (
+        self.is_member_of(members)
+        and (self.member_since and self.member_since <= now)
+        and (not self.member_until or self.member_until >= now)
+    )
+
+
+# Field for school
 Person.field(school=CharField(verbose_name=_("Name of school")))
 Person.field(school_class=CharField(verbose_name=_("School class")))
 Person.field(school_place=CharField(verbose_name=_("Place of the school")))
+
+# Member information
+Person.field(
+    employee_number=IntegerField(
+        verbose_name=_("Employee number"), blank=True, null=True
+    )
+)
+Person.field(
+    member_since=DateField(verbose_name=_("Member since"), blank=True, null=True)
+)
+Person.field(
+    member_until=DateField(verbose_name=_("Member until"), blank=True, null=True)
+)
+Person.field(iban=CharField(verbose_name=_("IBAN"), blank=True, null=True))
+Person.field(bic=CharField(verbose_name=_("BIC"), blank=True, null=True))
-- 
GitLab