Beispiel #1
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
Beispiel #2
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
Beispiel #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
        }
Beispiel #4
0
class MetricSerializer_Mapping(MetricSerializer):
    num_pos = serpy.IntField(required=False)
    num_maps = serpy.IntField(required=False)
    num_unmaps = serpy.IntField(required=False)
    median_cov = serpy.FloatField(required=False)
    mean_cov = serpy.FloatField(required=False)
    pc_pos_cov_gte10 = serpy.FloatField(required=False)
    pc_pos_cov_gte20 = serpy.FloatField(required=False)
Beispiel #5
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()
Beispiel #6
0
class ProgramSerializer(serpy.Serializer):
    id = serpy.IntField()
    program_name = serpy.Field()
    program_product = ProductSerializer()
    program_client = ClientSerializer()
    program_start_date = serpy.Field()
    program_end_date = serpy.Field()
    program_total_amount = serpy.IntField()
Beispiel #7
0
class ClientSerializer(serpy.Serializer):
    id = serpy.IntField()
    client_name = serpy.Field()
    client_first_name = serpy.Field()
    client_last_name = serpy.Field()
    client_address = serpy.Field()
    client_email = serpy.Field()
    client_phone_number = serpy.IntField()
Beispiel #8
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
Beispiel #9
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()
Beispiel #10
0
class ContainmentSerializer(ModelSerializer):
    """Serializer for source containments."""

    phrase = serpy.Field()
    page_number = serpy.IntField()
    end_page_number = serpy.IntField()
    container = SourceSerializer()

    def get_model(self, instance) -> str:  # noqa
        """Return the model name of the instance."""
        return 'sources.sourcecontainment'
Beispiel #11
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
Beispiel #12
0
class ImageSerializer(SearchableModelSerializer):
    """Serializer for images."""

    src_url = serpy.StrField()
    width = serpy.IntField()
    height = serpy.IntField()
    caption_html = serpy.Field()
    provider_string = serpy.Field()
    bg_img_position = serpy.Field()

    def get_model(self, instance) -> str:  # noqa
        """Return the model name of the instance."""
        return 'images.image'
Beispiel #13
0
class SubAdministrativeRegionField(serpy.DictSerializer):
    id = jsonschema.Field(schema_type=str)
    insee = jsonschema.Field(schema_type=str)
    name = jsonschema.Field(schema_type=str, attr="label")
    label = jsonschema.Field(schema_type=str)
    level = serpy.IntField()
    coord = jsonschema.MethodField()
    zip_code = jsonschema.MethodField()

    def get_coord(self, obj):
        lat = value_by_path(obj, 'coord.lat')
        lon = value_by_path(obj, 'coord.lon')
        res = {'lat': None, 'lon': None}
        if lon and lat:
            res.update({'lat': str(lat), 'lon': str(lon)})
        return res

    def get_zip_code(self, obj):
        zip_codes = obj.get('zip_codes', [])
        if all(zip_code == "" for zip_code in zip_codes):
            return None
        elif len(zip_codes) == 1:
            return zip_codes[0]
        else:
            return '{}-{}'.format(min(zip_codes), max(zip_codes))
Beispiel #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
Beispiel #15
0
class AlbumDateListWithPhotoHashSerializer(serpy.Serializer):
    #     photos = PhotoSuperSimpleSerializer(many=True, call=True, attr='ordered_photos')
    photos = PhotoSuperSimpleSerializer(
        many=True, call=True, attr='photos.all')
    location = serpy.Field()
    id = serpy.IntField()
    date = DateTimeField()
class VehicleSalesSerializer(serpy.Serializer):
    seller_id = serpy.IntField()
    seller_type = serpy.Field()
    buyer_id = serpy.IntField()
    buyer_type = serpy.Field()
    car_class = serpy.Field()
    vin = serpy.Field()
    price = serpy.FloatField()
    created_at = serpy.Field()
    id = serpy.IntField()
    car_class = serpy.MethodField()


    def get_car_class(self, obj):
        serialized = CarClassSerializer(obj.car_class)
        return serialized.data
Beispiel #17
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
Beispiel #18
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)
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')
Beispiel #20
0
class CardSerializerNoPending(serpy.Serializer):
    id = serpy.IntField()
    user = NestedUserDetail()
    card_template = NestedTemplate()
    value = serpy.Field()
    position = serpy.Field()
    created = serpy.Field()
    updated = serpy.Field()
