예제 #1
0
class UserSerializer(BaseSerializer):

    organization_id = serpy.StrField(
        required=False
    )  #when given , we assume we are adding another organization member.
    email = serpy.StrField(required=False)
    phone_number = serpy.StrField(required=False)

    first_name = serpy.StrField(required=False)
    last_name = serpy.StrField(required=False)

    email_is_confirmed = serpy.BoolField(required=False)
    phone_number_is_confirmed = serpy.BoolField(required=False)
    is_active = serpy.BoolField(required=False)
    is_staff = serpy.BoolField(required=False)
    is_super_user = serpy.BoolField(required=False)
    full_name = serpy.MethodField()

    def get_full_name(self, obj):
        return "%s %s" % (obj.get("first_name"), obj.get("last_name"))

    class Meta:

        read_protected_fields = ('password', )
        write_protected_fields = ('full_name', )
예제 #2
0
class LoginUserSerializer(BaseSerializer):
    """ for use in getting access token"""

    host_name = serpy.StrField()  # the domain and port of the tenant
    email = serpy.StrField(required=False)
    phone_number = serpy.StrField(required=False)
    password = serpy.StrField()
예제 #3
0
class LoginUserSerializer(BaseSerializer):
    """ for use in getting access token"""

    client_id = serpy.StrField()
    email = serpy.StrField(required=False)
    phone_number = serpy.StrField(required=False)
    password = serpy.StrField()
예제 #4
0
class TenantSerializer(BaseSerializer):
    
    name = serpy.StrField()
    is_super_tenant = serpy.BoolField()
    application_id = serpy.StrField()
    host_name = serpy.StrField()
    business_mode = serpy.StrField()  #B2B or B2C
예제 #5
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
예제 #6
0
    class Serializer(db.Model.Serializer):
        uuid = serpy.StrField()
        title = serpy.StrField()
        short_description = serpy.StrField()
        duration_in_weeks = serpy.IntField()

        goals = Goal.Serializer(many=True)
예제 #7
0
class TeamUserSerializer(BaseSerializer):
    first_name = serpy.StrField()
    last_name = serpy.StrField()
    email = serpy.StrField()
    full_name = serpy.MethodField()

    def get_full_name(self, obj):
        return "%s %s" % (obj.get("first_name"), obj.get("last_name"))
예제 #8
0
class MAGSerializerA(serpy.Serializer):
    id = serpy.StrField()
    name = serpy.StrField()
    group_kind = serpy.StrField()
    group_path = serpy.StrField(required=False)
    artifacts = MAGArtifactSerializer(many=True,
                                      attr="tagged_artifacts.all",
                                      call=True)
예제 #9
0
class SearchableModelSerializer(ModelSerializer):
    """Base serializer for searchable models."""

    slug = serpy.StrField()
    tags_html = serpy.StrField()
    absolute_url = serpy.StrField()
    admin_url = serpy.StrField()
    verified = serpy.BoolField()
예제 #10
0
class SerpyProductSerializer(serpy.Serializer):
    seller = serpy.StrField()
    category = serpy.StrField()
    title = serpy.StrField()
    price = serpy.FloatField()
    image = serpy.StrField()
    description = serpy.StrField()
    quantity = serpy.IntField()
    views = serpy.IntField()
예제 #11
0
class SourceSerializer(SearchableModelSerializer):
    """Serializer for sources."""

    citation_html = serpy.StrField()
    title = serpy.StrField()

    def get_model(self, instance) -> str:  # noqa
        """Return the model name of the instance."""
        return 'sources.source'
예제 #12
0
class MAGSerializer(serpy.Serializer):
    id = serpy.StrField()
    name = serpy.StrField()
    group_kind = serpy.StrField()
    group_path = serpy.StrField(required=False)
    parent_group = MAGSerializerLite()
    root_group = MAGSerializerLite()
    children = MAGSerializerA(many=True, attr="children.all", call=True)
    hlinks = MAGSerializerA(many=True, attr="groups.all", call=True)
    slinks = MAGLinkSerializer(many=True, attr="out_glinks.all", call=True)
