Esempio n. 1
0
class IssueCustomAttributeExportSerializer(RelatedExportSerializer):
    name = Field()
    description = Field()
    type = Field()
    order = Field()
    created_date = DateTimeField()
    modified_date = DateTimeField()
Esempio n. 2
0
class UserBasicInfoSerializer(serializers.LightSerializer):
    username = Field()
    full_name_display = MethodField()
    photo = MethodField()
    big_photo = MethodField()
    gravatar_id = MethodField()
    is_active = Field()
    id = Field()

    def get_full_name_display(self, obj):
        return obj.get_full_name()

    def get_photo(self, obj):
        return get_user_photo_url(obj)

    def get_big_photo(self, obj):
        return get_user_big_photo_url(obj)

    def get_gravatar_id(self, obj):
        return get_user_gravatar_id(obj)

    def to_value(self, instance):
        if instance is None:
            return None

        return super().to_value(instance)
Esempio n. 3
0
class HistoryEntrySerializer(serializers.LightSerializer):
    comment = Field()
    comment_html = Field()
    delete_comment_date = Field()
    comment_versions = Field()
    edit_comment_date = Field()
    diff = HistoryDiffField(attr="values_diff")
Esempio n. 4
0
class VoterSerializer(serializers.LightSerializer):
    id = Field()
    username = Field()
    full_name = MethodField()

    def get_full_name(self, obj):
        return obj.get_full_name()
Esempio n. 5
0
class MembershipExportSerializer(RelatedExportSerializer):
    user = UserRelatedField()
    role = SlugRelatedField(slug_field="name")
    invited_by = UserRelatedField()
    is_admin = Field()
    email = Field()
    created_at = DateTimeField()
    invitation_extra_text = Field()
    user_order = Field()
Esempio n. 6
0
class OriginItemSerializer(serializers.LightSerializer):
    id = Field()
    ref = Field()
    subject = Field()

    def to_value(self, instance):
        if instance is None:
            return None

        return super().to_value(instance)
Esempio n. 7
0
class WebhookSerializer(serializers.LightSerializer):
    id = Field()
    project = Field(attr="project_id")
    name = Field()
    url = Field()
    key = Field()
    logs_counter = MethodField()

    def get_logs_counter(self, obj):
        return obj.logs.count()
Esempio n. 8
0
class UserSerializer(serializers.LightSerializer):
    id = Field()
    username = Field()
    full_name = Field()
    full_name_display = MethodField()
    color = Field()
    bio = Field()
    lang = Field()
    theme = Field()
    timezone = Field()
    is_active = Field()
    photo = MethodField()
    big_photo = MethodField()
    gravatar_id = MethodField()
    roles = MethodField()

    def get_full_name_display(self, obj):
        return obj.get_full_name() if obj else ""

    def get_photo(self, user):
        return get_user_photo_url(user)

    def get_big_photo(self, user):
        return get_user_big_photo_url(user)

    def get_gravatar_id(self, user):
        return get_user_gravatar_id(user)

    def get_roles(self, user):
        if hasattr(user, "roles_attr"):
            return user.roles_attr

        return user.memberships.order_by("role__name").values_list(
            "role__name", flat=True).distinct()
Esempio n. 9
0
class EpicRelatedUserStorySerializer(serializers.LightSerializer):
    id = Field()
    user_story = MethodField()
    epic = MethodField()
    order = Field()

    def get_user_story(self, obj):
        return UserStorySerializer(obj.user_story).data

    def get_epic(self, obj):
        return EpicSerializer(obj.epic).data
Esempio n. 10
0
class WebhookLogSerializer(serializers.LightSerializer):
    id = Field()
    webhook = Field(attr="webhook_id")
    url = Field()
    status = Field()
    request_data = Field()
    request_headers = Field()
    response_data = Field()
    response_headers = Field()
    duration = Field()
    created = Field()
