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
CONGRATULATE_MEMBERS_MAX = 10
MAX_AGE_GOOD_CONDUCT_CERTIFICATE_MONTHS = 24
# finance

@ -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},

@ -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)

Loading…
Cancel
Save