Import old courses, classes and link to members

This commit is contained in:
2020-01-09 23:58:44 +00:00
parent 06c111dbbe
commit 42f3594e38
3 changed files with 142 additions and 30 deletions

View File

@@ -6,7 +6,7 @@ from django.utils.timezone import now
from . import old_models
class Member(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.PROTECT)
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)
@@ -21,8 +21,8 @@ class Member(models.Model):
emergency_contact_phone = models.CharField(max_length=32, blank=True)
class Transaction(models.Model):
user = models.ForeignKey(User, related_name='transactions', blank=True, null=True, on_delete=models.PROTECT)
recorder = models.ForeignKey(User, related_name='+', blank=True, null=True, on_delete=models.PROTECT)
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)
member_id = models.IntegerField(blank=True, null=True)
date = models.DateField(default=date.today)
@@ -36,10 +36,32 @@ class Transaction(models.Model):
info_source = models.TextField(blank=True, null=True)
class Card(models.Model):
user = models.ForeignKey(User, related_name='cards', blank=True, null=True, on_delete=models.PROTECT)
user = models.ForeignKey(User, related_name='cards', blank=True, null=True, on_delete=models.SET_NULL)
member_id = models.IntegerField(blank=True, null=True)
card_number = models.CharField(max_length=16, blank=True, null=True)
notes = models.TextField(blank=True, null=True)
last_seen_at = models.DateField(default=date.today, blank=True, null=True)
active_status = models.CharField(max_length=32, blank=True, null=True)
class Course(models.Model):
name = models.TextField(blank=True, null=True)
description = models.TextField(blank=True, null=True)
is_old = models.BooleanField(default=False)
class Session(models.Model):
instructor = models.ForeignKey(User, related_name='teaching', blank=True, null=True, on_delete=models.SET_NULL)
course = models.ForeignKey(Course, blank=True, null=True, on_delete=models.SET_NULL)
old_instructor = models.TextField(blank=True, null=True)
datetime = models.DateTimeField(blank=True, null=True)
cost = models.DecimalField(max_digits=5, decimal_places=2)
class Training(models.Model):
user = models.ForeignKey(User, related_name='training', blank=True, null=True, on_delete=models.SET_NULL)
session = models.ForeignKey(Session, blank=True, null=True, on_delete=models.SET_NULL)
member_id = models.IntegerField(blank=True, null=True)
attendance_status = models.TextField(blank=True, null=True)
sign_up_date = models.DateField(default=date.today, blank=True, null=True)
paid_date = models.DateField(default=date.today, blank=True, null=True)

View File

@@ -7,10 +7,18 @@ from . import models, old_models
#custom_error = lambda x: ValidationError(dict(non_field_errors=x))
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', 'email', 'member', 'transactions', 'cards']
fields = ['id', 'username', 'email', 'member', 'transactions', 'cards', 'training']
depth = 1
@@ -47,7 +55,7 @@ class RegistrationSerializer(RegisterSerializer):
old_member = old_members.get(email=data['email'])
except old_models.Members.DoesNotExist:
user.delete()
raise ValidationError(dict(email='Unable to find in old database.'))
raise ValidationError(dict(email='Unable to find email in old database.'))
member = models.Member.objects.get(id=old_member.id)
@@ -70,6 +78,11 @@ class RegistrationSerializer(RegisterSerializer):
c.user = user
c.save()
training = models.Training.objects.filter(member_id=member.id)
for t in training:
t.user = user
t.save()
else:
models.Member.objects.create(
user=user,