From 789500d704b16ac14e427553789aa98e5b4f1c45 Mon Sep 17 00:00:00 2001 From: dom-inic Date: Wed, 27 Mar 2024 12:39:53 +0300 Subject: [PATCH] refactors, fixes --- db.sqlite3 | Bin 610304 -> 520192 bytes dev.txt | 2 +- ...ove_userprofile_certifications_and_more.py | 64 ++++++++++++++++++ users/models.py | 12 ++-- 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 users/migrations/0003_remove_userprofile_certifications_and_more.py diff --git a/db.sqlite3 b/db.sqlite3 index eb1f4965e490416b9dfebcb0b81a1b6e53fe853d..4a6e71bbb9f66ff986ffbf868440ec8bcd699401 100644 GIT binary patch delta 8448 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 OZK2jDsy0R8%l`qxvUu?T literal 610304 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 diff --git a/dev.txt b/dev.txt index 7585dd7..045d599 100644 --- a/dev.txt +++ b/dev.txt @@ -1,3 +1,3 @@ docker-compose up -docker build -t payrolsystem . +docker build -t conshareapi3.0 . docker-compose -f docker-compose.yml up \ No newline at end of file diff --git a/users/migrations/0003_remove_userprofile_certifications_and_more.py b/users/migrations/0003_remove_userprofile_certifications_and_more.py new file mode 100644 index 0000000..ecd3493 --- /dev/null +++ b/users/migrations/0003_remove_userprofile_certifications_and_more.py @@ -0,0 +1,64 @@ +# Generated by Django 4.0 on 2024-03-03 11:19 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_alter_userrefer_options_remove_userrefer_caption_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='userprofile', + name='certifications', + ), + migrations.AddField( + model_name='userprofile', + name='certifications', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, related_name='licenses', to='users.certificationtag'), + preserve_default=False, + ), + migrations.RemoveField( + model_name='userprofile', + name='education', + ), + migrations.AddField( + model_name='userprofile', + name='education', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, related_name='schools', to='users.educationtag'), + preserve_default=False, + ), + migrations.RemoveField( + model_name='userprofile', + name='interests', + ), + migrations.AddField( + model_name='userprofile', + name='interests', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, related_name='topic_interests', to='users.interesttag'), + preserve_default=False, + ), + migrations.RemoveField( + model_name='userprofile', + name='jobs', + ), + migrations.AddField( + model_name='userprofile', + name='jobs', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, related_name='jobs_done', to='users.experiencetag'), + preserve_default=False, + ), + migrations.RemoveField( + model_name='userprofile', + name='skills', + ), + migrations.AddField( + model_name='userprofile', + name='skills', + field=models.ForeignKey(blank=True, default=0, on_delete=django.db.models.deletion.CASCADE, related_name='personal_skills', to='users.skilltag'), + preserve_default=False, + ), + ] diff --git a/users/models.py b/users/models.py index cd1b52d..e07756e 100644 --- a/users/models.py +++ b/users/models.py @@ -17,7 +17,7 @@ def __str__(self): return self.name -# Skills are added by teh user to indicate topics they are proficient in +# Skills are added by teh user to indicate skills they are proficient in class SkillTag(models.Model): name = models.CharField(primary_key=True, max_length=150, null=False, blank=False) @@ -83,11 +83,11 @@ class UserProfile(models.Model): city = models.CharField(max_length=100) vote_ratio = models.IntegerField(blank=True, null=True, default=0) followers_count = models.IntegerField(blank=True, null=True, default=0) - skills = models.ManyToManyField(SkillTag, related_name='personal_skills', blank=True) - interests = models.ManyToManyField(InterestTag, related_name='topic_interests', blank=True) - certifications = models.ManyToManyField(CertificationTag, related_name='licenses', blank=True) - jobs = models.ManyToManyField(ExperienceTag, related_name='jobs_done', blank=True) - education = models.ManyToManyField(EducationTag, related_name='schools', blank=True) + skills = models.ForeignKey(SkillTag, related_name='personal_skills', blank=True, on_delete=models.CASCADE) + interests = models.ForeignKey(InterestTag, related_name='topic_interests', blank=True, on_delete=models.CASCADE) + certifications = models.ForeignKey(CertificationTag, related_name='licenses', blank=True, on_delete=models.CASCADE) + jobs = models.ForeignKey(ExperienceTag, related_name='jobs_done', blank=True, on_delete=models.CASCADE) + education = models.ForeignKey(EducationTag, related_name='schools', blank=True, on_delete=models.CASCADE) followers = models.ManyToManyField(User, related_name='following', blank=True) email_verified = models.BooleanField(default=False) id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)