예제 #13
0
class BaseSerializer(serpy.DictSerializer):

    id = serpy.StrField(required=False)
    created_at = serpy.StrField(required=False)
    updated_at = serpy.StrField(required=False)

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

    def __is_valid(self, internal=False):
        try:
            self.data  #this raises exception if data required is not given
            return True
        except KeyError as ke:
            if internal:
                raise KeyError
            raise falcon.HTTPBadRequest(
                title="Missing Request Parameters",
                description="{field} is a required field".format(field=ke))

    def __remove_from_data(self, fields, data):
        for k in list(data.keys()):
            if k in fields:
                del data[k]

        return data

    def protect_data(self, protected_fields, data):
        try:
            #clean remove read protextect fields
            self.__remove_from_data(fields=protected_fields, data=data)

        except AttributeError:
            #probably data is list of dicts
            for d in data:
                self.__remove_from_data(fields=protected_fields, data=d)

        return data

    @property
    def valid_read_data(self):
        if self.__is_valid():
            valid_data = self.protect_data(
                protected_fields=self.Meta.read_protected_fields,
                data=self.data)
            return valid_data

    @property
    def valid_write_data(self):
        if self.__is_valid():
            valid_data = self.protect_data(
                protected_fields=self.Meta.write_protected_fields,
                data=self.data)
            return valid_data
예제 #14
0
class AuthTokenSerializer(serpy.Serializer):

    id = serpy.IntField(attr='id', required=True)

    token = serpy.StrField(attr='token', required=True)

    user = UserSerializer()

    created_at = serpy.StrField(attr='created_at', required=False)

    expiration_date = serpy.StrField(attr='expiration_date', required=False)
예제 #15
0
class AnimalCaseSerializer(serpy.Serializer):
    case_count = serpy.IntField()
    disease = serpy.MethodField()
    district = serpy.StrField()
    village = serpy.StrField()
    morbidity_rate = serpy.FloatField()
    mortality_rate = serpy.FloatField()
    fatality_rate = serpy.FloatField()

    def get_disease(self, obj):
        return {'name': obj.disease.name, 'urgent': obj.disease.urgent}
예제 #16
0
class RolePermissionSerializer(BaseSerializer):
    content_type_display_name = serpy.StrField()
    content_type_code_name = serpy.StrField()
    display_name = serpy.StrField()
    code_name = serpy.StrField()
    direction = serpy.StrField()
    label = serpy.MethodField()

    def get_label(self, obj):
        return "{0} {1}".format(obj.get("display_name"),
                                obj.get("content_type_display_name"))
예제 #17
0
class BaseProjectEntitySerializer(serpy.Serializer):

    name = serpy.StrField(label='name')
    description = serpy.StrField(label='description')
    start_date = serpy_fields.DateField(label='startDate')
    end_date = serpy_fields.DateField(label='endDate')
    status = serpy.StrField(label='status')
    duration = serpy.MethodField('get_duration', label='duration')

    def get_duration(self, instance):
        return ''
예제 #18
0
class SnapshotSerializer(serpy.Serializer):

    id = serpy.StrField()
    volume_id = serpy.StrField()
    status = serpy.StrField()
    progress = serpy.StrField()
    start_time = serpy.StrField()
    owner_id = serpy.StrField()
    owner_alias = serpy.StrField()
    volume_size = serpy.StrField()
    description = serpy.StrField()
    encrypted = serpy.StrField()
예제 #19
0
class FlatCommentSerializer(serpy.DictSerializer):
    id = serpy.IntField()
    parent_id = serpy.IntField(required=False)
    content_type_id = serpy.IntField()
    object_id = serpy.IntField()
    created_at_str = serpy.StrField()
    content = serpy.StrField()
    level = serpy.IntField()
    author = serpy.MethodField()

    def get_author(self, obj):
        return FlatCommentAuthorSerializer(obj).data
예제 #20
0
class PhotoSuperSimpleSerializerWithAddedOn(serpy.Serializer):
    image_hash = serpy.StrField()
    favorited = serpy.BoolField()
    public = serpy.BoolField()
    hidden = serpy.BoolField()
    exif_timestamp = DateTimeField()
    added_on = DateTimeField()
