diff --git a/server/settings.py b/server/settings.py index 2ddfedf..ac2a5ff 100644 --- a/server/settings.py +++ b/server/settings.py @@ -46,7 +46,7 @@ 'team', ] -AUTH_USER_MODEL = 'users.Mentor' +AUTH_USER_MODEL = 'users.CustomUser' # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py index 216085d..d57d1aa 100644 --- a/users/migrations/0001_initial.py +++ b/users/migrations/0001_initial.py @@ -1,7 +1,11 @@ -# Generated by Django 4.1.3 on 2022-11-07 20:55 +# Generated by Django 4.1.3 on 2022-12-18 13:36 +from django.conf import settings import django.contrib.auth.models +import django.contrib.auth.validators +import django.core.validators from django.db import migrations, models +import django.db.models.deletion import django.utils.timezone @@ -15,40 +19,85 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Mentor', + name='CustomUser', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('email', models.EmailField(max_length=200)), + ('is_mentor', models.BooleanField(default=False, verbose_name='Mentor')), + ('is_mentee', models.BooleanField(default=False, verbose_name='Mentee')), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='Mentor', + fields=[ + ('customuser_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)), ('name', models.CharField(max_length=200)), - ('username', models.CharField(max_length=200, unique=True)), - ('password', models.CharField(max_length=200)), - ('alloted_team_ids', models.BigIntegerField()), - ('branch', models.CharField(choices=[('1', 'CSE'), ('2', 'IT'), ('3', 'ECE'), ('4', 'ELEC'), ('5', 'MECH'), ('6', 'CHEM'), ('7', 'CIVIL'), ('8', 'META'), ('9', 'MIN'), ('10', 'MCA'), ('11', 'BIOMED'), ('12', 'BIOTECH'), ('13', 'MCA')], max_length=100)), - ('semester', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')], max_length=100)), - ('phone_number', models.BigIntegerField(unique=True)), - ('codechefID', models.CharField(max_length=100)), - ('codeforcesID', models.CharField(max_length=100)), - ('leetcodeID', models.CharField(max_length=100)), - ('gfgID', models.CharField(max_length=100)), - ('hackerrankID', models.CharField(max_length=100)), - ('linkedinID', models.CharField(max_length=100)), + ('branch', models.CharField(choices=[('1', 'CSE'), ('2', 'IT'), ('3', 'ECE'), ('4', 'ELEC'), ('5', 'MECH'), ('6', 'CHEM'), ('7', 'CIVIL'), ('8', 'META'), ('9', 'MIN'), ('10', 'BIOMED'), ('11', 'BIOTECH'), ('12', 'MCA')], max_length=10)), + ('semester', models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(8)])), + ('phone_number', models.CharField(max_length=10, unique=True)), + ('codechefID', models.URLField(max_length=100)), + ('codeforcesID', models.URLField(max_length=100)), + ('leetcodeID', models.URLField(max_length=100)), + ('gfgID', models.URLField(max_length=100)), + ('hackerrankID', models.URLField(max_length=100)), + ('linkedinID', models.URLField(max_length=100)), ('score', models.BigIntegerField(default=0)), ('total_q', models.BigIntegerField(default=0)), - ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), - ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), ], options={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'abstract': False, }, + bases=('users.customuser',), + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='Mentee', + fields=[ + ('customuser_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)), + ('name', models.CharField(max_length=100)), + ('branch', models.CharField(choices=[('1', 'CSE'), ('2', 'IT'), ('3', 'ECE'), ('4', 'ELEC'), ('5', 'MECH'), ('6', 'CHEM'), ('7', 'CIVIL'), ('8', 'META'), ('9', 'MIN'), ('10', 'BIOMED'), ('11', 'BIOTECH'), ('12', 'MCA')], max_length=10)), + ('semester', models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(8)])), + ('phone_number', models.CharField(max_length=10, unique=True)), + ('codechefID', models.URLField(max_length=100)), + ('codeforcesID', models.URLField(max_length=100)), + ('leetcodeID', models.URLField(max_length=100)), + ('gfgID', models.URLField(max_length=100)), + ('hackerrankID', models.URLField(max_length=100)), + ('linkedinID', models.URLField(max_length=100)), + ('score', models.BigIntegerField(default=0)), + ('solved_q', models.BigIntegerField(default=0)), + ('mentee_rank', models.IntegerField()), + ('alloted_mentor_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.mentor')), + ], + options={ + 'verbose_name': 'user', + 'verbose_name_plural': 'users', + 'abstract': False, + }, + bases=('users.customuser',), managers=[ ('objects', django.contrib.auth.models.UserManager()), ], diff --git a/users/migrations/0002_alter_mentor_codechefid_alter_mentor_codeforcesid_and_more.py b/users/migrations/0002_alter_mentor_codechefid_alter_mentor_codeforcesid_and_more.py deleted file mode 100644 index 3d65b9b..0000000 --- a/users/migrations/0002_alter_mentor_codechefid_alter_mentor_codeforcesid_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 4.1.3 on 2022-12-02 19:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='mentor', - name='codechefID', - field=models.URLField(max_length=100), - ), - migrations.AlterField( - model_name='mentor', - name='codeforcesID', - field=models.URLField(max_length=100), - ), - migrations.AlterField( - model_name='mentor', - name='gfgID', - field=models.URLField(max_length=100), - ), - migrations.AlterField( - model_name='mentor', - name='hackerrankID', - field=models.URLField(max_length=100), - ), - migrations.AlterField( - model_name='mentor', - name='leetcodeID', - field=models.URLField(max_length=100), - ), - migrations.AlterField( - model_name='mentor', - name='linkedinID', - field=models.URLField(max_length=100), - ), - ] diff --git a/users/migrations/0003_remove_mentor_alloted_team_ids_alter_mentor_branch_and_more.py b/users/migrations/0003_remove_mentor_alloted_team_ids_alter_mentor_branch_and_more.py deleted file mode 100644 index 335333b..0000000 --- a/users/migrations/0003_remove_mentor_alloted_team_ids_alter_mentor_branch_and_more.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 4.1.3 on 2022-12-15 06:49 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0002_alter_mentor_codechefid_alter_mentor_codeforcesid_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='mentor', - name='alloted_team_ids', - ), - migrations.AlterField( - model_name='mentor', - name='branch', - field=models.CharField(choices=[('1', 'CSE'), ('2', 'IT'), ('3', 'ECE'), ('4', 'ELEC'), ('5', 'MECH'), ('6', 'CHEM'), ('7', 'CIVIL'), ('8', 'META'), ('9', 'MIN'), ('10', 'BIOMED'), ('11', 'BIOTECH'), ('12', 'MCA')], max_length=8), - ), - migrations.AlterField( - model_name='mentor', - name='email', - field=models.EmailField(blank=True, max_length=254, verbose_name='email address'), - ), - migrations.AlterField( - model_name='mentor', - name='semester', - field=models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(8)]), - ), - ] diff --git a/users/migrations/0004_alter_mentor_branch.py b/users/migrations/0004_alter_mentor_branch.py deleted file mode 100644 index d3be86f..0000000 --- a/users/migrations/0004_alter_mentor_branch.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.1.3 on 2022-12-15 06:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0003_remove_mentor_alloted_team_ids_alter_mentor_branch_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='mentor', - name='branch', - field=models.CharField(choices=[('1', 'CSE'), ('2', 'IT'), ('3', 'ECE'), ('4', 'ELEC'), ('5', 'MECH'), ('6', 'CHEM'), ('7', 'CIVIL'), ('8', 'META'), ('9', 'MIN'), ('10', 'BIOMED'), ('11', 'BIOTECH'), ('12', 'MCA')], max_length=10), - ), - ] diff --git a/users/migrations/0005_alter_mentor_phone_number.py b/users/migrations/0005_alter_mentor_phone_number.py deleted file mode 100644 index ada65e5..0000000 --- a/users/migrations/0005_alter_mentor_phone_number.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.1.3 on 2022-12-15 07:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0004_alter_mentor_branch'), - ] - - operations = [ - migrations.AlterField( - model_name='mentor', - name='phone_number', - field=models.CharField(max_length=10, unique=True), - ), - ] diff --git a/users/models.py b/users/models.py index 290815a..b8f553f 100644 --- a/users/models.py +++ b/users/models.py @@ -20,10 +20,17 @@ ("12" , "MCA"), ) -class Mentor(AbstractUser): +class CustomUser(AbstractUser): + UserTypes=( + ("1","Mentor"), + ("2","Mentee") + ) + user_type=models.CharField(max_length=10,choices=UserTypes) + class Meta: + verbose_name="User" + +class Mentor(CustomUser): name = models.CharField(max_length=200, null=False) - username = models.CharField(max_length=200,null=False,unique=True) - password = models.CharField(max_length=200) branch = models.CharField(max_length=10,choices=Branches) semester = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(8)]) phone_number = models.CharField(max_length=10,unique=True) @@ -36,5 +43,27 @@ class Mentor(AbstractUser): score = models.BigIntegerField(default=0) total_q = models.BigIntegerField(default=0) + def __str__(self): + return self.username + +# mentee model + +class Mentee(CustomUser): + name=models.CharField(max_length=100,null=False) + # team_id= + branch=models.CharField(choices=Branches,max_length=10) + semester = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(8)]) + phone_number = models.CharField(max_length=10,unique=True) + codechefID = models.URLField(max_length=100) + codeforcesID = models.URLField(max_length=100) + leetcodeID = models.URLField(max_length=100) + gfgID = models.URLField(max_length=100) + hackerrankID = models.URLField(max_length=100) + linkedinID = models.URLField(max_length=100) + score = models.BigIntegerField(default=0) + solved_q = models.BigIntegerField(default=0) + alloted_mentor_id=models.ForeignKey(Mentor,on_delete=models.CASCADE) + mentee_rank=models.IntegerField() + def __str__(self): return self.username \ No newline at end of file