Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
1e50500
В модель пользователя добавлены поля МосПолитеха; Новые поля добавлен…
Toksi86 Jul 2, 2025
326980a
В ручки users/id users/current добавлены новые поля с данным МосПолит…
Toksi86 Jul 2, 2025
614db3d
Привёл файл к единому стилю кодирования: отсортировал импорты, исправ…
Toksi86 Jul 2, 2025
2cf2708
Merge pull request #520 from PROCOLLAB-github/feature/user-mospolytec…
Toksi86 Jul 2, 2025
868defd
Добалвены новые поля в модель Проект с данными для МосПолитеха; Добал…
Toksi86 Jul 4, 2025
8e85f18
Переработан ProjectDetailSerializer в соответствии с новыми полями в …
Toksi86 Jul 4, 2025
99c392e
Код привдён в соответствие с правилами оформления; Отсортированы импорты
Toksi86 Jul 4, 2025
8a12a10
Merge pull request #521 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 4, 2025
bd241e1
Поля Трэк, Направление, Актуальность, Цель, Проблема у Проектов больш…
Toksi86 Jul 4, 2025
8888816
Merge pull request #522 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 4, 2025
2708652
Приглашениям и Коллабораторам добавлено поле Specialization; Новые по…
Toksi86 Jul 8, 2025
c49c9a3
Код приведён в соответстие с стилистическим оформлением
Toksi86 Jul 8, 2025
fe0dcd9
Merge pull request #523 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 9, 2025
34ac1a9
Добавлен булевый фильтр для пользователя, явяляется ли он студентом м…
Toksi86 Jul 9, 2025
3c0ff1b
Merge pull request #524 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 9, 2025
840ecfe
Добавлено поле Специализация в модель Вакансии; Переработаны сериализ…
Toksi86 Jul 10, 2025
4668888
Код приведён в соответствие с стилевым оформлением
Toksi86 Jul 10, 2025
18d8988
Merge pull request #525 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 10, 2025
ee36a8d
Добавлено поле специализация в сериализатор Приглашений
Toksi86 Jul 10, 2025
19dd26b
Merge pull request #526 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 11, 2025
c8109b7
Добалвно поле специализация в сериализатор списка вакансий в сериализ…
Toksi86 Jul 11, 2025
4557594
Merge pull request #527 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 11, 2025
10191ea
Добавлена модель стандартной аватарки проекта, в случае если проект с…
Toksi86 Jul 11, 2025
d8ee4ee
Merge pull request #528 from PROCOLLAB-github/feature/project-mospoly…
Toksi86 Jul 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion invites/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,11 @@

@admin.register(Invite)
class InviteAdmin(admin.ModelAdmin):
fields = ["project", "user", "motivational_letter", "role", "is_accepted"]
fields = [
"project",
"user",
"motivational_letter",
"role",
"specialization",
"is_accepted",
]
24 changes: 24 additions & 0 deletions invites/migrations/0002_invite_specialization.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 4.2.11 on 2025-07-08 11:18

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("invites", "0001_initial"),
]

operations = [
migrations.AddField(
model_name="invite",
name="specialization",
field=models.CharField(
blank=True,
default=None,
max_length=100,
null=True,
verbose_name="Специализация",
),
),
]
13 changes: 11 additions & 2 deletions invites/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from django.db import models
from django_stubs_ext.db.models import TypedModelMeta

from invites.managers import InviteManager
from projects.models import Project
from users.models import CustomUser
from django_stubs_ext.db.models import TypedModelMeta


class Invite(models.Model):
Expand All @@ -27,6 +27,13 @@ class Invite(models.Model):
max_length=4096, blank=True, null=True, default=None
)
role = models.CharField(max_length=128, blank=True, null=True)
specialization = models.CharField(
max_length=100,
blank=True,
null=True,
default=None,
verbose_name="Специализация",
)
is_accepted = models.BooleanField(blank=False, null=True, default=None)

datetime_created = models.DateTimeField(
Expand All @@ -39,7 +46,9 @@ class Invite(models.Model):
objects = InviteManager()

def __str__(self) -> str:
return f'Invite from project "{self.project.name}" to {self.user.get_full_name()}'
return (
f'Invite from project "{self.project.name}" to {self.user.get_full_name()}'
)

class Meta(TypedModelMeta):
verbose_name = "Приглашение"
Expand Down
5 changes: 5 additions & 0 deletions invites/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@ class Meta:
"user",
"motivational_letter",
"role",
"specialization",
"is_accepted",
]


class InviteDetailSerializer(serializers.ModelSerializer[Invite]):
user = UserDetailSerializer(many=False, read_only=True)
project = ProjectListSerializer(many=False, read_only=True)
specialization = serializers.CharField(
required=False, allow_null=True, allow_blank=True
)

