diff --git a/www/conservancy/apps/fundgoal/models.py b/www/conservancy/apps/fundgoal/models.py index 704b75286f37e35e10eee9170b8ad075425fb3bb..2bb5d6d71694b9352555aec99d15692d49ffe34e 100644 --- a/www/conservancy/apps/fundgoal/models.py +++ b/www/conservancy/apps/fundgoal/models.py @@ -1,5 +1,6 @@ +import random + from django.db import models -from decimal import * class FundraisingGoal(models.Model): """Conservancy fundraiser Goal""" @@ -14,7 +15,30 @@ class FundraisingGoal(models.Model): return self.fundraiser_code_name def percentage_there(self): - return (self.fundraiser_so_far_amount / self.fundraiser_goal_amount ) * Decimal('100.00') + return (self.fundraiser_so_far_amount / self.fundraiser_goal_amount ) * 100 class Meta: ordering = ('fundraiser_code_name',) + + def providers(self): + return GoalProvider.objects.filter(fundraising_goal=self) + + def random_providers(self, k=None): + providers = self.providers() + if not providers.exists(): + return None + elif k is None: + return random.choice(providers) + else: + return random.sample(providers, k) + + +class GoalProvider(models.Model): + fundraising_goal = models.ForeignKey( + 'FundraisingGoal', + on_delete=models.CASCADE, + ) + provider_name = models.CharField(max_length=512) + + def __unicode__(self): + return self.provider_name