예제 #21
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
예제 #22
0
class SimpleProfileSerializer(serpy.Serializer):
    id = serpy.IntField()
    avatar = serpy.MethodField('get_avatar')
    display = serpy.StrField()

    def get_avatar(self, obj):
        return obj.avatar.url if obj.avatar else None
예제 #23
0
class SubS(serpy.Serializer):
    w = serpy.IntField()
    x = serpy.MethodField()
    y = serpy.StrField()
    z = serpy.IntField()

    def get_x(self, obj):
        return obj.x + 10
예제 #24
0
class SettingsSerializer(serpy.Serializer):
    id = serpy.IntField()
    break_type = serpy.StrField()
    break_duration = serpy.IntField()
    round_time = serpy.IntField()
    calculate_overtime = serpy.BoolField()
    overtime_hours = serpy.IntField()
    overtime_minutes = serpy.IntField()
예제 #25
0
class BatchSerializer(serpy.Serializer):
    id = serpy.Field()
    location = LocationSerializer()
    start_datetime = serpy.Field()
    completed_datetime = serpy.Field()

    start_timestamp = serpy.IntField()
    completed_timestamp = serpy.IntField()
    time_taken = serpy.IntField()
    total_bots = serpy.IntField()
    external_ip = serpy.StrField()
    status = serpy.StrField()
    video_list_size = serpy.IntField()
    server_hostname = serpy.StrField()
    server_container = serpy.StrField()
    synced = serpy.BoolField()
    processed = serpy.BoolField()
예제 #26
0
class CollectionCollection(ContextDictSerializer):
    """
        Serializes a collection object for use in a nested collection.
    """
    cid = serpy.MethodField(label="@id")
    ctype = StaticField(label="@type", value="sc:Collection")
    label = serpy.StrField(attr="name_s")
    description = serpy.StrField(attr="description_s")

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

        tmpl: str = cfg['templates']['collection_id_tmpl']
        cid: str = obj.get('collection_id')

        return get_identifier(req, cid, tmpl)
예제 #27
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")
예제 #28
0
class SharedPhotoSuperSimpleSerializer(serpy.Serializer):
    image_hash = serpy.StrField()
    favorited = serpy.BoolField()
    public = serpy.BoolField()
    hidden = serpy.BoolField()
    exif_timestamp = DateTimeField()
    owner = SimpleUserSerializer()
    shared_to = SimpleUserSerializer(
        many=True, call=True, attr='shared_to.all')
예제 #29
0
class COGUK_BiosourceSamplingProcessSupplementSerializer(serpy.Serializer):
    is_surveillance = serpy.BoolField(required=False)
    is_hcw = serpy.BoolField(required=False)
    employing_hospital_name = serpy.StrField(required=False)
    employing_hospital_trust_or_board = serpy.StrField(required=False)
    is_hospital_patient = serpy.BoolField(required=False)
    is_icu_patient = serpy.BoolField(required=False)
    admission_date = serpy.MethodField('serialize_admission_date')
    admitted_hospital_name = serpy.StrField(required=False)
    admitted_hospital_trust_or_board = serpy.StrField(required=False)
    is_care_home_worker = serpy.BoolField(required=False)
    is_care_home_resident = serpy.BoolField(required=False)
    anonymised_care_home_code = serpy.StrField(required=False)
    admitted_with_covid_diagnosis = serpy.BoolField(required=False)

    def serialize_admission_date(self, supp):
        if supp.admission_date:
            return supp.admission_date.isoformat()
예제 #30
0
class TaskCommentAttachmentSerializer(BaseModelSerializer):

    task_comment = TaskCommentSerializer(label='taskComment')
    attachment = serpy.MethodField('get_attachment_url', label='attachment')
    attachment_type = serpy.StrField(label='attachmentType')

    def get_attachment_url(self, instance):
        try:
            return '{0}{1}'.format(settings.BACKEND_URL,
                                   instance.attachment.url)
        except Exception as e:
            print(e)