Esempio n. 11
0
class HistoryExportSerializer(serializers.LightSerializer):
    user = HistoryUserField()
    diff = HistoryDiffField()
    snapshot = MethodField()
    values = HistoryValuesField()
    comment = Field()
    delete_comment_date = DateTimeField()
    delete_comment_user = HistoryUserField()
    comment_versions = Field()
    created_at = DateTimeField()
    edit_comment_date = DateTimeField()
    is_hidden = Field()
    is_snapshot = Field()
    type = Field()

    def __init__(self, *args, **kwargs):
        # Don't pass the extra ids args up to the superclass
        self.statuses_queryset = kwargs.pop("statuses_queryset", {})

        # Instantiate the superclass normally
        super().__init__(*args, **kwargs)

    def get_snapshot(self, obj):
        user_model_cls = get_user_model()

        snapshot = obj.snapshot
        if snapshot is None:
            return None

        try:
            owner_field = snapshot.get("owner", None)
            if isinstance(owner_field, int):
                owner = cached_get_user_by_pk(owner_field)
            else:
                owner = cached_get_user_by_email(owner_field)
            snapshot["owner"] = owner.email
        except user_model_cls.DoesNotExist:
            pass

        try:
            assigned_to_field = snapshot.get("assigned_to", None)
            if isinstance(assigned_to_field, int):
                assigned_to = cached_get_user_by_pk(assigned_to_field)
            else:
                assigned_to = cached_get_user_by_email(assigned_to_field)
            snapshot["assigned_to"] = assigned_to.email
        except user_model_cls.DoesNotExist:
            pass

        if "status" in snapshot:
            snapshot["status"] = self.statuses_queryset.get(snapshot["status"])

        return snapshot
Esempio n. 12
0
class WikiPageSerializer(serializers.LightSerializer):
    id = Field()
    slug = Field()
    content = Field()
    created_date = Field()
    modified_date = Field()
    permalink = serializers.SerializerMethodField("get_permalink")
    project = ProjectSerializer()
    owner = UserSerializer()
    last_modifier = UserSerializer()

    def get_permalink(self, obj):
        return resolve_front_url("wiki", obj.project.slug, obj.slug)
Esempio n. 13
0
class BaseCustomAttributeSerializer(serializers.LightSerializer):
    id = Field()
    name = Field()
    description = Field()
    type = Field()
    order = Field()
    project = Field(attr="project_id")
    extra = Field()
    created_date = Field()
    modified_date = Field()
Esempio n. 14
0
class WikiPageExportSerializer(HistoryExportSerializerMixin,
                               AttachmentExportSerializerMixin,
                               WatcheableObjectLightSerializerMixin,
                               RelatedExportSerializer):
    slug = Field()
    owner = UserRelatedField()
    last_modifier = UserRelatedField()
    modified_date = DateTimeField()
    created_date = DateTimeField()
    content = Field()
    version = Field()

    def statuses_queryset(self, project):
        return {}
Esempio n. 15
0
class UserSerializer(serializers.LightSerializer):
    id = Field(attr="pk")
    permalink = MethodField()
    username = MethodField()
    full_name = MethodField()
    photo = MethodField()
    gravatar_id = MethodField()

    def get_permalink(self, obj):
        return resolve_front_url("user", obj.username)

    def get_username(self, obj):
        return obj.get_username()

    def get_full_name(self, obj):
        return obj.get_full_name()

    def get_photo(self, obj):
        return get_user_photo_url(obj)

    def get_gravatar_id(self, obj):
        return get_user_gravatar_id(obj)

    def to_value(self, instance):
        if instance is None:
            return None

        return super().to_value(instance)
Esempio n. 16
0
class UserStoryStatusSerializer(serializers.LightSerializer):
    id = Field()
    name = I18NField()
    slug = Field()
    order = Field()
    is_closed = Field()
    is_archived = Field()
    color = Field()
    wip_limit = Field()
    project = Field(attr="project_id")
