Skip to content

Commit

Permalink
Merge pull request #57 from PROCOLLAB-github/dev
Browse files Browse the repository at this point in the history
Removed short description field
  • Loading branch information
yeezy-na-izi authored Nov 20, 2022
2 parents 5c9a0f6 + bc780d4 commit 714a5ec
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 14 deletions.
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

0 comments on commit 714a5ec

Please sign in to comment.