Beispiel #21
0
class TimeCardsSerializer(serpy.Serializer):
    id = serpy.IntField()
    entry_date = CustomDateField()
    time_in = CustomTimeField()
    time_out = CustomTimeField()
    break_time = CustomTimeField()
    total_time = CustomTimeField()
    pay = serpy.FloatField()
Beispiel #22
0
class CardTemplateSerializer(serpy.Serializer):
    id = serpy.IntField()
    name = serpy.Field()
    title = serpy.Field()
    description = serpy.Field()
    card_type = serpy.Field()
    entity_type = serpy.Field()
    image = serpy.Field()
Beispiel #23
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()
Beispiel #24
0
class NestedPendingAction(serpy.Serializer):
    id = serpy.IntField()
    is_complete = serpy.Field()
    entity_type = serpy.Field()
    message = serpy.Field()
    alert_type = serpy.Field()
    created = serpy.Field()
    updated = serpy.Field()
Beispiel #25
0
class AddressSerializer(serpy.Serializer):
    """The serializer schema definition."""
    # Use a Field subclass like IntField if you need more validation.
    id = serpy.IntField()
    country = serpy.Field()
    continent = serpy.Field()
    region = serpy.Field()
    district = serpy.Field()
    ward = serpy.Field()
    village = serpy.Field()
    population = serpy.Field()
Beispiel #26
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}
Beispiel #27
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)
Beispiel #28
0
def get_serpy_type(model_field_type):
    model_serpy_map = {
        models.AutoField: serpy.IntField(required=False),
        models.BigIntegerField: serpy.IntField(required=False),
        models.BooleanField: serpy.BoolField(required=False),
        models.CharField: serpy.StrField(required=False),
        models.CommaSeparatedIntegerField: serpy.StrField(required=False),
        models.DateField: serpy.StrField(required=False),
        models.DateTimeField: serpy.StrField(required=False),
        models.DecimalField: serpy.FloatField(required=False),
        models.EmailField: serpy.StrField(required=False),
        models.Field: serpy.StrField(required=False),
        models.FileField: serpy.StrField(required=False),
        models.FloatField: serpy.FloatField(required=False),
        models.ImageField: serpy.StrField(required=False),
        models.IntegerField: serpy.IntField(required=False),
        models.NullBooleanField: serpy.StrField(required=False),
        models.PositiveIntegerField: serpy.IntField(required=False),
        models.PositiveSmallIntegerField: serpy.IntField(required=False),
        models.SlugField: serpy.StrField(required=False),
        models.SmallIntegerField: serpy.IntField(required=False),
        models.TextField: serpy.StrField(required=False),
        models.TimeField: serpy.StrField(required=False),
        models.URLField: serpy.StrField(required=False),
        models.GenericIPAddressField: serpy.StrField(required=False),
        models.FilePathField: serpy.StrField(required=False),
        models.ForeignKey: ForeignKeyField(),
        models.fields.reverse_related.ManyToOneRel: ForeignKeyField(),
        models.OneToOneField: ForeignKeyField(),
        models.fields.related.ManyToManyField: ForeignKeyField(),
        JSONField: serpy.StrField(required=False),
    }
    return model_serpy_map[model_field_type]
Beispiel #29
0
class APISerializer(BaseSerializer):

    name = serpy.StrField()
    is_default = serpy.BoolField()
    uri = serpy.StrField()
    description =  serpy.StrField(required=False)
    token_lifetime = serpy.IntField(required=False)
    token_lifetime_web = serpy.IntField(required=False)
    signing_secret = serpy.MethodField()
    #tenant_id = serpy.StrField()
    
    class Meta:
        read_protected_fields = ('signing_secret',)
        write_protected_fields = ('id','created_at','updated_at',)


    def get_signing_secret(self,obj):
        if obj.get("is_default") is False:

            key = jwk.JWK.generate(kty = 'oct',size = 256)
            return json.loads(key.export()).get("k")
        else:
            #this api will use application's secret key
            return None
Beispiel #30
0
class CardSerializerPending(serpy.Serializer):
    id = serpy.IntField()
    card_template = NestedTemplate()
    user = NestedUserDetail()
    value = serpy.Field()
    pending_actions = serpy.MethodField()
    position = serpy.Field()
    created = serpy.Field()
    updated = serpy.Field()

    def get_pending_actions(self, obj):
        return [{
            "is_complete": jj.is_complete,
            "message": jj.message,
            "alert_type": jj.alert_type.name,
            "created": jj.created.strftime("%Y-%m-%dT%H:%M:%S"),
            "updated": jj.updated.strftime("%Y-%m-%dT%H:%M:%S")
        } for jj in obj.pending_actions.all()]