diff --git a/jdav_web/jdav_web/settings/local.py b/jdav_web/jdav_web/settings/local.py index 8cc0c79..6aa0129 100644 --- a/jdav_web/jdav_web/settings/local.py +++ b/jdav_web/jdav_web/settings/local.py @@ -17,6 +17,7 @@ ECHO_PASSWORD_BIRTHDATE_FORMAT = '%d.%m.%Y' # misc CONGRATULATE_MEMBERS_MAX = 10 +MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = 24 # finance diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index fce409f..20ca616 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -193,7 +193,7 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin): { 'fields': [ ('good_conduct_certificate_presented_date', - 'good_conduct_certificate_presentation_needed'), + 'good_conduct_certificate_valid'), 'has_key', 'has_free_ticket_gym'] } ), @@ -203,7 +203,7 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin): search_fields = ('prename', 'lastname', 'email') list_filter = ('group', 'gets_newsletter', RegistrationFilter, 'active') list_display_links = None - readonly_fields = ['echoed'] + readonly_fields = ['echoed', 'good_conduct_certificate_valid'] inlines = [EmergencyContactInline, TrainingOnMemberInline, PermissionOnMemberInline] #formfield_overrides = { # ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 48077ee..e971cc9 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -279,6 +279,15 @@ class Member(Person): else: return "{0}, {1}".format(self.street, self.place) + def good_conduct_certificate_valid(self): + """Returns if a good conduct certificate is still valid, depending on the last presentation.""" + if not self.good_conduct_certificate_presented_date: + return False + delta = datetime.now().date() - self.good_conduct_certificate_presented_date + return delta.days // 30 <= settings.MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS + good_conduct_certificate_valid.boolean = True + good_conduct_certificate_valid.short_description = _('Good conduct certificate valid') + def generate_key(self): self.unsubscribe_key = uuid.uuid4().hex self.unsubscribe_expire = timezone.now() + timezone.timedelta(days=1)