class TaskSerializer(serializers.ModelSerializer): tags = PickleField(required=False, default=[]) comment = serializers.SerializerMethodField("get_comment") milestone_slug = serializers.SerializerMethodField("get_milestone_slug") blocked_note_html = serializers.SerializerMethodField( "get_blocked_note_html") description_html = serializers.SerializerMethodField( "get_description_html") class Meta: model = models.Task def get_comment(self, obj): return "" def get_milestone_slug(self, obj): if obj.milestone: return obj.milestone.slug else: return None def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description)
class ProjectSerializer(serializers.ModelSerializer): tags = PickleField(required=False) class Meta: model = models.Project read_only_fields = ("created_date", "modified_date", "owner", "domain") exclude = ("last_us_ref", "last_task_ref", "last_issue_ref")
class IssueSerializer(WatchersValidator, serializers.ModelSerializer): tags = PickleField(required=False) is_closed = serializers.Field(source="is_closed") comment = serializers.SerializerMethodField("get_comment") generated_user_stories = serializers.SerializerMethodField( "get_generated_user_stories") blocked_note_html = serializers.SerializerMethodField( "get_blocked_note_html") description_html = serializers.SerializerMethodField( "get_description_html") votes = serializers.SerializerMethodField("get_votes_number") class Meta: model = models.Issue read_only_fields = ('id', 'ref', 'created_date', 'modified_date') def get_comment(self, obj): # NOTE: This method and field is necessary to historical comments work return "" def get_generated_user_stories(self, obj): return obj.generated_user_stories.values("id", "ref", "subject") def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description) def get_votes_number(self, obj): # The "votes_count" attribute is attached in the get_queryset of the viewset. return getattr(obj, "votes_count", 0)
class TaskSerializer(WatchersValidator, serializers.ModelSerializer): tags = PickleField(required=False, default=[]) external_reference = PgArrayField(required=False) comment = serializers.SerializerMethodField("get_comment") milestone_slug = serializers.SerializerMethodField("get_milestone_slug") blocked_note_html = serializers.SerializerMethodField( "get_blocked_note_html") description_html = serializers.SerializerMethodField( "get_description_html") is_closed = serializers.SerializerMethodField("get_is_closed") class Meta: model = models.Task read_only_fields = ('id', 'ref', 'created_date', 'modified_date') def get_comment(self, obj): return "" def get_milestone_slug(self, obj): if obj.milestone: return obj.milestone.slug else: return None def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description) def get_is_closed(self, obj): return obj.status.is_closed
class IssueSerializer(WatcherValidationSerializerMixin, serializers.ModelSerializer): tags = PickleField(required=False) is_closed = serializers.Field(source="is_closed") comment = serializers.SerializerMethodField("get_comment") attachments = IssueAttachmentSerializer(many=True, read_only=True) generated_user_stories = serializers.SerializerMethodField( "get_generated_user_stories") blocked_note_html = serializers.SerializerMethodField( "get_blocked_note_html") description_html = serializers.SerializerMethodField( "get_description_html") class Meta: model = models.Issue def get_comment(self, obj): # NOTE: This method and field is necessary to historical comments work return "" def get_generated_user_stories(self, obj): return obj.generated_user_stories.values("id", "ref", "subject") def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description)
class UserStorySerializer(WatchersValidator, serializers.ModelSerializer): tags = PickleField(default=[], required=False) external_reference = PgArrayField(required=False) points = RolePointsField(source="role_points", required=False) total_points = serializers.SerializerMethodField("get_total_points") comment = serializers.SerializerMethodField("get_comment") milestone_slug = serializers.SerializerMethodField("get_milestone_slug") milestone_name = serializers.SerializerMethodField("get_milestone_name") origin_issue = serializers.SerializerMethodField("get_origin_issue") blocked_note_html = serializers.SerializerMethodField( "get_blocked_note_html") description_html = serializers.SerializerMethodField( "get_description_html") class Meta: model = models.UserStory depth = 0 read_only_fields = ('created_date', 'modified_date') def get_total_points(self, obj): return obj.get_total_points() def get_comment(self, obj): # NOTE: This method and field is necessary to historical comments work return "" def get_milestone_slug(self, obj): if obj.milestone: return obj.milestone.slug else: return None def get_milestone_name(self, obj): if obj.milestone: return obj.milestone.name else: return None def get_origin_issue(self, obj): if obj.generated_from_issue: return { "id": obj.generated_from_issue.id, "ref": obj.generated_from_issue.ref, "subject": obj.generated_from_issue.subject, } return None def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description)
class UserStorySerializer(serializers.ModelSerializer): tags = PickleField(default=[], required=False) points = RolePointsField(source="role_points", required=False) total_points = serializers.SerializerMethodField("get_total_points") comment = serializers.SerializerMethodField("get_comment") milestone_slug = serializers.SerializerMethodField("get_milestone_slug") milestone_name = serializers.SerializerMethodField("get_milestone_name") origin_issue = serializers.SerializerMethodField("get_origin_issue") blocked_note_html = serializers.SerializerMethodField("get_blocked_note_html") description_html = serializers.SerializerMethodField("get_description_html") class Meta: model = models.UserStory depth = 0 def save_object(self, obj, **kwargs): role_points = obj._related_data.pop("role_points", None) super().save_object(obj, **kwargs) points_modelcls = get_model("projects", "Points") obj.project.update_role_points() if role_points: for role_id, points_id in role_points.items(): role_points = obj.role_points.get(role__id=role_id) role_points.points = points_modelcls.objects.get(id=points_id, project=obj.project) role_points.save() def get_total_points(self, obj): return obj.get_total_points() def get_comment(self, obj): # NOTE: This method and field is necessary to historical comments work return "" def get_milestone_slug(self, obj): if obj.milestone: return obj.milestone.slug else: return None def get_milestone_name(self, obj): if obj.milestone: return obj.milestone.name else: return None def get_origin_issue(self, obj): if obj.generated_from_issue: return { "id": obj.generated_from_issue.id, "ref": obj.generated_from_issue.ref, "subject": obj.generated_from_issue.subject, } return None def get_blocked_note_html(self, obj): return mdrender(obj.project, obj.blocked_note) def get_description_html(self, obj): return mdrender(obj.project, obj.description)