Files
@ 5605243dfda6
Branch filter:
Location: website/conservancy/fundgoal/models.py - annotation
5605243dfda6
1.4 KiB
text/x-python
usethesource: Add some space between comment name/date and text
4fd27245d6e4 4fd27245d6e4 d73018440a4d d73018440a4d 60010999d25f d73018440a4d d73018440a4d d73018440a4d 1ddcb2e4badd 1ddcb2e4badd d73018440a4d 8b469cff1830 8b469cff1830 1ddcb2e4badd d73018440a4d adf2229720fc d73018440a4d d73018440a4d 027964192a65 60010999d25f 60010999d25f 9e39d7eadced d73018440a4d 621ace848827 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 4fd27245d6e4 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 621ace848827 adf2229720fc 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 __str__(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 __str__(self):
return self.provider_name
|