Files
@ 1ddcb2e4badd
Branch filter:
Location: website/www/conservancy/apps/fundgoal/models.py - annotation
1ddcb2e4badd
1.4 KiB
text/x-python
Move fundraising goal end times into database.
4fd27245d6e4 4fd27245d6e4 d73018440a4d d73018440a4d d73018440a4d d73018440a4d d73018440a4d 1ddcb2e4badd 1ddcb2e4badd d73018440a4d 8b469cff1830 8b469cff1830 1ddcb2e4badd d73018440a4d d73018440a4d d73018440a4d d73018440a4d 027964192a65 2461bc19b17c 027964192a65 d73018440a4d d73018440a4d 621ace848827 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 | import random
from django.db import models
class FundraisingGoal(models.Model):
"""Conservancy fundraiser Goal"""
fundraiser_code_name = models.CharField(max_length=200, blank=False, unique=True)
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()
fundraiser_donation_count_disclose_threshold = models.IntegerField()
fundraiser_endtime = models.DateTimeField(null=True)
def __unicode__(self):
return self.fundraiser_code_name
def percentage_there(self):
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
|