Skip to content

Commit 54fc7dc

Browse files
authored
Merge pull request #55 from PROCOLLAB-github/dev
Dev
2 parents 51e5016 + d05d212 commit 54fc7dc

6 files changed

Lines changed: 57 additions & 23 deletions

File tree

projects/serializers.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ class CollaboratorSerializer(serializers.ModelSerializer):
3434
first_name = serializers.CharField(source="user.first_name")
3535
last_name = serializers.CharField(source="user.last_name")
3636
avatar = serializers.CharField(source="user.avatar")
37-
member_key_skills = serializers.SerializerMethodField()
37+
key_skills = serializers.CharField(source="user.key_skills")
38+
# member_key_skills = serializers.SerializerMethodField()
3839

39-
@classmethod
40-
def get_member_key_skills(cls, collaborator):
41-
return collaborator.user.get_member_key_skills()
40+
# @classmethod
41+
# def get_member_key_skills(cls, collaborator):
42+
# return collaborator.user.get_member_key_skills()
4243

4344
class Meta:
4445
model = Collaborator
@@ -47,7 +48,8 @@ class Meta:
4748
"first_name",
4849
"last_name",
4950
"role",
50-
"member_key_skills",
51+
"key_skills",
52+
# "member_key_skills",
5153
"avatar",
5254
]
5355

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 4.1.3 on 2022-11-19 12:08
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("users", "0019_alter_userachievement_user"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name="member",
15+
name="key_skills",
16+
),
17+
migrations.AddField(
18+
model_name="customuser",
19+
name="key_skills",
20+
field=models.CharField(blank=True, max_length=512),
21+
),
22+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.1.3 on 2022-11-19 12:39
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("users", "0020_remove_member_key_skills_customuser_key_skills"),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name="customuser",
15+
name="key_skills",
16+
field=models.CharField(blank=True, max_length=512, null=True),
17+
),
18+
]

users/models.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class CustomUser(AbstractUser):
6565
)
6666

6767
patronymic = models.CharField(max_length=255, null=True, blank=True)
68+
key_skills = models.CharField(max_length=512, null=True, blank=True)
6869
avatar = models.URLField(null=True, blank=True)
6970
birthday = models.DateField(null=True, blank=True)
7071
about_me = models.TextField(null=True, blank=True)
@@ -82,14 +83,8 @@ class CustomUser(AbstractUser):
8283

8384
objects = CustomUserManager()
8485

85-
def get_member_key_skills(self) -> list[str]:
86-
if self.user_type == CustomUser.MEMBER:
87-
return [
88-
skill.strip()
89-
for skill in self.member.key_skills.split(",")
90-
if skill.strip()
91-
]
92-
return []
86+
def get_key_skills(self) -> list[str]:
87+
return [skill.strip() for skill in self.key_skills.split(",") if skill.strip()]
9388

9489
def __str__(self):
9590
return f"User<{self.id}> - {self.first_name} {self.last_name}"
@@ -157,7 +152,6 @@ class Member(models.Model):
157152
158153
Attributes:
159154
user: ForeignKey instance of the CustomUser model.
160-
key_skills: CharField instance indicating member key skills.
161155
useful_to_project: TextField instance indicates actions useful
162156
for the development and maintenance of the project.
163157
preferred_industries: ManyToManyField indicating user industries preferred for work.
@@ -167,15 +161,11 @@ class Member(models.Model):
167161
CustomUser, on_delete=models.CASCADE, related_name="member"
168162
)
169163

170-
key_skills = models.CharField(max_length=512, blank=True)
171164
useful_to_project = models.TextField(blank=True)
172165
preferred_industries = models.ManyToManyField(
173166
Industry, blank=True, related_name="members"
174167
)
175168

176-
def get_key_skills(self) -> list[str]:
177-
return [skill.strip() for skill in self.key_skills.split(",") if skill.strip()]
178-
179169
def __str__(self):
180170
return f"Member<{self.id}> - {self.user.first_name} {self.user.last_name}"
181171

users/serializers.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,9 @@ def to_internal_value(self, data):
2020

2121

2222
class MemberSerializer(serializers.ModelSerializer):
23-
key_skills = KeySkillsField()
24-
2523
class Meta:
2624
model = Member
2725
fields = [
28-
"key_skills",
2926
"useful_to_project",
3027
]
3128

@@ -63,6 +60,7 @@ class UserDetailSerializer(serializers.ModelSerializer):
6360
expert = ExpertSerializer(required=False)
6461
mentor = MentorSerializer(required=False)
6562
achievements = AchievementListSerializer(required=False, many=True)
63+
key_skills = KeySkillsField(required=False)
6664

6765
class Meta:
6866
model = CustomUser
@@ -73,6 +71,7 @@ class Meta:
7371
"first_name",
7472
"last_name",
7573
"patronymic",
74+
"key_skills",
7675
"birthday",
7776
"speciality",
7877
"about_me",
@@ -87,6 +86,7 @@ class Meta:
8786
]
8887

8988
def update(self, instance, validated_data):
89+
9090
if instance.user_type == CustomUser.MEMBER:
9191
instance.member.__dict__.update(
9292
validated_data.get("member", model_to_dict(instance.member))
@@ -108,13 +108,13 @@ def update(self, instance, validated_data):
108108
)
109109
instance.mentor.save()
110110

111-
# maybe it's better to write ALLOWED_UPDATABLE_FIELDS = ["first_name", "last_name", ...]
112111
IMMUTABLE_FIELDS = ("email", "user_type", "is_active", "password")
113112
USER_TYPE_FIELDS = ("member", "investor", "expert", "mentor")
114113
RELATED_FIELDS = ("achievements",)
115114
for attr, value in validated_data.items():
116115
if attr in IMMUTABLE_FIELDS + USER_TYPE_FIELDS + RELATED_FIELDS:
117116
continue
117+
print(attr, value)
118118
setattr(instance, attr, value)
119119

120120
instance.save()
@@ -124,6 +124,7 @@ def update(self, instance, validated_data):
124124

125125
class UserListSerializer(serializers.ModelSerializer):
126126
member = MemberSerializer(required=False)
127+
key_skills = KeySkillsField(required=False)
127128

128129
def create(self, validated_data):
129130
user = CustomUser(**validated_data)
@@ -141,6 +142,7 @@ class Meta:
141142
"first_name",
142143
"last_name",
143144
"patronymic",
145+
"key_skills",
144146
"avatar",
145147
"speciality",
146148
"birthday",

users/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def put(self, request, pk):
121121
serializer = AchievementDetailSerializer(instance, data=i, partial=False)
122122
serializer.is_valid(raise_exception=True)
123123
serializer.save()
124-
return Response(status=status.HTTP_200_OK)
124+
return super().put(request, pk)
125125

126126

127127
class CurrentUser(GenericAPIView):

0 commit comments

Comments
 (0)