Esempio n. 17
0
class UserStoryStatusExportSerializer(RelatedExportSerializer):
    name = Field()
    slug = Field()
    order = Field()
    is_closed = Field()
    is_archived = Field()
    color = Field()
    wip_limit = Field()
Esempio n. 18
0
class DueDateSerializerMixin(serializers.LightSerializer):
    due_date = Field()
    due_date_reason = Field()
    due_date_status = MethodField()

    THRESHOLD = 14

    def get_due_date_status(self, obj):
        if obj.due_date is None:
            return 'not_set'
        elif obj.status and obj.status.is_closed:
            return 'no_longer_applicable'
        elif timezone.now().date() > obj.due_date:
            return 'past_due'
        elif (timezone.now().date() + dt.timedelta(
                days=self.THRESHOLD)) >= obj.due_date:
            return 'due_soon'
        else:
            return 'set'
Esempio n. 19
0
class SeveritySerializer(serializers.LightSerializer):
    id = Field(attr="pk")
    name = MethodField()
    color = MethodField()

    def get_name(self, obj):
        return obj.name

    def get_color(self, obj):
        return obj.color
Esempio n. 20
0
class MembershipSerializer(serializers.LightSerializer):
    id = Field()
    user = Field(attr="user_id")
    project = Field(attr="project_id")
    role = Field(attr="role_id")
    is_admin = Field()
    created_at = Field()
    invited_by = Field(attr="invited_by_id")
    invitation_extra_text = Field()
    user_order = Field()
    role_name = MethodField()
    full_name = MethodField()
    is_user_active = MethodField()
    color = MethodField()
    photo = MethodField()
    gravatar_id = MethodField()
    project_name = MethodField()
    project_slug = MethodField()
    invited_by = UserBasicInfoSerializer()
    is_owner = MethodField()

    def get_role_name(self, obj):
        return obj.role.name if obj.role else None

    def get_full_name(self, obj):
        return obj.user.get_full_name() if obj.user else None

    def get_is_user_active(self, obj):
        return obj.user.is_active if obj.user else False

    def get_color(self, obj):
        return obj.user.color if obj.user else None

    def get_photo(self, obj):
        return get_user_photo_url(obj.user)

    def get_gravatar_id(self, obj):
        return get_user_gravatar_id(obj.user)

    def get_project_name(self, obj):
        return obj.project.name if obj and obj.project else ""

    def get_project_slug(self, obj):
        return obj.project.slug if obj and obj.project else ""

    def get_is_owner(self, obj):
        return (obj and obj.user_id and obj.project_id and obj.project.owner_id
                and obj.user_id == obj.project.owner_id)
Esempio n. 21
0
class UserStorySearchResultsSerializer(serializers.LightSerializer):
    id = Field()
    ref = Field()
    subject = Field()
    status = Field(attr="status_id")
    total_points = MethodField()
    milestone_name = MethodField()
    milestone_slug = MethodField()

    def get_milestone_name(self, obj):
        return obj.milestone.name if obj.milestone else None

    def get_milestone_slug(self, obj):
        return obj.milestone.slug if obj.milestone else None

    def get_total_points(self, obj):
        assert hasattr(obj, "total_points_attr"), \
            "instance must have a total_points_attr attribute"

        return obj.total_points_attr
