Bulk import students, bulk change course

This commit is contained in:
2025-11-18 22:18:12 +01:00
parent 34eabe6af7
commit edb54e9f6f
8 changed files with 113 additions and 52 deletions

View File

@@ -1,5 +1,5 @@
from django.db import models
from django.contrib.auth.models import User
from django.contrib.auth.models import User, Group
from ..models.courses import Course
@@ -46,5 +46,35 @@ class Student(models.Model):
blank=True
)
def default_password(self) -> str:
return f"{self.name.lower()[0]}{self.surname.lower()}{self.id}"
# Override save method to add user for login upon Student creation
def save(self, *args, **kwargs):
creating = self.pk is None
super().save(*args, **kwargs)
if creating and not self.user:
username = f"{self.name.lower()}.{self.surname.lower()}"
# Avoid username conflict with progressive number
base_username = username
counter = 1
while User.objects.filter(username=username).exists():
username = f"{base_username}{counter}"
counter += 1
# Create user
user = User.objects.create_user(
first_name=self.name,
last_name=self.surname,
username=username,
email=self.email,
password=self.default_password(),
is_staff=True
)
student_group, _ = Group.objects.get_or_create(name="StudentGroup")
user.groups.add(student_group)
self.user = user
self.save()
def __str__(self):
return f"{self.surname} {self.name[0]}. => {self.course}"