Пример #1
0
class CompanyDetailedInfoSerializer(CompanyBasicInfoSerializer):
    admins = serpy.MethodField()
    roles = serpy.MethodField()
    website = serpy.Field()
    facebook = serpy.Field()
    twitter = serpy.Field()
    linkedin = serpy.Field()
    id = serpy.Field()
    city = serpy.MethodField()
    city_raw = serpy.MethodField()

    def get_admins(self, instance):
        from django.contrib.postgres.aggregates.general import ArrayAgg
        qs = Membership.objects.filter(company_id=instance.id).select_related(
            'user', 'role')
        qs = qs.annotate(arr=ArrayAgg('jobs'))
        return MembershipBasicInfoSerializer(qs, many=True).data

    def get_roles(self, instance):
        return CompanyRolesSerializer(
            instance.roles.filter(company__id=instance.id), many=True).data

    def get_city(self, obj):
        if obj.city:
            return obj.city.pk

    def get_city_raw(self, obj):
        if obj.city:
            return ", ".join([
                obj.city.name,
                obj.city.region.name if obj.city.region else 'NA',
                obj.city.country.name
            ])
Пример #2
0
class JobHistorySerialiser(serpy.Serializer):
    plant = BiogasPlantIDSerialiser()
    fixers = serpy.MethodField()
    accepted_but_did_not_visit = serpy.MethodField()
    rejected_job = serpy.MethodField()
    job_id = serpy.Field()
    date_flagged = serpy.Field()
    date_accepted = serpy.Field()
    date_completed = serpy.Field()
    completed = serpy.Field()
    dispute_raised = serpy.Field()
    job_status = serpy.Field()  # Enum field
    verification_of_engagement = serpy.Field()
    fault_description = serpy.Field()
    other = serpy.Field()
    client_feedback_star = serpy.Field()
    client_feedback_additional = serpy.Field()
    overdue_for_acceptance = serpy.Field()
    priority = serpy.Field()
    fault_class = serpy.Field()
    assistance = serpy.Field()
    description_help_need = serpy.Field()
    reason_abandoning_job = serpy.Field()

    def get_fixers(self, obj):
        return [{"id": ii.id} for ii in obj.fixers.all()]

    def get_rejected_job(self, obj):
        return [{"id": ii.id} for ii in obj.rejected_job.all()]

    def get_accepted_but_did_not_visit(self, obj):
        return [{"id": ii.id} for ii in obj.accepted_but_did_not_visit.all()]
Пример #3
0
class Image(ContextDictSerializer):
    iid = serpy.MethodField(label="@id")

    rtype = StaticField(label="@type", value="dctypes:Image")

    format = StaticField(value="image/jpeg")

    width = serpy.IntField(attr="width_i")

    height = serpy.IntField(attr="height_i")
    service = serpy.MethodField()

    def get_iid(self, obj: SolrResult) -> str:
        cfg = self.context.get('config')
        req = self.context.get('request')

        image_tmpl = cfg['templates']['image_id_tmpl']

        # Images have the suffix "_image" in Solr.
        identifier = re.sub(IMAGE_ID_SUB, "", obj.get("id"))
        return get_identifier(req, identifier, image_tmpl)  # type: ignore

    def get_service(self, obj: SolrResult) -> Dict:
        req = self.context.get('request')
        cfg = self.context.get('config')
        image_tmpl = cfg['templates']['image_id_tmpl']
        identifier = re.sub(IMAGE_ID_SUB, "", obj.get("id"))
        image_id = get_identifier(req, identifier, image_tmpl)  # type: ignore

        return {
            "@context": "http://iiif.io/api/image/2/context.json",
            "profile": "http://iiif.io/api/image/2/level1.json",
            "@id": image_id
        }
