Skip to content

Commit 93782f0

Browse files
committed
fixed projects not creating when not specifying leader/industry
1 parent db00996 commit 93782f0

4 files changed

Lines changed: 85 additions & 27 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Generated by Django 4.1.3 on 2022-11-18 11:45
2+
3+
import django.db.models.deletion
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
def set_userachievement_user_to_not_null(apps, schema_editor):
9+
Project = apps.get_model('projects', 'Project')
10+
Project.objects.filter(leader=None).delete()
11+
12+
13+
class Migration(migrations.Migration):
14+
dependencies = [
15+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16+
("industries", "0001_initial"),
17+
("projects", "0007_remove_collaborator_unique_collaorator_and_more"),
18+
]
19+
20+
operations = [
21+
migrations.AlterField(
22+
model_name="project",
23+
name="description",
24+
field=models.TextField(blank=True, null=True),
25+
),
26+
migrations.AlterField(
27+
model_name="project",
28+
name="image_address",
29+
field=models.URLField(blank=True, null=True),
30+
),
31+
migrations.AlterField(
32+
model_name="project",
33+
name="industry",
34+
field=models.ForeignKey(
35+
blank=True,
36+
null=True,
37+
on_delete=django.db.models.deletion.SET_NULL,
38+
related_name="projects",
39+
to="industries.industry",
40+
),
41+
),
42+
migrations.RunPython(set_userachievement_user_to_not_null),
43+
migrations.AlterField(
44+
model_name="project",
45+
name="leader",
46+
field=models.ForeignKey(
47+
on_delete=django.db.models.deletion.CASCADE,
48+
related_name="leaders_projects",
49+
to=settings.AUTH_USER_MODEL,
50+
),
51+
),
52+
migrations.AlterField(
53+
model_name="project",
54+
name="presentation_address",
55+
field=models.URLField(blank=True, null=True),
56+
),
57+
migrations.AlterField(
58+
model_name="project",
59+
name="region",
60+
field=models.CharField(blank=True, max_length=256, null=True),
61+
),
62+
migrations.AlterField(
63+
model_name="project",
64+
name="short_description",
65+
field=models.TextField(blank=True, null=True),
66+
),
67+
]

projects/models.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,24 @@ class Project(models.Model):
3131
"""
3232

3333
name = models.CharField(max_length=256, null=True, blank=True)
34-
description = models.TextField(blank=True)
35-
short_description = models.TextField(blank=True)
36-
region = models.CharField(max_length=256, blank=True)
34+
description = models.TextField(null=True, blank=True)
35+
short_description = models.TextField(null=True, blank=True)
36+
region = models.CharField(max_length=256, null=True, blank=True)
3737
step = models.PositiveSmallIntegerField(choices=VERBOSE_STEPS, null=True, blank=True)
3838

3939
industry = models.ForeignKey(
4040
Industry,
4141
on_delete=models.SET_NULL,
4242
null=True,
43+
blank=True,
4344
related_name="projects",
4445
)
45-
presentation_address = models.URLField(blank=True)
46-
image_address = models.URLField(blank=True)
46+
presentation_address = models.URLField(null=True, blank=True)
47+
image_address = models.URLField(null=True, blank=True)
4748

4849
leader = models.ForeignKey(
4950
User,
50-
on_delete=models.SET_NULL,
51-
null=True,
51+
on_delete=models.CASCADE,
5252
related_name="leaders_projects", # projects in which this user is the leader
5353
)
5454

@@ -85,10 +85,7 @@ class Achievement(models.Model):
8585
status = models.CharField(max_length=256, null=False)
8686

8787
project = models.ForeignKey(
88-
Project,
89-
on_delete=models.SET_NULL,
90-
null=True,
91-
related_name="achievements",
88+
Project, on_delete=models.SET_NULL, null=True, related_name="achievements"
9289
)
9390

9491
objects = AchievementManager()

projects/serializers.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from industries.models import Industry
44
from projects.models import Project, Achievement, Collaborator
55
from projects.validators import validate_project
6-
from users.models import CustomUser
76
from vacancy.serializers import ProjectVacancyListSerializer
87

98

@@ -95,10 +94,6 @@ class Meta:
9594

9695

9796
class ProjectListSerializer(serializers.ModelSerializer):
98-
def __init__(self, *args, **kwargs):
99-
# might be unnecessary
100-
self.max_collaborator_count = kwargs.pop("max_collaborator_count", 4)
101-
super().__init__(*args, **kwargs)
10297

10398
collaborators = serializers.SerializerMethodField(method_name="get_collaborators")
10499
collaborator_count = serializers.SerializerMethodField(
@@ -111,8 +106,9 @@ def get_collaborator_count(cls, obj):
111106
return len(obj.collaborator_set.all())
112107

113108
def get_collaborators(self, obj):
109+
max_collaborator_count = 4
114110
return CollaboratorSerializer(
115-
instance=obj.collaborator_set.all()[: self.max_collaborator_count], many=True
111+
instance=obj.collaborator_set.all()[:max_collaborator_count], many=True
116112
).data
117113

118114
class Meta:
@@ -144,15 +140,13 @@ def validate(self, data):
144140
super().validate(data)
145141
return validate_project(data)
146142

147-
def create(self, validated_data):
148-
industry = Industry.objects.get(id=validated_data.pop("industry"))
149-
leader = CustomUser.objects.get(id=validated_data.pop("leader"))
150-
project = Project.objects.create(
151-
**validated_data,
152-
industry=industry,
153-
leader=leader,
154-
)
155-
return project
143+
# def create(self, validated_data):
144+
# project = Project.objects.create(
145+
# **validated_data,
146+
# industry_id=validated_data.pop("industry"),
147+
# leader_id=validated_data.pop("leader"),
148+
# )
149+
# return project
156150

157151

158152
class ProjectIndustrySerializer(serializers.ModelSerializer):

projects/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def create(self, request, *args, **kwargs):
3030
serializer = self.get_serializer(data=request.data)
3131
serializer.is_valid(raise_exception=True)
3232
# Doesn't work if not explicitly set like this
33-
serializer.validated_data["leader"] = request.user.id
33+
serializer.validated_data["leader"] = request.user
3434

3535
self.perform_create(serializer)
3636
headers = self.get_success_headers(serializer.data)

0 commit comments

Comments
 (0)