Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions procollab/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@
CORS_ALLOWED_ORIGINS = [
"http://localhost:4200",
"http://127.0.0.1:4200",
"https://api.procollab.ru",
"https://procollab-pr-*.onrender.com.",
"http://localhost:8000",
]

INTERNAL_IPS = [
Expand Down
17 changes: 17 additions & 0 deletions projects/migrations/0009_remove_project_short_description.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 4.1.3 on 2022-11-19 16:20

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("projects", "0008_alter_project_description_and_more"),
]

operations = [
migrations.RemoveField(
model_name="project",
name="short_description",
),
]
7 changes: 6 additions & 1 deletion projects/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Optional

from django.contrib.auth import get_user_model
from django.db import models
from django.db.models import UniqueConstraint
Expand Down Expand Up @@ -32,7 +34,7 @@ class Project(models.Model):

name = models.CharField(max_length=256, null=True, blank=True)
description = models.TextField(null=True, blank=True)
short_description = models.TextField(null=True, blank=True)
# short_description = models.TextField(null=True, blank=True)
region = models.CharField(max_length=256, null=True, blank=True)
step = models.PositiveSmallIntegerField(choices=VERBOSE_STEPS, null=True, blank=True)

Expand Down Expand Up @@ -63,6 +65,9 @@ class Project(models.Model):

objects = ProjectManager()

def get_short_description(self) -> Optional[str]:
return self.description[:30] if self.description else None

def __str__(self):
return f"Project<{self.id}> - {self.name}"

Expand Down
16 changes: 11 additions & 5 deletions projects/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ class CollaboratorSerializer(serializers.ModelSerializer):
last_name = serializers.CharField(source="user.last_name")
avatar = serializers.CharField(source="user.avatar")
key_skills = serializers.CharField(source="user.key_skills")
# member_key_skills = serializers.SerializerMethodField()

# @classmethod
# def get_member_key_skills(cls, collaborator):
# return collaborator.user.get_member_key_skills()

class Meta:
model = Collaborator
Expand Down Expand Up @@ -68,11 +63,16 @@ class ProjectDetailSerializer(serializers.ModelSerializer):
source="collaborator_set", many=True, read_only=True
)
vacancies = ProjectVacancyListSerializer(many=True, read_only=True)
short_description = serializers.SerializerMethodField()

def validate(self, data):
super().validate(data)
return validate_project(data)

@classmethod
def get_short_description(cls, project):
return project.get_short_description()

class Meta:
model = Project
fields = [
Expand Down Expand Up @@ -103,6 +103,12 @@ class ProjectListSerializer(serializers.ModelSerializer):
)
vacancies = ProjectVacancyListSerializer(many=True, read_only=True)

short_description = serializers.SerializerMethodField()

@classmethod
def get_short_description(cls, project):
return project.get_short_description()

@classmethod
def get_collaborator_count(cls, obj):
return len(obj.collaborator_set.all())
Expand Down
15 changes: 9 additions & 6 deletions projects/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
ProjectListSerializer,
AchievementDetailSerializer,
ProjectCollaboratorSerializer,
ProjectAchievementListSerializer,
)


Expand Down Expand Up @@ -78,20 +79,22 @@ def put(self, request, pk):
for i in achievements:
achievement_id = i.get("id")
if achievement_id is None:
Achievement.objects.create(
title=i["title"],
status=i["status"],
project_id=pk,
)
# creating
i["project"] = pk
serializer = ProjectAchievementListSerializer(data=i)
serializer.is_valid(raise_exception=True)
serializer.save()
else:
# changing
instance = Achievement.objects.get(id=achievement_id)
i["project"] = pk
serializer = AchievementDetailSerializer(
instance, data=i, partial=False
)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(status=status.HTTP_200_OK)

return super(ProjectDetail, self).put(request, pk)


class ProjectCountView(generics.GenericAPIView):
Expand Down
1 change: 0 additions & 1 deletion users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ def update(self, instance, validated_data):
for attr, value in validated_data.items():
if attr in IMMUTABLE_FIELDS + USER_TYPE_FIELDS + RELATED_FIELDS:
continue
print(attr, value)
setattr(instance, attr, value)

instance.save()
Expand Down
2 changes: 1 addition & 1 deletion users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

class UserList(ListCreateAPIView):
queryset = User.objects.all()
permission_classes = [AllowAny]
permission_classes = [AllowAny] # FIXME: change to IsAuthorized
serializer_class = UserListSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = UserFilter
Expand Down