Пример #4
0
class Activity(ContextDictSerializer):
    ctx = serpy.MethodField(label="@context")
    id = serpy.MethodField()
    # We only publish Create events (for now...)
    type = StaticField(value="Create")
    end_time = serpy.MethodField(label="endTime")
    object = serpy.MethodField()
    actor = StaticField(value=IIIF_ASTREAMS_ACTOR)

    def get_ctx(
        self, obj: SolrResult
    ) -> Optional[List]:  # pylint: disable-msg=unused-argument
        direct: bool = self.context.get('direct_request', False)
        return IIIF_ASTREAMS_CONTEXT if direct else None

    def get_id(self, obj: SolrResult) -> str:
        req = self.context.get('request')
        cfg = self.context.get('config')
        activity_create_id_tmpl: str = cfg['templates'][
            'activitystream_create_id_tmpl']

        return get_identifier(req, obj.get('id'), activity_create_id_tmpl)

    def get_end_time(self, obj: SolrResult) -> str:
        return obj.get('accessioned_dt')

    def get_object(self, obj: SolrResult) -> Dict:
        req = self.context.get('request')
        cfg = self.context.get('config')

        manifest_tmpl: str = cfg['templates']['manifest_id_tmpl']
        mfid = get_identifier(req, obj.get('id'), manifest_tmpl)
        label: str = obj.get("full_shelfmark_s")

        return {"id": mfid, "type": "Manifest", "name": label}
Пример #5
0
class PostCommentSerializer(ContextSerializer):
    id = serpy.IntField()
    author = serpy.MethodField('get_author')
    post_id = serpy.IntField()
    content = serpy.StrField()
    points = serpy.IntField()
    liked = serpy.MethodField('get_liked')
    disliked = serpy.MethodField('get_disliked')
    replies = serpy.MethodField('get_replies')

    def get_author(self, obj):
        return SimpleProfileSerializer(obj.profile).data

    def get_liked(self, obj):
        request = self.context.get('request')
        if not isinstance(request.user, AnonymousUser):
            return obj.interactions.filter(profile=request.user.profile, interaction=LIKE).count() > 0
        return False

    def get_disliked(self, obj):
        request = self.context.get('request')
        if not isinstance(request.user, AnonymousUser):
            return obj.interactions.filter(profile=request.user.profile, interaction=DISLIKE).count() > 0
        return False

    def get_replies(self, obj):
        query = PostComment.objects.filter(comment=obj).order_by('created')
        return PostCommentSerializer(query, many=True, context=self.context).data
Пример #6
0
class AssetSerializer(serpy.Serializer):
    slug = serpy.Field()
    title = serpy.Field()
    lang = serpy.Field()
    asset_type = serpy.Field()
    visibility = serpy.Field()
    url = serpy.Field()
    readme_url = serpy.Field()
    difficulty = serpy.Field()
    duration = serpy.Field()
    status = serpy.Field()
    graded = serpy.Field()
    gitpod = serpy.Field()
    preview = serpy.Field()
    readme_url = serpy.Field()

    translations = serpy.MethodField()
    technologies = serpy.MethodField()

    def get_translations(self,obj):
        _s = map(lambda t: t.slug, obj.translations.all())
        return _s
    def get_technologies(self,obj):
        _s = map(lambda t: t.slug, obj.technologies.all())
        return _s
Пример #7
0
class QuoteSerializer(SearchableModelSerializer):
    """Serializer for quotes."""

    text = serpy.Field(attr='text.html', required=True)
    bite = serpy.MethodField()
    html = serpy.Field()
    truncated_html = serpy.MethodField()
    attributee_string = serpy.Field()
    has_multiple_attributees = serpy.BoolField()
    attributee_html = serpy.Field()
    date_html = serpy.Field()
    serialized_images = serpy.Field()
    primary_image = serpy.Field()
    serialized_citations = serpy.Field()

    def get_model(self, instance) -> str:  # noqa
        """Return the model name of the instance."""
        return 'quotes.quote'

    def get_bite(self, instance: 'Quote') -> str:
        """Return the user-facing bite HTML."""
        # "bite" is set to truncated text if it does not exist
        # TODO: Add "truncated" field to model to distinguish true bites from auto bites
        return (instance.bite.html if instance.bite else truncatechars_html(
            instance.text, 100))

    def get_truncated_html(self, instance: 'Quote') -> str:
        """Return truncated HTML content"""
        if instance.bite is not None:
            return truncatechars_html(instance.bite, 100)
        else:
            return truncatechars_html(instance.text, 100)
