Skip to content

Commit 00dd55a

Browse files
authored
Merge pull request #84 from PROCOLLAB-github/dev
made expert.preferred_industries and investor.preferred_industries Ch…
2 parents 30ce81a + 2c755bd commit 00dd55a

4 files changed

Lines changed: 68 additions & 20 deletions

File tree

users/managers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ def get_users_for_detail_view(self):
3030
self.get_queryset()
3131
.select_related("member", "investor", "expert", "mentor")
3232
.prefetch_related(
33-
"member__preferred_industries",
34-
"expert__preferred_industries",
35-
"investor__preferred_industries",
33+
# "member__preferred_industries",
34+
# "expert__preferred_industries",
35+
# "investor__preferred_industries",
3636
"achievements",
3737
)
3838
.all()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Generated by Django 4.1.3 on 2022-11-23 12:43
2+
3+
from django.db import migrations, models
4+
import users.models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("users", "0021_alter_customuser_key_skills"),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name="customuser",
16+
name="user_type",
17+
field=models.PositiveSmallIntegerField(
18+
choices=[(1, "Участник"), (2, "Ментор"), (3, "Эксперт"), (4, "Инвестор")],
19+
default=users.models.get_default_user_type,
20+
),
21+
),
22+
migrations.RemoveField(
23+
model_name="expert",
24+
name="preferred_industries",
25+
),
26+
migrations.RemoveField(
27+
model_name="investor",
28+
name="preferred_industries",
29+
),
30+
migrations.AddField(
31+
model_name="expert",
32+
name="preferred_industries",
33+
field=models.CharField(blank=True, max_length=4096),
34+
),
35+
migrations.AddField(
36+
model_name="investor",
37+
name="preferred_industries",
38+
field=models.CharField(blank=True, max_length=4096),
39+
),
40+
]

users/models.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,10 @@ class Expert(AbstractUserWithRole):
208208
CustomUser, on_delete=models.CASCADE, related_name="expert"
209209
)
210210

211-
preferred_industries = models.ManyToManyField(
212-
Industry, blank=True, related_name="experts"
213-
)
211+
# preferred_industries = models.ManyToManyField(
212+
# Industry, blank=True, related_name="experts"
213+
# )
214+
preferred_industries = models.CharField(max_length=4096, blank=True)
214215
useful_to_project = models.TextField(blank=True)
215216

216217
# TODO reviews
@@ -235,9 +236,10 @@ class Investor(AbstractUserWithRole):
235236
CustomUser, on_delete=models.CASCADE, related_name="investor"
236237
)
237238

238-
preferred_industries = models.ManyToManyField(
239-
Industry, blank=True, related_name="investors"
240-
)
239+
# preferred_industries = models.ManyToManyField(
240+
# Industry, blank=True, related_name="investors"
241+
# )
242+
preferred_industries = models.CharField(max_length=4096, blank=True)
241243
interaction_process_description = models.TextField(blank=True)
242244

243245
def __str__(self):

users/serializers.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from django.forms.models import model_to_dict
22
from rest_framework import serializers
33

4-
from industries.models import Industry
54
from .models import CustomUser, Expert, Investor, Member, Mentor, UserAchievement
65

76

@@ -20,6 +19,14 @@ def to_internal_value(self, data):
2019
return ",".join(data)
2120

2221

22+
class CustomListField(serializers.ListField):
23+
# костыль
24+
def to_representation(self, data):
25+
if type(data) == list:
26+
return data
27+
return [i.replace("'", "") for i in data.strip("][").split(", ")]
28+
29+
2330
class MemberSerializer(serializers.ModelSerializer):
2431
class Meta:
2532
model = Member
@@ -39,8 +46,8 @@ class Meta:
3946

4047
class ExpertSerializer(serializers.ModelSerializer):
4148

42-
preferred_industries = serializers.ListSerializer(
43-
child=serializers.PrimaryKeyRelatedField(queryset=Industry.objects.all())
49+
preferred_industries = CustomListField(
50+
child=serializers.CharField(max_length=255),
4451
)
4552

4653
class Meta:
@@ -53,9 +60,7 @@ class Meta:
5360

5461
class InvestorSerializer(serializers.ModelSerializer):
5562

56-
preferred_industries = serializers.ListSerializer(
57-
child=serializers.PrimaryKeyRelatedField(queryset=Industry.objects.all())
58-
)
63+
preferred_industries = CustomListField(child=serializers.CharField(max_length=255))
5964

6065
class Meta:
6166
model = Investor
@@ -107,17 +112,18 @@ def update(self, instance, validated_data):
107112
instance.investor.__dict__.update(
108113
validated_data.get("investor", model_to_dict(instance.investor))
109114
)
110-
instance.investor.preferred_industries.set(
111-
validated_data.get("investor", {}).get("preferred_industries", [])
112-
)
115+
instance.investor.preferred_industries = validated_data.get(
116+
"investor", {}
117+
).get("preferred_industries", [])
113118
instance.investor.save()
114119
elif instance.user_type == CustomUser.EXPERT:
115120
instance.expert.__dict__.update(
116121
validated_data.get("expert", model_to_dict(instance.expert))
117122
)
118-
instance.expert.preferred_industries.set(
119-
validated_data.get("expert", {}).get("preferred_industries", [])
123+
instance.expert.preferred_industries = validated_data.get("expert", {}).get(
124+
"preferred_industries", []
120125
)
126+
print("expert", instance.expert.preferred_industries)
121127
instance.expert.save()
122128
elif instance.user_type == CustomUser.MENTOR:
123129
instance.mentor.__dict__.update(

0 commit comments

Comments
 (0)