fix(members): various bugs

pull/174/head
Christian Merten 4 months ago
parent a75208b41c
commit 69062f3e58
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -1267,8 +1267,9 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin):
sjr_application.short_description = _('Generate SJR application')
def finance_overview(self, request, memberlist):
if not memberlist.statement:
if not hasattr(memberlist, 'statement'):
messages.error(request, _("No statement found. Please add a statement and then retry."))
return HttpResponseRedirect(reverse('admin:%s_%s_change' % (self.opts.app_label, self.opts.model_name), args=(memberlist.pk,)))
if "apply" in request.POST:
if not memberlist.statement.allowance_to_valid:
messages.error(request,
@ -1329,8 +1330,6 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin):
def action_view(self, request, object_id):
if "sjr_application" in request.POST:
return self.sjr_application(request, Freizeit.objects.get(pk=object_id))
if "seminar_vbk" in request.POST:
return self.seminar_vbk(request, Freizeit.objects.get(pk=object_id))
if "seminar_report" in request.POST:
return self.seminar_report(request, Freizeit.objects.get(pk=object_id))
if "notes_list" in request.POST:

@ -1058,9 +1058,8 @@ class MemberWaitingList(Person):
@property
def waiting_confirmation_needed(self):
"""Returns if person should be asked to confirm waiting status."""
# TODO: Throws `NameError` (has skipped test).
return wait_confirmation_key is None \
and last_wait_confirmation < timezone.now() -\
return not self.wait_confirmation_key \
and self.last_wait_confirmation < timezone.now() -\
timezone.timedelta(days=settings.WAITING_CONFIRMATION_FREQUENCY)
def waiting_confirmed(self):
@ -1123,11 +1122,9 @@ class MemberWaitingList(Person):
return self.wait_confirmation_key
def may_register(self, key):
# TODO: Throws a `TypeError` (has skipped test).
print("may_register", key)
try:
invitation = InvitationToGroup.objects.get(key=key)
return self.pk == invitation.waiter.pk and timezone.now() < invitation.date + timezone.timedelta(days=30)
return self.pk == invitation.waiter.pk and timezone.now().date() < invitation.date + timezone.timedelta(days=30)
except InvitationToGroup.DoesNotExist:
return False
@ -1197,15 +1194,13 @@ class NewMemberOnList(CommonModel):
@property
def skills(self):
# TODO: Throws a `NameError` (has skipped test).
activities = [a.name for a in memberlist.activity.all()]
activities = [a.name for a in self.memberlist.activity.all()]
return {k: v for k, v in self.member.get_skills().items() if k in activities}
@property
def qualities_tex(self):
# TODO: Throws a `NameError` (has skipped test).
qualities = []
for activity, value in self.skills:
for activity, value in self.skills.items():
qualities.append("\\textit{%s:} %s" % (activity, value))
return ", ".join(qualities)

@ -1159,10 +1159,6 @@ class FreizeitAdminTestCase(AdminTestCase, PDFActionMixin):
})
self.assertEqual(response.status_code, HTTPStatus.OK)
@skip('Throws `AttributeError`: `Freizeit.seminar_vbk` does not exist.')
def test_seminar_vbk(self):
self._test_pdf('seminar_vbk', self.ex.pk)
def test_crisis_intervention_list_post(self):
self._test_pdf('crisis_intervention_list', self.ex.pk)
self._test_pdf('crisis_intervention_list', self.ex.pk, username='standard', invalid=True)
@ -1174,12 +1170,11 @@ class FreizeitAdminTestCase(AdminTestCase, PDFActionMixin):
def test_wrong_action_freizeit(self):
return self._test_pdf('asdf', self.ex.pk, invalid=True)
@skip('Currently throws a `RelatedObjectDoesNotExist` error.')
def test_finance_overview_no_statement_post(self):
url = reverse('admin:members_freizeit_action', args=(self.ex.pk,))
c = self._login('superuser')
# no statement yields error
response = c.post(url, data={'finance_overview': ''})
# no statement yields redirect
response = c.post(url, data={'finance_overview': ''}, follow=True)
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, _("No statement found. Please add a statement and then retry."))
@ -1720,7 +1715,6 @@ class RegistrationFromWaiterViewTestCase(BasicMemberTestCase):
))
self.assertEqual(response.status_code, HTTPStatus.OK)
@skip("This currently throws an 'AttributeError'.")
def test_register_post_no_save(self):
url = reverse('members:register')
response = self.client.post(url, data=dict(
@ -1840,16 +1834,14 @@ class MemberWaitingListTestCase(BasicMemberTestCase):
def test_latest_group_invitation(self):
self.assertGreater(len(self.waiter.latest_group_invitation()), 1)
@skip("This currently throws a 'TypeError'.")
def test_may_register(self):
self.assertTrue(self.waiter.may_register(self.invitation.key))
def test_may_register_invalid(self):
self.assertFalse(self.waiter.may_register('foobar'))
@skip("This currently throws a 'NameError'.")
def test_waiting_confirmation_needed(self):
self.assertFalse(self.waiter.waiting_confirmation_needed())
self.assertFalse(self.waiter.waiting_confirmation_needed)
def test_confirm_waiting_invalid(self):
self.assertEqual(self.waiter.confirm_waiting('foobar'),
@ -2330,11 +2322,9 @@ class NewMemberOnListTestCase(BasicMemberTestCase):
self.ex.save()
self.mol = NewMemberOnList.objects.create(memberlist=self.ex, member=self.fritz)
@skip("This currently throws a 'NameError'.")
def test_skills(self):
self.assertGreater(len(self.mol.skills), 0)
@skip("This currently throws a 'NameError'.")
def test_qualities_tex(self):
self.assertGreater(len(self.mol.qualities_tex), 0)

@ -299,7 +299,10 @@ def register(request):
else:
return render_register(request, group, form, emergency_contacts_formset, waiter_key=waiter_key)
# we are not saving yet
return render_register(request, group, form=None, pwd=pwd.password, waiter_key=waiter_key)
if pwd:
return render_register(request, group, form=None, pwd=pwd.password, waiter_key=waiter_key)
else:
return render_register(request, group, form=None, waiter_key=waiter_key)
def render_download_registration_form(request, member):

Loading…
Cancel
Save