Пример #8
0
class UserMeSerializer(serpy.Serializer):
    """The serializer schema definition."""
    # Use a Field subclass like IntField if you need more validation.
    id = serpy.Field()
    email = serpy.Field()
    first_name = serpy.Field()
    last_name = serpy.Field()
    github = serpy.MethodField()
    profile = ProfileSerializer(required=False)
    roles = serpy.MethodField()
    cohorts = serpy.MethodField()
    date_joined = serpy.Field()

    def get_github(self, obj):
        github = CredentialsGithub.objects.filter(user=obj.id).first()
        if github is None:
            return None
        return GithubSmallSerializer(github).data

    def get_roles(self, obj):
        roles = ProfileAcademy.objects.filter(user=obj.id)
        return ProfileAcademySmallSerializer(roles, many=True).data

    def get_cohorts(self, obj):
        cohorts = CohortUser.objects.filter(user__id=obj.id)
        return GETCohortUserSmallSerializer(cohorts, many=True).data
Пример #9
0
class CompanyBasicInfoSerializer(TBLightSerializer):
    name = serpy.Field()
    slug = serpy.Field()
    size = serpy.Field()
    verified = serpy.Field()
    avatar = serpy.MethodField()
    gravatar_id = serpy.MethodField()
    city_raw = serpy.MethodField()

    def get_avatar(self, instance):
        request = self.context.get('request')
        if request and instance.avatar:
            avatar_url = instance.avatar.url
            return request.build_absolute_uri(avatar_url)

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

    def get_city_raw(self, obj):
        if obj.city:
            return ", ".join([
                obj.city.name,
                obj.city.region.name if obj.city.region else 'NA',
                obj.city.country.name
            ])

    class Meta:
        model = Company
        fields = '__all__'
Пример #10
0
class BaseModelSerializer(serpy.Serializer):

    id = serpy.IntField(label='id')
    created_by = UserSerializer(label='createdBy')
    created_on = serpy_fields.DateTimeField(label='createdOn')
    last_modified_by = UserSerializer(label='lastModifiedBy')
    last_modified_on = serpy_fields.DateTimeField(label='lastModifiedOn')
    deleted_by = UserSerializer(label='deletedBy', required=False)
    deleted_on = serpy_fields.DateTimeField(label='deletedOn', required=False)
    is_deleted = serpy.BoolField(label='isDeleted')

    created_by_id = serpy.MethodField('get_created_by_id', label='createdById')
    last_modified_by_id = serpy.MethodField('get_last_modified_by_id',
                                            label='lastModifiedById')
    deleted_by_id = serpy.MethodField('get_deleted_by_id',
                                      label='deletedById',
                                      required=False)

    def get_created_by_id(self, instance):
        return getattr(instance, 'created_by_id')

    def get_last_modified_by_id(self, instance):
        return getattr(instance, 'last_modified_by_id')

    def get_deleted_by_id(self, instance):
        return getattr(instance, 'deleted_by_id')
Пример #11
0
class TaskListSerializer(ListVoteResourceSerializerMixin, ListWatchedResourceModelSerializer,
                         ListOwnerExtraInfoSerializerMixin, ListAssignedToExtraInfoSerializerMixin,
                         ListStatusExtraInfoSerializerMixin, ListBasicAttachmentsInfoSerializerMixin,
                         serializers.LightSerializer):

    id = serpy.Field()
    user_story = serpy.Field(attr="user_story_id")
    ref = serpy.Field()
    project = serpy.Field(attr="project_id")
    milestone = serpy.Field(attr="milestone_id")
    milestone_slug = serpy.MethodField("get_milestone_slug")
    created_date = serpy.Field()
    modified_date = serpy.Field()
    finished_date = serpy.Field()
    subject = serpy.Field()
    us_order = serpy.Field()
    taskboard_order = serpy.Field()
    is_iocaine = serpy.Field()
    external_reference = serpy.Field()
    version = serpy.Field()
    watchers = serpy.Field()
    is_blocked = serpy.Field()
    blocked_note = serpy.Field()
    tags = serpy.Field()
    is_closed = serpy.MethodField()

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

    def get_is_closed(self, obj):
        return obj.status is not None and obj.status.is_closed
