Skip to content

Commit da06786

Browse files
committed
change-to-moving-engagements
1 parent f224469 commit da06786

File tree

3 files changed

+31
-2
lines changed

3 files changed

+31
-2
lines changed

dojo/api_v2/serializers.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ class Meta:
11191119
exclude = ("inherited_tags",)
11201120

11211121
def validate(self, data):
1122-
if self.context["request"].method == "POST":
1122+
if data.get("target_start") and data.get("target_end"):
11231123
if data.get("target_start") > data.get("target_end"):
11241124
msg = "Your target start date exceeds your target end date"
11251125
raise serializers.ValidationError(msg)
@@ -1133,6 +1133,30 @@ def build_relational_field(self, field_name, relation_info):
11331133
return super().build_relational_field(field_name, relation_info)
11341134

11351135

1136+
class EngagementCreateSerializer(serializers.ModelSerializer):
1137+
product = serializers.PrimaryKeyRelatedField(
1138+
queryset=Product.objects.all(),
1139+
)
1140+
tags = TagListSerializerField(required=False)
1141+
1142+
class Meta:
1143+
model = Engagement
1144+
exclude = ("inherited_tags",)
1145+
1146+
def validate(self, data):
1147+
if data.get("target_start") > data.get("target_end"):
1148+
msg = "Your target start date exceeds your target end date"
1149+
raise serializers.ValidationError(msg)
1150+
return data
1151+
1152+
def build_relational_field(self, field_name, relation_info):
1153+
if field_name == "notes":
1154+
return NoteSerializer, {"many": True, "read_only": True}
1155+
if field_name == "files":
1156+
return FileSerializer, {"many": True, "read_only": True}
1157+
return super().build_relational_field(field_name, relation_info)
1158+
1159+
11361160
class EngagementToNotesSerializer(serializers.Serializer):
11371161
engagement_id = serializers.PrimaryKeyRelatedField(
11381162
queryset=Engagement.objects.all(), many=False, allow_null=True,

dojo/api_v2/views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,11 @@ class EngagementViewSet(
450450
def risk_application_model_class(self):
451451
return Engagement
452452

453+
def get_serializer_class(self):
454+
if self.request and self.request.method == "POST":
455+
return serializers.EngagementCreateSerializer
456+
return serializers.EngagementSerializer
457+
453458
def destroy(self, request, *args, **kwargs):
454459
instance = self.get_object()
455460
if get_setting("ASYNC_OBJECT_DELETE"):

dojo/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1526,7 +1526,7 @@ class Engagement(BaseModel):
15261526
preset = models.ForeignKey(Engagement_Presets, null=True, blank=True, help_text=_("Settings and notes for performing this engagement."), on_delete=models.CASCADE)
15271527
reason = models.CharField(max_length=2000, null=True, blank=True)
15281528
report_type = models.ForeignKey(Report_Type, null=True, blank=True, on_delete=models.CASCADE)
1529-
product = models.ForeignKey(Product, on_delete=models.CASCADE)
1529+
product = models.ForeignKey(Product, editable=False, on_delete=models.CASCADE)
15301530
active = models.BooleanField(default=True, editable=False)
15311531
tracker = models.URLField(max_length=200, help_text=_("Link to epic or ticket system with changes to version."), editable=True, blank=True, null=True)
15321532
test_strategy = models.URLField(editable=True, blank=True, null=True)

0 commit comments

Comments
 (0)