def update(self, instance, validated_data):
instance = super().update(instance, validated_data)
instance.score = self.calculate_score(instance, self.validated_data)
recommendation = self.validated_data.get(instance.recommendation_field.id, NO)
instance.recommendation = int(
recommendation if recommendation is not None else NO
)
instance.is_draft = self.validated_data.get("is_draft", False)
# Old review forms do not have the requred visability field.
# This will set visibility to PRIVATE by default.
try:
instance.visibility = self.validated_data[instance.visibility_field.id]
except AttributeError:
instance.visibility = PRIVATE
if not instance.is_draft:
# Capture the revision against which the user was reviewing
instance.revision = instance.submission.live_revision
instance.save()
return instance