Пример #12
0
class MilestoneListSerializer(ListWatchedResourceModelSerializer,
                              serializers.LightSerializer):
    id = serpy.Field()
    name = serpy.Field()
    slug = serpy.Field()
    owner = serpy.Field(attr="owner_id")
    project = serpy.Field(attr="project_id")
    estimated_start = serpy.Field()
    estimated_finish = serpy.Field()
    created_date = serpy.Field()
    modified_date = serpy.Field()
    closed = serpy.Field()
    disponibility = serpy.Field()
    order = serpy.Field()
    watchers = serpy.Field()
    user_stories = serpy.MethodField("get_user_stories")
    total_points = serpy.MethodField()
    closed_points = serpy.MethodField()

    def get_user_stories(self, obj):
        return UserStoryListSerializer(obj.user_stories.all(), many=True).data

    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

    def get_closed_points(self, obj):
        assert hasattr(obj, "closed_points_attr"
                       ), "instance must have a closed_points_attr attribute"
        return obj.closed_points_attr
Пример #13
0
class EntitySerializer(ModelSerializer):
    """Serializer for entities."""

    name = serpy.Field()
    unabbreviated_name = serpy.Field()
    aliases = serpy.Field()
    birth_date = serpy.MethodField('get_serialized_birth_date')
    death_date = serpy.MethodField('get_serialized_death_date')
    description = serpy.Field(attr='description.html', required=False)
    serialized_images = serpy.Field()
    categorizations = CategorizationSerializer(many=True,
                                               attr='categorizations.all',
                                               call=True)

    def get_model(self, instance) -> str:  # noqa
        """Return the model name of the instance."""
        return f'entities.{instance.__class__.__name__.lower()}'

    def get_serialized_birth_date(self, instance: 'Entity'):
        """Return the entity's birth date, serialized."""
        return instance.birth_date.serialize() if instance.birth_date else None

    def get_serialized_death_date(self, instance: 'Entity'):
        """Return the entity's death date, serialized."""
        return instance.death_date.serialize() if instance.death_date else None
Пример #14
0
class BiosampleArtifactSerializer(ArtifactSerializer):
    central_sample_id = serpy.StrField()
    sample_type_collected = serpy.StrField()
    sample_type_received = serpy.StrField(attr="sample_type_current")
    swab_site = serpy.StrField(attr="sample_site")

    # metadata

    # Collection stuff
    def serialize_collection_collection_date(self, biosample):
        if biosample.created and biosample.created.collection_date:
            return biosample.created.collection_date.isoformat()

    def serialize_collection_received_date(self, biosample):
        if biosample.created and biosample.created.received_date:
            return biosample.created.received_date.isoformat()

    def translate_adm1(self, biosample):
        value = biosample.created.collection_location_adm1
        countries = {
            "UK-ENG": "England",
            "UK-WLS": "Wales",
            "UK-SCT": "Scotland",
            "UK-NIR": "Northern_Ireland",
        }
        if value in countries:
            return countries[value]
        return value

    collection_date = serpy.MethodField('serialize_collection_collection_date')
    received_date = serpy.MethodField('serialize_collection_received_date')

    submission_user = serpy.StrField(attr='created.submission_user.username')
    submission_org = serpy.StrField(attr='created.submission_org.name')
    submission_org_code = serpy.StrField(attr='created.submission_org.code')
    submission_org_lab_or_name = serpy.MethodField('serialize_org_lab_or_name')

    source_sex = serpy.StrField(attr="created.source_sex", required=False)
    source_age = serpy.IntField(attr="created.source_age", required=False)

    collected_by = None

    adm0 = serpy.StrField(attr="created.collection_location_country")
    adm1 = serpy.StrField(attr="created.collection_location_adm1")
    adm1_trans = serpy.MethodField('translate_adm1')
    adm2 = serpy.StrField(attr="created.collection_location_adm2")
    adm2_private = None

    supplement_coguk = serpy.MethodField('serialize_coguk_supp')

    def serialize_org_lab_or_name(self, collection):
        if collection.created.submission_org.gisaid_lab_name:
            return collection.created.submission_org.gisaid_lab_name
        else:
            return collection.created.submission_org.name

    def serialize_coguk_supp(self, biosample):
        if hasattr(biosample.created, "coguk_supp"):
            return COGUK_BiosourceSamplingProcessSupplementSerializer(
                biosample.created.coguk_supp).data
