@@ -434,8 +434,10 @@ def create_user( # type: ignore[override]
434
434
# pylint: disable-next=import-outside-toplevel
435
435
from .student import Student
436
436
437
- # pylint: disable-next =protected-access
437
+ # pylint: disable=protected-access
438
438
password = StudentUser ._get_random_password ()
439
+ login_id , hashed_login_id = StudentUser ._get_random_login_id ()
440
+ # pylint: enable=protected-access
439
441
440
442
user = super ().create_user (
441
443
** extra_fields ,
@@ -444,17 +446,18 @@ def create_user( # type: ignore[override]
444
446
password = password ,
445
447
)
446
448
447
- # pylint: disable-next=protected-access
448
- user ._password = password
449
-
450
449
Student .objects .create (
451
450
class_field = klass ,
452
451
user = UserProfile .objects .create (user = user ),
453
452
new_user = user ,
454
- # pylint: disable-next=protected-access
455
- login_id = StudentUser ._get_random_login_id (),
453
+ login_id = hashed_login_id ,
456
454
)
457
455
456
+ # pylint: disable=protected-access
457
+ user ._password = password
458
+ user ._login_id = login_id
459
+ # pylint: enable=protected-access
460
+
458
461
# TODO: delete this in new data schema
459
462
TotalActivity .objects .update (
460
463
student_registrations = F ("student_registrations" ) + 1
@@ -477,6 +480,9 @@ def get_queryset(self):
477
480
class StudentUser (User ):
478
481
"""A user that is a student."""
479
482
483
+ # TODO: move this is to Student model in new schema.
484
+ _login_id : t .Optional [str ]
485
+
480
486
teacher : None
481
487
student : "Student"
482
488
@@ -497,22 +503,25 @@ def _get_random_password():
497
503
@staticmethod
498
504
def _get_random_login_id ():
499
505
# pylint: disable-next=import-outside-toplevel
500
- from .student import Student
506
+ # from .student import Student
501
507
502
- login_id = None
503
- while (
504
- login_id is None
505
- or Student .objects .filter (login_id = login_id ).exists ()
506
- ):
507
- login_id = get_random_string (length = 64 )
508
+ # login_id = None
509
+ # while (
510
+ # login_id is None
511
+ # or Student.objects.filter(login_id=login_id).exists()
512
+ # ):
513
+ # login_id = get_random_string(length=64)
508
514
509
- return login_id
515
+ # TODO: replace below code with commented out code above.
516
+ # pylint: disable-next=import-outside-toplevel
517
+ from common .helpers .generators import generate_login_id
518
+
519
+ return generate_login_id ()
510
520
511
521
@staticmethod
512
522
def get_random_username ():
513
523
"""Generate a random username that is unique."""
514
524
username = None
515
-
516
525
while (
517
526
username is None or User .objects .filter (username = username ).exists ()
518
527
):
@@ -523,7 +532,10 @@ def get_random_username():
523
532
# pylint: disable-next=arguments-differ
524
533
def set_password (self , raw_password : t .Optional [str ] = None ):
525
534
super ().set_password (raw_password or self ._get_random_password ())
526
- self .student .login_id = self ._get_random_login_id ()
535
+ (
536
+ self .student .login_id ,
537
+ self ._login_id ,
538
+ ) = self ._get_random_login_id ()
527
539
528
540
529
541
# pylint: disable-next=missing-class-docstring,too-few-public-methods
0 commit comments