diff --git a/conservancy/fundgoal/models.py b/conservancy/fundgoal/models.py index 64729cd581a9af0e1281862e76981ed5cce7b57f..06c3ee93d21687ac1411f700602dab83d3221d2e 100644 --- a/conservancy/fundgoal/models.py +++ b/conservancy/fundgoal/models.py @@ -1,3 +1,5 @@ +import datetime +import math import random from django.db import models @@ -10,6 +12,9 @@ class FundraisingGoal(models.Model): fundraiser_goal_amount = models.DecimalField(max_digits=10, decimal_places=2) fundraiser_so_far_amount = models.DecimalField(max_digits=10, decimal_places=2) fundraiser_donation_count = models.IntegerField() + # The number of new Sustainers that can be double-matched this fundraiser. + # (No, this name makes no sense. We're repurposing an existing model field + # for this new reason.) fundraiser_donation_count_disclose_threshold = models.IntegerField() fundraiser_endtime = models.DateTimeField(null=True) @@ -34,6 +39,20 @@ class FundraisingGoal(models.Model): else: return random.sample(providers, k) + def days_remaining(self): + now = datetime.datetime.now() + return (self.fundraiser_endtime - now).days + + def hours_remaining(self): + now = datetime.datetime.now() + return int(math.ceil((self.fundraiser_endtime - now).seconds / 3600)) + + def match_remaining(self): + return self.fundraiser_goal_amount - self.fundraiser_so_far_amount + + def match_exceeded_by(self): + return self.fundraiser_so_far_amount - self.fundraiser_goal_amount + class GoalProvider(models.Model): fundraising_goal = models.ForeignKey(