Пример #15
0
class SimplePostSerializer(ContextSerializer):
    id = serpy.IntField()
    author = serpy.MethodField('get_author')
    title = serpy.StrField()
    content = serpy.StrField()
    points = serpy.IntField()
    liked = serpy.MethodField('get_liked')
    disliked = serpy.MethodField('get_disliked')

    def get_author(self, obj):
        return SimpleProfileSerializer(obj.profile).data

    def get_liked(self, obj):
        request = self.context.get('request')
        if not isinstance(request.user, AnonymousUser):
            return obj.interactions.filter(profile=request.user.profile,
                                           interaction=LIKE).count() > 0
        return False

    def get_disliked(self, obj):
        request = self.context.get('request')
        if not isinstance(request.user, AnonymousUser):
            return obj.interactions.filter(profile=request.user.profile,
                                           interaction=DISLIKE).count() > 0
        return False
Пример #16
0
class BiogasPlantSerialiser(serpy.Serializer):
    id = serpy.Field()
    plant_id = serpy.Field()
    biogas_plant_name = serpy.Field()
    #constructing_technicians = serpy.Field()
    contact = serpy.MethodField()
    UIC = serpy.Field()
    funding_source_notes = serpy.Field()
    other_address_details = serpy.Field()
    type_biogas = serpy.Field()
    supplier = serpy.Field()
    volume_biogas = serpy.Field()
    location_estimated = serpy.Field()
    location = serpy.MethodField()
    QP_status = serpy.Field()
    current_status = serpy.Field()
    notes = serpy.Field()

    def get_location(self, obj):
        return to_serializable(obj.location)

    def get_contact(self, obj):
        return [{
            "first_name": ii.first_name,
            "surname": ii.surname,
            "mobile": ii.mobile
        } for ii in obj.contact.all()]
Пример #17
0
class RelationshipQuestionSerializer(serpy.Serializer):
    id = serpy.Field()
    questions_relations = serpy.MethodField()
    when_answer = serpy.MethodField()
    questions_redirect = serpy.MethodField()

    def get_questions_relations(self, obj):
        if obj.questions_relations is not None:
            array_question_relation = {
                'id_question_relation': obj.questions_relations.pk,
                'page_question_relation': obj.questions_relations.pages,
                'position_question_relation': obj.questions_relations.position,
            }
            return array_question_relation

    def get_when_answer(self, obj):
        if obj.when_answer is not None:
            array_when_answer = {
                'id_array_when': obj.when_answer.pk,
                'name_when_answer': obj.when_answer.name_answer,
            }
            return array_when_answer

    def get_questions_redirect(self, obj):
        if obj.questions_redirect is not None:
            array_question_redirect = {
                'id_question_redirect': obj.questions_redirect.pk,
                'page_question_redirect': obj.questions_redirect.pages,
                'position_question_redirect': obj.questions_redirect.position,
            }
            return array_question_redirect
Пример #18
0
class AnswersOptionsSerializer(serpy.Serializer):
    survey = serpy.MethodField('survey_main')
    survey_question = QuestionSerializer()
    ansewrs_options = serpy.MethodField()

    def survey_main(self, obj):
        if obj.survey_question is not None:
            list_response = []
            array = {
                "id": obj.survey_question.survey_id,
                "title": obj.survey_question.survey.title,
                "descripcion": obj.survey_question.survey.descripcion
            }
            list_response.append(array)
            return list_response

    def get_ansewrs_options(self, obj):
        if obj.ansewrs_options is not None:
            list_response = []
            for a in obj.ansewrs_options.all():
                array = {
                    'id_answer': a.pk,
                    'name_Answerer': a.name_answer,
                    'position_answer': a.position,
                }
                list_response.append(array)
            return list_response