Esempio n. 22
0
class IssueExportSerializer(CustomAttributesValuesExportSerializerMixin,
                            HistoryExportSerializerMixin,
                            AttachmentExportSerializerMixin,
                            WatcheableObjectLightSerializerMixin,
                            RelatedExportSerializer):
    owner = UserRelatedField()
    status = SlugRelatedField(slug_field="name")
    assigned_to = UserRelatedField()
    priority = SlugRelatedField(slug_field="name")
    severity = SlugRelatedField(slug_field="name")
    type = SlugRelatedField(slug_field="name")
    milestone = SlugRelatedField(slug_field="name")
    votes = MethodField("get_votes")
    modified_date = DateTimeField()
    created_date = DateTimeField()
    finished_date = DateTimeField()

    ref = Field()
    subject = Field()
    description = Field()
    external_reference = Field()
    version = Field()
    blocked_note = Field()
    is_blocked = Field()
    tags = Field()

    due_date = DateTimeField()
    due_date_reason = Field()

    def get_votes(self, obj):
        return [x.email for x in votes_service.get_voters(obj)]

    def custom_attributes_queryset(self, project):
        if project.id not in _custom_issues_attributes_cache:
            _custom_issues_attributes_cache[project.id] = list(
                project.issuecustomattributes.all().values('id', 'name'))
        return _custom_issues_attributes_cache[project.id]

    def statuses_queryset(self, project):
        if project.id not in _issues_statuses_cache:
            _issues_statuses_cache[project.id] = {
                s.id: s.name
                for s in project.issue_statuses.all()
            }
        return _issues_statuses_cache[project.id]
Esempio n. 23
0
class UserAdminSerializer(UserSerializer):
    total_private_projects = MethodField()
    total_public_projects = MethodField()
    email = Field()
    uuid = Field()
    date_joined = Field()
    read_new_terms = Field()
    accepted_terms = Field()
    max_private_projects = Field()
    max_public_projects = Field()
    max_memberships_private_projects = Field()
    max_memberships_public_projects = Field()

    def get_total_private_projects(self, user):
        return user.owned_projects.filter(is_private=True).count()

    def get_total_public_projects(self, user):
        return user.owned_projects.filter(is_private=False).count()
Esempio n. 24
0
class VotedObjectSerializer(HighLightedContentSerializer):
    is_voter = MethodField()
    total_voters = Field()

    def __init__(self, *args, **kwargs):
        # Don't pass the extra ids args up to the superclass
        self.user_votes = kwargs.pop("user_votes", {})

        # Instantiate the superclass normally
        super().__init__(*args, **kwargs)

    def get_is_voter(self, obj):
        return obj.id in self.user_votes.get(obj.type, [])
Esempio n. 25
0
class TaskStatusSerializer(serializers.LightSerializer):
    id = Field()
    name = I18NField()
    slug = Field()
    order = Field()
    is_closed = Field()
    color = Field()
    project = Field(attr="project_id")
Esempio n. 26
0
class BaseDueDateSerializer(serializers.LightSerializer):
    id = Field()
    name = I18NField()
    order = Field()
    by_default = Field()
    days_to_due = Field()
    color = Field()
    project = Field(attr="project_id")
Esempio n. 27
0
class MilestoneExportSerializer(WatcheableObjectLightSerializerMixin,
                                RelatedExportSerializer):
    name = Field()
    owner = UserRelatedField()
    created_date = DateTimeField()
    modified_date = DateTimeField()
    estimated_start = Field()
    estimated_finish = Field()
    slug = Field()
    closed = Field()
    disponibility = Field()
    order = Field()
Esempio n. 28
0
class RoleSerializer(serializers.LightSerializer):
    id = Field()
    name = Field()
    slug = Field()
    project = Field(attr="project_id")
    order = Field()
    computable = Field()
    permissions = Field()
    members_count = MethodField()

    def get_members_count(self, obj):
        return obj.memberships.count()
Esempio n. 29
0
class ProjectSerializer(serializers.LightSerializer):
    id = Field(attr="pk")
    permalink = MethodField()
    name = MethodField()
    logo_big_url = MethodField()

    def get_permalink(self, obj):
        return resolve_front_url("project", obj.slug)

    def get_name(self, obj):
        return obj.name

    def get_logo_big_url(self, obj):
        return get_logo_big_thumbnail_url(obj)
Esempio n. 30
0
class EpicSerializer(EpicListSerializer):
    comment = MethodField()
    blocked_note_html = MethodField()
    description = Field()
    description_html = MethodField()

    def get_comment(self, obj):
        return ""

    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)