def test_default_performance_func(self): self.assertAlmostEqual(performance_calculator_invite_optional( self.MockInvitationStats(5, 5, 1)), 0.2) self.assertAlmostEqual(performance_calculator_invite_optional( self.MockInvitationStats(20, 5, 1)), 0.2) self.assertAlmostEqual(performance_calculator_invite_optional( self.MockInvitationStats(0, 5, 1)), 0.2) self.assertAlmostEqual(performance_calculator_invite_optional( self.MockInvitationStats(0, 10, 10)), 1.0) self.assertAlmostEqual(performance_calculator_invite_optional( self.MockInvitationStats(10, 0, 0)), 0.0)
def performance_calculator_invite_only(invitation_stats): """Calculate a performance score between ``0.0`` and ``1.0``. """ if app_settings.INVITE_ONLY: total = invitation_stats.available + invitation_stats.sent try: send_ratio = float(invitation_stats.sent) / total except ZeroDivisionError: send_ratio = 0.0 accept_ratio = performance_calculator_invite_optional(invitation_stats) return min((send_ratio + accept_ratio) * 0.6, 1.0)