Files @ 46c50ec0b192
Branch filter:

Location: website/www/conservancy/apps/fundgoal/models.py

Bradley M. Kuhn
Copyleft Compliance: Minor rewrite of strategy & firmware liberation

This rewrite should improve the stand-alone nature of these documents
and allow for better integration with other summary text and
announcements on the website.

Note that they have now drifted heavily from the original formulation
of the items as grant proposals.
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()

    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