members: automatically compute validity of good conduct certificate

individual-sender-address
Christian Merten 1 year ago
parent 9b66301da1
commit a225af5905
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -17,6 +17,7 @@ ECHO_PASSWORD_BIRTHDATE_FORMAT = '%d.%m.%Y'
# misc # misc
CONGRATULATE_MEMBERS_MAX = 10 CONGRATULATE_MEMBERS_MAX = 10
MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = 24
# finance # finance

@ -193,7 +193,7 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin):
{ {
'fields': [ 'fields': [
('good_conduct_certificate_presented_date', ('good_conduct_certificate_presented_date',
'good_conduct_certificate_presentation_needed'), 'good_conduct_certificate_valid'),
'has_key', 'has_free_ticket_gym'] 'has_key', 'has_free_ticket_gym']
} }
), ),
@ -203,7 +203,7 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin):
search_fields = ('prename', 'lastname', 'email') search_fields = ('prename', 'lastname', 'email')
list_filter = ('group', 'gets_newsletter', RegistrationFilter, 'active') list_filter = ('group', 'gets_newsletter', RegistrationFilter, 'active')
list_display_links = None list_display_links = None
readonly_fields = ['echoed'] readonly_fields = ['echoed', 'good_conduct_certificate_valid']
inlines = [EmergencyContactInline, TrainingOnMemberInline, PermissionOnMemberInline] inlines = [EmergencyContactInline, TrainingOnMemberInline, PermissionOnMemberInline]
#formfield_overrides = { #formfield_overrides = {
# ManyToManyField: {'widget': forms.CheckboxSelectMultiple}, # ManyToManyField: {'widget': forms.CheckboxSelectMultiple},

@ -279,6 +279,15 @@ class Member(Person):
else: else:
return "{0}, {1}".format(self.street, self.place) 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): def generate_key(self):
self.unsubscribe_key = uuid.uuid4().hex self.unsubscribe_key = uuid.uuid4().hex
self.unsubscribe_expire = timezone.now() + timezone.timedelta(days=1) self.unsubscribe_expire = timezone.now() + timezone.timedelta(days=1)

Loading…
Cancel
Save