Files @ 70b8aa07aee4
Branch filter:

Location: website/conservancy/fundgoal/models.py

bsturmfels
Simplify settings and move some standard settings into settings.py

These were previously in djangocommonsettings.py, but don't ever vary between
development and production environments.
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