Compare commits
No commits in common. "devel" and "main" have entirely different histories.
|
@ -1,99 +1,3 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
from django.contrib.postgres.fields import ArrayField
|
|
||||||
|
|
||||||
from statistics import mean
|
|
||||||
|
|
||||||
class Person(models.Model):
|
|
||||||
# generic stuff
|
|
||||||
first_name = models.CharField(max_length=256)
|
|
||||||
last_name = models.CharField(max_length=256)
|
|
||||||
|
|
||||||
# personal information
|
|
||||||
phone_number = models.CharField(max_length=256)
|
|
||||||
address = models.CharField(max_length=256)
|
|
||||||
city = models.CharField(max_length=256)
|
|
||||||
state = models.CharField(max_length=256)
|
|
||||||
|
|
||||||
class GeneralAssembly(models.Model):
|
|
||||||
class Color(models.TextChoices):
|
|
||||||
RED = 'RED', _('Red')
|
|
||||||
WHITE = 'WHI', _('White')
|
|
||||||
BLUE = 'BLU', _('Blue')
|
|
||||||
NONE = 'NON', _('None')
|
|
||||||
|
|
||||||
color = models.CharField(
|
|
||||||
max_length=3,
|
|
||||||
choices=Color.choices,
|
|
||||||
default=Color.NONE,
|
|
||||||
)
|
|
||||||
docket = models.ArrayField(BillTeam)
|
|
||||||
|
|
||||||
class Committee(models.Model):
|
|
||||||
number = models.IntegerField(default=1)
|
|
||||||
docket = models.ArrayField(BillTeam)
|
|
||||||
general_assembly = models.ForeignKey(GeneralAssembly)
|
|
||||||
|
|
||||||
class RollCallVoteResult(models.Model):
|
|
||||||
all_for = models.IntegerField()
|
|
||||||
all_against = models.IntegerField()
|
|
||||||
all_abstaining = models.IntegerField()
|
|
||||||
|
|
||||||
class RankingVoteResult(models.Model):
|
|
||||||
def average(self):
|
|
||||||
return mean(
|
|
||||||
[vote.average for vote in self.rankingvotes_set.all()]
|
|
||||||
)
|
|
||||||
|
|
||||||
class RankingVotes(models.Model):
|
|
||||||
field1 = models.IntegerField()
|
|
||||||
field2 = models.IntegerField()
|
|
||||||
field3 = models.IntegerField()
|
|
||||||
field4 = models.IntegerField()
|
|
||||||
field5 = models.IntegerField()
|
|
||||||
result = models.ForeignKey(RankingVoteResult)
|
|
||||||
|
|
||||||
def average(self):
|
|
||||||
return sum(
|
|
||||||
self.field1,
|
|
||||||
self.field2,
|
|
||||||
self.field3,
|
|
||||||
self.field4,
|
|
||||||
self.field5
|
|
||||||
) / 5
|
|
||||||
|
|
||||||
class BillVoteResults(models.Model):
|
|
||||||
plenary = models.ForeignKey(RollCallVoteResult)
|
|
||||||
general_assembly = models.ForeignKey(RollCallVoteResult)
|
|
||||||
committee = models.ForeignKey(RankingVoteResult)
|
|
||||||
|
|
||||||
class Bill(models.Model):
|
|
||||||
title = models.CharField(max_length=256)
|
|
||||||
text = models.TextField()
|
|
||||||
topic = models.CharField(max_length=256)
|
|
||||||
votes = models.ForeignKey(BillVoteResults)
|
|
||||||
|
|
||||||
class BillTeam(models.Model):
|
|
||||||
class Color(models.TextChoices):
|
|
||||||
RED = 'RED', _('Red')
|
|
||||||
WHITE = 'WHI', _('White')
|
|
||||||
BLUE = 'BLU', _('Blue')
|
|
||||||
NONE = 'NON', _('None')
|
|
||||||
|
|
||||||
color = models.CharField(
|
|
||||||
max_length=3,
|
|
||||||
choices=Color.choices,
|
|
||||||
default=Color.NONE,
|
|
||||||
)
|
|
||||||
delegates = models.ManyToManyField(Person)
|
|
||||||
country = models.TextField(blank=True)
|
|
||||||
bill = models.ForeignKey(Bill)
|
|
||||||
committee = models.ForeignKey(Committee)
|
|
||||||
|
|
||||||
class MUNConference(models.Model):
|
|
||||||
name = models.CharField(max_length=256)
|
|
||||||
docket = models.ArrayField(BillTeam) # plenary docket
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.name
|
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
|
Loading…
Reference in New Issue