Пример #19
0
class BaseAnnotation(ContextDictSerializer):
    ctx = serpy.MethodField(
        label="@context"
    )
    aid = serpy.MethodField(
        label="id"
    )

    itype = StaticField(
        label="type",
        value="Annotation"
    )
    target = serpy.MethodField()
    body = serpy.MethodField()

    def get_aid(self, obj: SolrResult) -> str:
        req = self.context.get('request')
        cfg = self.context.get('config')
        annotation_tmpl: str = cfg['templates']['annotation_id_tmpl']

        # The substitution here is only needed for image annotations, but won't affect other annotations
        annotation_id: str = re.sub(IMAGE_ID_SUB, "", obj.get("id"))

        return get_identifier(req, annotation_id, annotation_tmpl)

    @abstractmethod
    def get_body(self, obj: SolrResult) -> Union[List[Dict], Dict]:
        """
        Get the body of this annotation - either an Image or a representation of the text for a text annotation
        :param obj:
        :return:
        """

    def get_ctx(self, obj: SolrResult) -> Optional[List]:  # pylint: disable-msg=unused-argument
        """
        If the resource is requested directly (instead of embedded in a manifest)
        return the context object; otherwise it will inherit the context of the parent.

        Note that the 'direct_request' context object is not passed down to children,
        so it will only appear in a top-level object.
        :param obj: Dictionary object to be serialized
        :return: List containing the appropriate context objects.
        """
        direct_request: bool = self.context.get('direct_request')
        return IIIF_V3_CONTEXT if direct_request else None

    def get_target(self, obj: SolrResult) -> str:
        """
        This method may be overridden in subclasses to e.g. reference a specific region of the canvas
        :param obj: A Solr Result object
        :return: the uri for the canvas this annotation is attached to
        """
        req = self.context.get('request')
        cfg = self.context.get('config')
        canvas_tmpl: str = cfg['templates']['canvas_id_tmpl']

        identifier: str = re.sub(SURFACE_ID_SUB, "", obj['surface_id'])
        return get_identifier(req, identifier, canvas_tmpl)
Пример #20
0
class Sequence(ContextDictSerializer):
    ctx = serpy.MethodField(
        label="@context"
    )
    sid = serpy.MethodField(
        label="@id"
    )
    stype = StaticField(
        label="@type",
        value="sc:Sequence"
    )
    label = StaticField(
        value="Default"
    )
    canvases = serpy.MethodField()

    def get_ctx(self, obj: SolrResult) -> Optional[str]:  # pylint: disable-msg=unused-argument
        direct_request: bool = self.context.get('direct_request')
        return IIIF_V2_CONTEXT if direct_request else None

    def get_sid(self, obj: Dict) -> str:
        req = self.context.get('request')
        cfg = self.context.get('config')
        obj_id = obj.get('id')
        sequence_tmpl = cfg['templates']['sequence_id_tmpl']

        return get_identifier(req, obj_id, sequence_tmpl)

    def get_canvases(self, obj: SolrResult) -> Optional[Dict]:
        req = self.context.get('request')
        cfg = self.context.get('config')
        obj_id = obj.get('id')

        # Check if the canvases have annotations. We don't actually
        # need to retrieve them, just get the number of hits.
        has_annotations_res = SolrConnection.search(
            "*:*",
            fq=["type:annotationpage", f"object_id:{obj_id}"],
            rows=0
        )
        has_annotations = has_annotations_res.hits > 0

        manager: SolrManager = SolrManager(SolrConnection)
        fq = ["type:surface", f"object_id:{obj_id}"]
        sort = "sort_i asc"
        fl = ["*,[child parentFilter=type:surface childFilter=type:image]"]
        rows: int = 100
        manager.search("*:*", fq=fq, fl=fl, sort=sort, rows=rows)

        if manager.hits == 0:
            return None

        return Canvas(manager.results, context={'request': req,
                                                'config': cfg,
                                                'has_annotations': has_annotations}, many=True).data
