Skip to content

Commit 2708652

Browse files
committed
Приглашениям и Коллабораторам добавлено поле Specialization; Новые поля добавлены в админку и сериализаторы; При принятии Приглашения создаётся объект Коллаборатор, который будет иметь роль и специализацию из Приглашения
1 parent bd241e1 commit 2708652

7 files changed

Lines changed: 72 additions & 2 deletions

File tree

invites/admin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55

66
@admin.register(Invite)
77
class InviteAdmin(admin.ModelAdmin):
8-
fields = ["project", "user", "motivational_letter", "role", "is_accepted"]
8+
fields = ["project", "user", "motivational_letter", "role", "specialization", "is_accepted"]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 4.2.11 on 2025-07-08 11:18
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("invites", "0001_initial"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="invite",
15+
name="specialization",
16+
field=models.CharField(
17+
blank=True,
18+
default=None,
19+
max_length=100,
20+
null=True,
21+
verbose_name="Специализация",
22+
),
23+
),
24+
]

invites/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ class Invite(models.Model):
2727
max_length=4096, blank=True, null=True, default=None
2828
)
2929
role = models.CharField(max_length=128, blank=True, null=True)
30+
specialization = models.CharField(
31+
max_length=100,
32+
blank=True,
33+
null=True,
34+
default=None,
35+
verbose_name="Специализация"
36+
)
3037
is_accepted = models.BooleanField(blank=False, null=True, default=None)
3138

3239
datetime_created = models.DateTimeField(

invites/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Meta:
2121
class InviteDetailSerializer(serializers.ModelSerializer[Invite]):
2222
user = UserDetailSerializer(many=False, read_only=True)
2323
project = ProjectListSerializer(many=False, read_only=True)
24+
specialization = serializers.CharField(required=False, allow_null=True, allow_blank=True)
2425

2526
class Meta:
2627
model = Invite
@@ -30,6 +31,7 @@ class Meta:
3031
"user",
3132
"motivational_letter",
3233
"role",
34+
"specialization",
3335
"is_accepted",
3436
"datetime_created",
3537
"datetime_updated",

invites/views.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ def post(self, request, *args, **kwargs):
4949
return Response(status=status.HTTP_403_FORBIDDEN)
5050
# add user to project collaborators
5151
Collaborator.objects.create(
52-
user=invite.user, project=invite.project, role=invite.role
52+
user=invite.user,
53+
project=invite.project,
54+
role=invite.role,
55+
specialization=invite.specialization,
5356
)
5457
invite.is_accepted = True
5558
invite.save()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 4.2.11 on 2025-07-08 11:18
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("projects", "0025_remove_project_specialty"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="collaborator",
15+
name="specialization",
16+
field=models.CharField(
17+
blank=True,
18+
default=None,
19+
help_text="Направления работы участника в рамках проекта",
20+
max_length=100,
21+
null=True,
22+
verbose_name="Специализация",
23+
),
24+
),
25+
]

projects/models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ class Collaborator(models.Model):
264264
user: A ForeignKey referencing the user who is collaborating in the project.
265265
project: A ForeignKey referencing the project the user is collaborating in.
266266
role: A CharField meaning the role the user is fulfilling in the project.
267+
specialization: A CharField indicating the user's specialization within the project.
267268
datetime_created: A DateTimeField indicating date of creation.
268269
datetime_updated: A DateTimeField indicating date of update.
269270
"""
@@ -276,6 +277,14 @@ class Collaborator(models.Model):
276277
)
277278
project = models.ForeignKey(Project, models.CASCADE, verbose_name="Проект")
278279
role = models.CharField("Роль", max_length=1024, blank=True, null=True)
280+
specialization = models.CharField(
281+
"Специализация",
282+
max_length=100,
283+
blank=True,
284+
null=True,
285+
default=None,
286+
help_text="Направления работы участника в рамках проекта",
287+
)
279288

280289
datetime_created = models.DateTimeField(
281290
verbose_name="Дата создания", null=False, auto_now_add=True

0 commit comments

Comments
 (0)