Skip to content

Commit df13162

Browse files
committed
Merge branch 'dev'
2 parents ee6dd70 + 51f24ca commit df13162

4 files changed

Lines changed: 46 additions & 3 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 4.1.2 on 2022-11-17 21:15
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("projects", "0006_alter_project_name_alter_project_step"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveConstraint(
14+
model_name="collaborator",
15+
name="unique_collaorator",
16+
),
17+
migrations.AddConstraint(
18+
model_name="collaborator",
19+
constraint=models.UniqueConstraint(
20+
fields=("project", "user"), name="unique_collaborator"
21+
),
22+
),
23+
]

projects/models.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from industries.models import Industry
66
from projects.helpers import VERBOSE_STEPS
7-
from projects.managers import ProjectManager, AchievementManager
7+
from projects.managers import AchievementManager, ProjectManager
88
from users.models import CustomUser
99

1010
User = get_user_model()
@@ -42,7 +42,6 @@ class Project(models.Model):
4242
null=True,
4343
related_name="projects",
4444
)
45-
# TODO think about naming
4645
presentation_address = models.URLField(blank=True)
4746
image_address = models.URLField(blank=True)
4847

@@ -133,6 +132,6 @@ class Meta:
133132
"project",
134133
"user",
135134
],
136-
name="unique_collaorator",
135+
name="unique_collaborator",
137136
)
138137
]

projects/serializers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from industries.models import Industry
44
from projects.models import Project, Achievement, Collaborator
5+
from projects.validators import validate_project
56
from users.models import CustomUser
67
from vacancy.serializers import ProjectVacancyListSerializer
78

@@ -67,6 +68,10 @@ class ProjectDetailSerializer(serializers.ModelSerializer):
6768
)
6869
vacancies = ProjectVacancyListSerializer(many=True, read_only=True)
6970

71+
def validate(self, data):
72+
super().validate(data)
73+
return validate_project(data)
74+
7075
class Meta:
7176
model = Project
7277
fields = [
@@ -135,6 +140,10 @@ class Meta:
135140
def is_valid(self, *, raise_exception=False):
136141
return super().is_valid(raise_exception=raise_exception)
137142

143+
def validate(self, data):
144+
super().validate(data)
145+
return validate_project(data)
146+
138147
def create(self, validated_data):
139148
industry = Industry.objects.get(id=validated_data.pop("industry"))
140149
leader = CustomUser.objects.get(id=validated_data.pop("leader"))

projects/validators.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from rest_framework.serializers import ValidationError
2+
3+
4+
def validate_project(data):
5+
if not data.get("draft"):
6+
error = {}
7+
for key, value in data.items():
8+
if value == "" or value is None:
9+
error[key] = "This field is required"
10+
if error:
11+
raise ValidationError(error)
12+
return data

0 commit comments

Comments
 (0)