Пример #21
0
class UserStoryListSerializer(ListVoteResourceSerializerMixin,
                              ListWatchedResourceModelSerializer,
                              OwnerExtraInfoMixin, AssigedToExtraInfoMixin,
                              StatusExtraInfoMixin,
                              serializers.LightSerializer):

    id = serpy.Field()
    ref = serpy.Field()
    milestone = serpy.Field(attr="milestone_id")
    milestone_slug = serpy.MethodField()
    milestone_name = serpy.MethodField()
    project = serpy.Field(attr="project_id")
    is_closed = serpy.Field()
    points = serpy.MethodField()
    backlog_order = serpy.Field()
    sprint_order = serpy.Field()
    kanban_order = serpy.Field()
    created_date = serpy.Field()
    modified_date = serpy.Field()
    finish_date = serpy.Field()
    subject = serpy.Field()
    client_requirement = serpy.Field()
    team_requirement = serpy.Field()
    generated_from_issue = serpy.Field(attr="generated_from_issue_id")
    external_reference = serpy.Field()
    tribe_gig = serpy.Field()
    version = serpy.Field()
    watchers = serpy.Field()
    is_blocked = serpy.Field()
    blocked_note = serpy.Field()
    tags = serpy.Field()
    total_points = serpy.Field("total_points_attr")
    comment = serpy.MethodField("get_comment")
    origin_issue = ListOriginIssueSerializer(attr="generated_from_issue")

    def to_value(self, instance):
        self._serialized_status = {}
        return super().to_value(instance)

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

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

    def get_points(self, obj):
        if obj.role_points_attr is None:
            return {}

        return dict(ChainMap(*json.loads(obj.role_points_attr)))

    def get_comment(self, obj):
        return ""
Пример #22
0
class LineGroupSerializer(GenericSerializer):
    lines = serpy.MethodField(display_none=False)
    main_line = serpy.MethodField(display_none=False)
    comments = CommentSerializer(many=True)

    def get_lines(self, obj):
        return LineSerializer(obj.lines, many=True, display_none=False).data

    def get_main_line(self, obj):
        if obj.HasField(str('main_line')):
            return LineSerializer(obj.main_line).data
        else:
            return None
Пример #23
0
class JobMembersSerializer(TBLightSerializer):
    role_name = serpy.MethodField()
    role_slug = serpy.MethodField()
    full_name = serpy.MethodField()
    is_user_active = serpy.MethodField()
    invited_by = serpy.MethodField()
    view_all_jobs = serpy.MethodField()
    is_admin = serpy.Field()
    # is_owner = serpy.MethodField()
    avatar = serpy.MethodField()
    email = serpy.MethodField()
    uuid = serpy.MethodField()
    user = UserBasicInfoSerializer()

    def get_view_all_jobs(self, obj):
        return obj.role.inherit_permissions if obj.role else False

    def get_invited_by(self, obj):
        if obj.invited_by:
            return UserBasicInfoSerializer(obj.invited_by).data

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

    def get_role_slug(self, obj):
        return obj.role.slug 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_email(self, obj):
        return obj.user.email

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

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

    def get_uuid(self, obj):
        return obj.user.uuid

    # def get_is_owner(self, obj):
    #     return (obj and obj.user_id and obj.company_id and obj.company.owner_id and
    #             obj.user_id == obj.company.owner_id)

    class Meta:
        model = get_model('company', 'Membership')
        fields = ('role_slug', 'role_name', 'full_name', 'is_user_active',
                  'invited_by')
Пример #24
0
class CategorizationSerializer(serpy.Serializer):
    """Serializer for Entity-Category relationship."""

    category = CategorySerializer()
    start_date = serpy.MethodField('get_serialized_start_date')
    end_date = serpy.MethodField('get_serialized_end_date')

    def get_serialized_start_date(self, instance: 'Entity'):
        """Return the entity's birth date, serialized."""
        return instance.date.serialize() if instance.date else None

    def get_serialized_end_date(self, instance: 'Entity'):
        """Return the entity's death date, serialized."""
        return instance.end_date.serialize() if instance.end_date else None
