Add address and minor fields to member in API and client

This commit is contained in:
2020-01-13 03:18:41 +00:00
parent f50a3ca129
commit bd3146f413
6 changed files with 102 additions and 95 deletions

View File

@@ -7,26 +7,33 @@ from . import old_models
class Member(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)
first_name = models.CharField(max_length=32)
last_name = models.CharField(max_length=32)
set_details = models.BooleanField(default=False)
is_director = models.BooleanField(default=False)
is_instructor = models.BooleanField(default=False)
preferred_name = models.CharField(max_length=32, blank=True)
status = models.CharField(max_length=32, blank=True)
phone = models.CharField(max_length=32, blank=True)
expire_date = models.DateField(default=date.today, blank=True, null=True)
current_start_date = models.DateField(default=date.today, blank=True, null=True)
application_date = models.DateField(default=date.today, blank=True, null=True)
vetted_date = models.DateField(blank=True, null=True)
monthly_fees = models.IntegerField(default=55, blank=True, null=True)
emergency_contact_name = models.CharField(max_length=64, blank=True)
emergency_contact_phone = models.CharField(max_length=32, blank=True)
photo_large = models.CharField(max_length=64, blank=True, null=True)
photo_medium = models.CharField(max_length=64, blank=True, null=True)
photo_small = models.CharField(max_length=64, blank=True, null=True)
set_details = models.BooleanField(default=False)
first_name = models.CharField(max_length=32)
last_name = models.CharField(max_length=32)
preferred_name = models.CharField(max_length=32)
phone = models.CharField(max_length=32, null=True)
emergency_contact_name = models.CharField(max_length=64, blank=True)
emergency_contact_phone = models.CharField(max_length=32, blank=True)
birthdate = models.DateField(blank=True, null=True)
is_minor = models.BooleanField(default=False)
guardian_name = models.CharField(max_length=32, blank=True, null=True)
street_address = models.CharField(max_length=32, null=True)
city = models.CharField(default='Calgary, AB', max_length=32)
postal_code = models.CharField(max_length=16, null=True)
is_director = models.BooleanField(default=False)
is_instructor = models.BooleanField(default=False)
status = models.CharField(max_length=32, blank=True, null=True)
expire_date = models.DateField(default=date.today, null=True)
current_start_date = models.DateField(default=date.today, null=True)
application_date = models.DateField(default=date.today, null=True)
vetted_date = models.DateField(blank=True, null=True)
monthly_fees = models.IntegerField(default=55, blank=True, null=True)
class Transaction(models.Model):
user = models.ForeignKey(User, related_name='transactions', blank=True, null=True, on_delete=models.SET_NULL)
recorder = models.ForeignKey(User, related_name='+', blank=True, null=True, on_delete=models.SET_NULL)

View File

@@ -44,22 +44,6 @@ def process_image(upload):
class UserTrainingSerializer(serializers.ModelSerializer):
class Meta:
model = models.Training
exclude = ['user']
depth = 2
class UserSerializer(serializers.ModelSerializer):
training = UserTrainingSerializer(many=True)
class Meta:
model = User
fields = ['id', 'username', 'member', 'transactions', 'cards', 'training']
depth = 1
# member viewing member list or other member
class OtherMemberSerializer(serializers.ModelSerializer):
q = serializers.CharField(write_only=True, max_length=64)
@@ -79,6 +63,11 @@ class UserEmailField(serializers.ModelField):
class MemberSerializer(serializers.ModelSerializer):
photo = serializers.ImageField(write_only=True, required=False)
email = UserEmailField(serializers.EmailField)
phone = serializers.CharField()
street_address = serializers.CharField()
city = serializers.CharField()
postal_code = serializers.CharField()
class Meta:
model = models.Member
fields = '__all__'
@@ -126,6 +115,23 @@ class AdminMemberSerializer(MemberSerializer):
class UserTrainingSerializer(serializers.ModelSerializer):
class Meta:
model = models.Training
exclude = ['user']
depth = 2
class UserSerializer(serializers.ModelSerializer):
training = UserTrainingSerializer(many=True)
member = MemberSerializer()
class Meta:
model = User
fields = ['id', 'username', 'member', 'transactions', 'cards', 'training']
depth = 1
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = models.Transaction

View File

@@ -19,6 +19,12 @@ MEMBER_FIELDS = [
'monthly_fees',
'emergency_contact_name',
'emergency_contact_phone',
# minor -> is_minor
'birthdate',
'guardian_name',
'street_address',
# city, provice -> city
'postal_code',
]
TRANSACTION_FIELDS = [
@@ -83,6 +89,10 @@ for o in old:
for f in MEMBER_FIELDS:
new[f] = o.__dict__.get(f, None)
if o.city and o.province:
new['city'] = '{}, {}'.format(o.city, o.province)
new['is_minor'] = o.minor
small, medium, large = None, None, None
if str(o.id) in photo_folders:
folder = 'old_photos/' + str(o.id)