Made student_status persistent rather than be deleted when unused. Add active field to student_status and auto create student_status instance when a user is created

This commit is contained in:
Keannu Christian Bernasol 2023-06-26 23:50:55 +08:00
parent ca527289af
commit 1256efa3d2
11 changed files with 142 additions and 10 deletions

View file

@ -52,4 +52,8 @@ class CustomUser(AbstractUser):
semester = models.CharField(
max_length=50, choices=SEMESTERS)
avatar = models.ImageField(upload_to=_get_upload_to, null=True)
@property
def full_name(self):
return f"{self.first_name} {self.last_name}"
pass

View file

@ -2,6 +2,7 @@ from djoser.serializers import UserCreateSerializer as BaseUserRegistrationSeria
from djoser.serializers import UserSerializer as BaseUserSerializer
from accounts.models import CustomUser
from student_status.serializers import StudentStatusSerializer
from student_status.models import StudentStatus
class CustomUserSerializer(BaseUserSerializer):
@ -11,10 +12,40 @@ class CustomUserSerializer(BaseUserSerializer):
class Meta(BaseUserSerializer.Meta):
model = CustomUser
fields = ('username', 'email', 'password',
'student_id_number', 'year_level', 'semester', 'avatar', 'is_banned', 'user_status')
'student_id_number', 'year_level', 'semester', 'avatar', 'first_name', 'last_name', 'is_banned', 'user_status')
class UserRegistrationSerializer(BaseUserRegistrationSerializer):
class Meta(BaseUserRegistrationSerializer.Meta):
fields = ('username', 'email', 'password',
'student_id_number', 'year_level', 'semester', 'avatar')
'student_id_number', 'year_level', 'semester', 'avatar', 'first_name', 'last_name')
def create(self, validated_data):
# Extract the necessary fields from validated_data
username = validated_data['username']
email = validated_data['email']
password = validated_data['password']
student_id_number = validated_data['student_id_number']
first_name = validated_data['first_name']
last_name = validated_data['last_name']
# Get the user's year_level and semester from the user model instance
user = self.Meta.model(**validated_data)
year_level = user.year_level
semester = user.semester
# Create a new user using the base serializer's create() method
user = super().create(validated_data)
# Create a student_status object for the user
student_status = StudentStatus.objects.create(
user=user,
year_level=year_level,
semester=semester,
active=False,
x=None,
y=None,
subject=None
)
return user