This repository has been archived on 2025-06-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
dusken-prototype/dusken/main/models.py
T
2012-11-05 19:04:27 +01:00

167 lines
6.5 KiB
Python

# FIXME
# - Reduce the database more?
# - ExpiresformanytomanymembershipDuration
# - Institution
# - Member has place of study?
# - Subgroups
# - Positions
# - Only one type of adress? YES
# - ExtendedMemberdetail?
# - Legacy_id as extended member detail?
# TODO
# - autofields created, updated
from django.db import models
class Country(models.Model):
country_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50, unique=True)
class Meta:
db_table = u'country'
class Address(models.Model):
address_id = models.IntegerField(primary_key=True)
postalcode = models.CharField(max_length=10)
addressline1 = models.CharField(max_length=255)
placename = models.CharField(max_length=100)
addressline2 = models.CharField(max_length=255)
country_id = models.ForeignKey(Country, db_column='country_id')
class Meta:
db_table = u'address'
class Member(models.Model):
member_id = models.IntegerField(primary_key=True)
email = models.CharField(max_length=150, unique=True)
username = models.CharField(max_length=40, unique=True)
phonenumber = models.IntegerField(unique=True, null=True, blank=True)
givenname = models.CharField(max_length=200, blank=True)
dateofbirth = models.DateField(null=True, blank=True)
surname = models.CharField(max_length=200, blank=True)
address_id = models.ForeignKey(Address, null=True, db_column='address_id', blank=True)
class Meta:
db_table = u'member'
class NorwegianAddress(models.Model):
norwegian_address_id = models.IntegerField(primary_key=True)
postal_code = models.CharField(max_length=10)
place_name = models.CharField(max_length=100)
class Meta:
db_table = u'norwegian_address'
class ExtendedMemberDetail(models.Model):
member_id = models.ForeignKey(Member, primary_key=True, db_column='member_id')
class Meta:
db_table = u'extended_member_details'
class PaymentForMembership(models.Model):
payment_for_membership_id = models.IntegerField(primary_key=True)
sms_payment_id = models.IntegerField(unique=True, null=True, blank=True)
webshop_payment_id = models.IntegerField(unique=True, null=True, blank=True)
voucher_id = models.IntegerField(unique=True, null=True, blank=True)
class Meta:
db_table = u'payment_for_membership'
class MembershipDuration(models.Model):
membership_duration_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50, unique=True)
minimum_duration = models.CharField(max_length=30)
class Meta:
db_table = u'membership_duration'
class Membership(models.Model):
membership_id = models.IntegerField(primary_key=True)
start_date = models.DateField()
member_id = models.ForeignKey(Member, db_column='member_id')
membership_duration_id = models.ForeignKey(MembershipDuration, db_column='membership_duration_id')
payment_for_membership_id = models.ForeignKey(PaymentForMembership, unique=True, null=True, db_column='payment_for_membership_id', blank=True)
class Meta:
db_table = u'membership'
class Group(models.Model):
group_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50, unique=True)
class Meta:
db_table = u'group'
# TODO Remove his and related.
class GroupMembership(models.Model):
group_membership_id = models.IntegerField(primary_key=True)
start_date = models.DateField()
member_id = models.ForeignKey(Member, db_column='member_id')
group_id = models.ForeignKey(Group, db_column='group_id')
membership_duration_id = models.ForeignKey(MembershipDuration, db_column='membership_duration_id')
class Meta:
db_table = u'group_membership'
class PaymentForGroupMembership(models.Model):
group_membership_id = models.ForeignKey(GroupMembership, primary_key=True, db_column='group_membership_id')
start_date = models.DateField(null=True, blank=True)
amount = models.DecimalField(null=True, max_digits=19, decimal_places=4, blank=True)
reference = models.CharField(max_length=100, blank=True)
note = models.CharField(max_length=500, blank=True)
class Meta:
db_table = u'payment_for_group_membership'
class Expires(models.Model):
expires_id = models.IntegerField(primary_key=True)
monthofyear = models.IntegerField()
dayofmonth = models.IntegerField()
class Meta:
db_table = u'expires'
class ExpiresformanytomanymembershipDuration(models.Model):
expires_id = models.ForeignKey(Expires, db_column='expires_id')
membership_duration_id = models.ForeignKey(MembershipDuration, db_column='membership_duration_id')
class Meta:
db_table = u'expiresformanytomanymembership_duration'
class Legacy(models.Model):
legacy_id = models.IntegerField(primary_key=True)
member_id = models.ForeignKey(Member, unique=True, null=True, db_column='member_id', blank=True)
class Meta:
db_table = u'legacy'
class Institution(models.Model):
institutionname = models.CharField(max_length=255, primary_key=True)
class Meta:
db_table = u'institution'
class Subgroup(models.Model):
subgroup_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
group_id = models.ForeignKey(Group, db_column='group_id')
class Meta:
db_table = u'subgroup'
class Position(models.Model):
position_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
subgroup_id = models.ForeignKey(Subgroup, db_column='subgroup_id')
is_static = models.NullBooleanField(null=True, blank=True)
class Meta:
db_table = u'position'
class PositionInfo(models.Model):
position_info_id = models.IntegerField(primary_key=True)
position_id = models.ForeignKey(Position, db_column='position_id')
group_membership_id = models.ForeignKey(GroupMembership, null=True, db_column='group_membership_id', blank=True)
email = models.CharField(max_length=150, blank=True)
phonenumber = models.IntegerField(null=True, blank=True)
class Meta:
db_table = u'position_info'
class PlaceOfStudy(models.Model):
place_of_study_id = models.IntegerField(primary_key=True)
fromdate = models.DateField()
institutionname = models.ForeignKey(Institution, db_column='institutionname')
class Meta:
db_table = u'place_of_study'
class MemberhasplaceOfStudy(models.Model):
member_id = models.ForeignKey(Member, db_column='member_id')
place_of_study_id = models.ForeignKey(PlaceOfStudy, db_column='place_of_study_id')
class Meta:
db_table = u'membershasplace_of_study'