Пример #25
0
class CreditCardSerializers(serpy.Serializer):
    """
        this class converts the data of the weedmatch user's credit card into json
    """
    id = serpy.Field()
    first_name = serpy.Field()
    last_name = serpy.Field()
    type_card = serpy.Field()
    number_card = serpy.MethodField()
    month = serpy.MethodField()
    year = serpy.MethodField()

    def get_number_card(self, obj):
        """
            this method obtain the last fourth digits of credit card number

            :param obj: credit card  object
            :type obj: Model CreditCard
            :return: The last fourth digits of credit card number
        """
        if not obj.number_card:
            return ""
        return obj.number_card[-4:]

    def get_month(self, obj):
        """
            This method obtain the month of expiration credit card

            :param obj: credit card  object.
            :type obj: Model CreditCard.
            :return: The month of expiration date
        """
        if not obj.date_expiration:
            return ""
        month = str(obj.date_expiration)
        return month[5:7]

    def get_year(self, obj):
        """
            This method obtain the year of expiration credit card

           :param obj: credit card  object.
           :type obj: Model CreditCard.
           :return: The year of expiration date
        """
        if not obj.date_expiration:
            return ""
        month = str(obj.date_expiration)
        return month[2:4]
Пример #26
0
class ImagePublicSerializer(serpy.Serializer):
    id = serpy.Field()
    like = serpy.Field()
    image = serpy.MethodField()
    comment = serpy.MethodField()

    def get_image(self, obj):
        if not obj.image:
            return str(obj.image)
        return settings.URL+settings.MEDIA_URL+str(obj.image)

    def get_comment(self, obj):
        if not obj.state:
            return ""
        return obj.state
Пример #27
0
class MembershipDetailedSerializer(MembershipSerializer):
    abilities = serpy.MethodField()
    jobs = serpy.MethodField()

    def get_abilities(self, obj):
        return obj.role.permissions

    def get_jobs(self, obj):
        if hasattr(obj, 'job_ids'):
            return obj.job_ids
        return obj.jobs.all().values_list('id', flat=True)

    def get_company(self, obj):
        return CompanyDetailedInfoSerializer(instance=obj.company,
                                             context=self.context).data
Пример #28
0
class TaskSerializer(BaseProjectEntitySerializer, BaseModelSerializer):

    project = ProjectSerializer(label='project', required=False)
    project_id = serpy.MethodField('get_project_id',
                                   label='projectId',
                                   required=False)
    priority = serpy.StrField(label='priority')
    priority_full = serpy.MethodField('get_priority_full',
                                      label='priorityFull')

    def get_priority_full(self, instance):
        return instance.get_priority_display()

    def get_project_id(self, instance):
        return getattr(instance, 'project_id')
Пример #29
0
class NetworkSerializer(GenericSerializer):
    lines = serpy.MethodField(display_none=False)
    links = LinkSerializer(attr='impact_uris')
    codes = CodeSerializer(many=True, display_none=False)

    def get_lines(self, obj):
        return LineSerializer(obj.lines, many=True, display_none=False).data
Пример #30
0
class ContentTypeSerializer(BaseSerializer):

    name = serpy.StrField()
    is_first_party = serpy.BoolField()
    client_type = serpy.StrField()
    auth_call_back_urls = serpy.StrField(required=False)
    web_origins = serpy.StrField(required=False)
    client_secret = serpy.MethodField()
    client_id = serpy.StrField(required=False)
    description = serpy.StrField(required=False)
    organization_id = serpy.StrField()
    #tenant_id = serpy.StrField()
    is_confidential = serpy.BoolField(required=False)

    class Meta:
        read_protected_fields = ('client_secret', )
        write_protected_fields = (
            'client_id',
            'id',
            'is_confidential',
            'created_at',
            'updated_at',
        )

    def get_client_secret(self, obj):
        client_type = obj.get("client_type")
        if client_type == 'spa':
            return None

        key = jwk.JWK.generate(kty='oct', size=256)
        return json.loads(key.export()).get("k")