class Meta:
model = Invite
Expand All @@ -30,6 +34,7 @@ class Meta:
"user",
"motivational_letter",
"role",
"specialization",
"is_accepted",
"datetime_created",
"datetime_updated",
Expand Down
7 changes: 5 additions & 2 deletions invites/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from invites.filters import InviteFilter
from invites.models import Invite
from invites.serializers import InviteListSerializer, InviteDetailSerializer
from invites.serializers import InviteDetailSerializer, InviteListSerializer
from projects.models import Collaborator


Expand Down Expand Up @@ -49,7 +49,10 @@ def post(self, request, *args, **kwargs):
return Response(status=status.HTTP_403_FORBIDDEN)
# add user to project collaborators
Collaborator.objects.create(
user=invite.user, project=invite.project, role=invite.role
user=invite.user,
project=invite.project,
role=invite.role,
specialization=invite.specialization,
)
invite.is_accepted = True
invite.save()
Expand Down
74 changes: 72 additions & 2 deletions projects/admin.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.contrib import admin

from projects.models import (
DefaultProjectCover,
Project,
Achievement,
Collaborator,
DefaultProjectAvatar,
DefaultProjectCover,
Project,
ProjectLink,
ProjectNews,
)
Expand All @@ -17,11 +18,75 @@ class ProjectAdmin(admin.ModelAdmin):
"name",
"draft",
"is_company",
"track",
"direction",
)
list_display_links = (
"id",
"name",
)
search_fields = (
"name",
"track",
)
list_filter = (
"draft",
"is_company",
"track",
"direction",
)

fieldsets = (
(
"Основная информация",
{
"fields": (
"name",
"description",
"leader",
"industry",
"region",
"step",
"draft",
"is_company",
)
},
),
(
"Для проектов ПД МосПолитеха",
{
"fields": (
"track",
"direction",
"actuality",
"goal",
"problem",
)
},
),
(
"Медиа и обложка",
{
"fields": (
"presentation_address",
"image_address",
"cover",
"cover_image_address",
)
},
),
(
"Служебные поля",
{
"fields": (
"hidden_score",
"datetime_created",
"datetime_updated",
)
},
),
)
readonly_fields = ("datetime_created", "datetime_updated")


@admin.register(ProjectNews)
Expand Down Expand Up @@ -77,3 +142,8 @@ class DefaultProjectCoverAdmin(admin.ModelAdmin):
"datetime_created",
"datetime_updated",
)


@admin.register(DefaultProjectAvatar)
class DefaultProjectAvatarAdmin(admin.ModelAdmin):
list_display = ("id", "image", "datetime_created")
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Generated by Django 4.2.11 on 2025-07-03 08:53

import django.core.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("projects", "0023_project_cover_image_address"),
]

operations = [
migrations.AddField(
model_name="project",
name="actuality",
field=models.TextField(
blank=True,
help_text="Почему проект важен (до 1000\u202fсимв.)",
null=True,
validators=[django.core.validators.MaxLengthValidator(1000)],
verbose_name="Актуальность",
),
),
migrations.AddField(
model_name="project",
name="direction",
field=models.CharField(
blank=True,
help_text="Более общее направление деятельности проекта",
max_length=256,
null=True,
verbose_name="Направление",
),
),
migrations.AddField(
model_name="project",
name="goal",
field=models.CharField(
blank=True,
help_text="Главная цель проекта (до 500\u202fсимв.)",
max_length=500,
null=True,
verbose_name="Цель",
),
),
migrations.AddField(
model_name="project",
name="problem",
field=models.TextField(
blank=True,
help_text="Какую проблему решает проект (до 1000\u202fсимв.)",
null=True,
validators=[django.core.validators.MaxLengthValidator(1000)],
verbose_name="Проблема",
),
),
migrations.AddField(
model_name="project",
name="specialty",
field=models.CharField(
blank=True,
help_text="Специализация проекта",
max_length=256,
null=True,
verbose_name="Специальность",
),
),
migrations.AddField(
model_name="project",
name="track",
field=models.CharField(
blank=True,
help_text="Направление/курс, в рамках которого реализуется проект",
max_length=256,
null=True,
verbose_name="Трек",
),
),
]
17 changes: 17 additions & 0 deletions projects/migrations/0025_remove_project_specialty.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 4.2.11 on 2025-07-04 13:36

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("projects", "0024_project_actuality_project_direction_project_goal_and_more"),
]

operations = [
migrations.RemoveField(
model_name="project",
name="specialty",
),
]
25 changes: 25 additions & 0 deletions projects/migrations/0026_collaborator_specialization.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.2.11 on 2025-07-08 11:18

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("projects", "0025_remove_project_specialty"),
]

operations = [
migrations.AddField(
model_name="collaborator",
name="specialization",
field=models.CharField(
blank=True,
default=None,
help_text="Направления работы участника в рамках проекта",
max_length=100,
null=True,
verbose_name="Специализация",
),
),
]
Loading