コード例 #1
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")
コード例 #2
0
class DelegateSerializer(serpy.Serializer):
    id = IntegerField()
    name = StringField()
    address = StringField()
    created = DateTimeField()
    updated = DateTimeField()
    proposal = StringField()
    website = StringField()
    approval = FloatField()
    rank = IntegerField()
    rank_changed = IntegerField()
    forged = IntegerField()
    voters = IntegerField()
    total_nodes_count = IntegerField()
    backup_nodes_count = IntegerField()
    contributions_count = IntegerField()
    voting_power = StringField()
    voters_zero_balance = IntegerField()
    voters_not_zero_balance = IntegerField()
    is_private = serpy.BoolField()

    payout_covering_fee = serpy.BoolField()
    payout_percent = FloatField()
    payout_interval = IntegerField()
    payout_minimum = StringField()
    payout_maximum = StringField()
    payout_minimum_vote_amount = StringField()
    payout_maximum_vote_amount = StringField()
コード例 #3
0
ファイル: serializers.py プロジェクト: morfat/FalchyAuth
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', )
コード例 #4
0
class PhotoSuperSimpleSerializerWithAddedOn(serpy.Serializer):
    image_hash = serpy.StrField()
    favorited = serpy.BoolField()
    public = serpy.BoolField()
    hidden = serpy.BoolField()
    exif_timestamp = DateTimeField()
    added_on = DateTimeField()
コード例 #5
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')
コード例 #6
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]
コード例 #7
0
ファイル: serializers.py プロジェクト: morfat/FalchyAuth
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
コード例 #8
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)
コード例 #9
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')
コード例 #10
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()
コード例 #11
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()
コード例 #12
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()
コード例 #13
0
ファイル: serializers.py プロジェクト: morfat/FalconRestAuth
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)

    class Meta:

        read_protected_fields = ('password', )
        write_protected_fields = ()
コード例 #14
0
ファイル: serializers.py プロジェクト: jczhu/recourse-333
class CourseSerializer(serpy.Serializer):
    registrar_id = serpy.StrField()
    title = serpy.StrField()
    deptnum = serpy.StrField()

    rating = serpy.FloatField()
    # evals = serpy.Field() # removed to avoid serializing
    description = serpy.StrField()
    assgts = serpy.StrField()
    grading = serpy.StrField()
    prereqs = serpy.StrField()
    otherinfo = serpy.StrField()
    otherreq = serpy.StrField()
    professors = serpy.StrField()
    area = serpy.StrField()
    pages = serpy.IntField()

    pdfable = serpy.BoolField()
    pdfonly = serpy.BoolField()
    auditable = serpy.BoolField()
    pdfaudit = serpy.StrField()

    meetings = MeetingSerializer(many=True, attr="meetings.all", call=True)
コード例 #15
0
ファイル: serializers.py プロジェクト: morfat/FalconRestAuth
class ApplicationSerializer(BaseSerializer):

    name = serpy.StrField()
    is_multitenant = serpy.BoolField()
    signing_secret = serpy.MethodField()

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

    def get_signing_secret(self, obj):
        key = jwk.JWK.generate(kty='oct', size=256)
        return json.loads(key.export()).get("k")
コード例 #16
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()
コード例 #17
0
class UserSerializer(serpy.Serializer):
    """Serializer for users."""

    id = serpy.Field()
    username = serpy.Field()
    avatar = serpy.MethodField('get_avatar')
    name = serpy.Field()
    email = serpy.Field()
    is_superuser = serpy.BoolField()

    # 'is_active',
    # 'date_joined',
    # 'last_login',

    def get_avatar(self, instance: 'User'):
        """Return the entity's death date, serialized."""
        try:
            return instance.avatar.url if instance.avatar else None
        except Exception as err:
            logging.error(f'{err}')
        return None
コード例 #18
0
ファイル: serializers.py プロジェクト: morfat/FalchyAuth
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
コード例 #19
0
ファイル: serializers.py プロジェクト: jczhu/recourse-333
class MeetingSerializer(serpy.Serializer):
    start_time = MeetingTimeField()
    end_time = MeetingTimeField()
    days = serpy.StrField()
    section = serpy.StrField()
    is_primary = serpy.BoolField()
コード例 #20
0
class PhotoSuperSimpleSerializer(serpy.Serializer):
    image_hash = serpy.StrField()
    favorited = serpy.BoolField()
    hidden = serpy.BoolField()
    exif_timestamp = DateTimeField()
コード例 #21
0
class NodeSerializer(serpy.Serializer):
    network = StringField()
    cpu = StringField()
    memory = StringField()
    is_dedicated = serpy.BoolField()
    is_backup = serpy.BoolField()
コード例 #22
0
class DelegateInfo(serpy.DictSerializer):

    id = IntegerField()
    name = StringField()
    slug = StringField()
    address = StringField()
    public_key = StringField()
    created = DateTimeField()
    updated = DateTimeField()
    website = StringField()
    proposal = StringField()
    is_private = serpy.BoolField()
    payout_covering_fee = serpy.BoolField()
    payout_percent = FloatField()
    payout_interval = IntegerField()
    payout_minimum = StringField()
    payout_maximum = StringField()
    payout_minimum_vote_amount = StringField()
    payout_maximum_vote_amount = StringField()
    user_id = IntegerField()

    approval = FloatField()
    rank = IntegerField()
    rank_changed = IntegerField()
    forged = IntegerField()
    voters = IntegerField()
    voting_power = StringField()

    total_nodes_count = IntegerField()
    backup_nodes_count = IntegerField()
    contributions_count = IntegerField()
    voters_zero_balance = IntegerField()
    voters_not_zero_balance = IntegerField()

    @classmethod
    def from_slug(cls, slug, *args, **kwargs):
        total_node_count_query = Count("nodes", filter=Q(nodes__is_active=True), distinct=True)
        backup_node_count_query = Count(
            "nodes", filter=Q(nodes__is_active=True, nodes__is_backup=True), distinct=True
        )
        contributions_count_query = Count("contributions", distinct=True)
        delegate = (
            Delegate.objects.annotate(total_nodes_count=total_node_count_query)
            .annotate(backup_nodes_count=backup_node_count_query)
            .annotate(contributions_count=contributions_count_query)
            .get(slug=slug)
        )

        data = {
            "id": delegate.id,
            "name": delegate.name,
            "slug": delegate.slug,
            "address": delegate.address,
            "public_key": delegate.public_key,
            "created": delegate.created,
            "updated": delegate.updated,
            "website": delegate.website,
            "proposal": delegate.proposal,
            "is_private": delegate.is_private,
            "payout_covering_fee": delegate.payout_covering_fee,
            "payout_percent": delegate.payout_percent,
            "payout_interval": delegate.payout_interval,
            "payout_minimum": delegate.payout_minimum,
            "payout_maximum": delegate.payout_maximum,
            "payout_minimum_vote_amount": delegate.payout_minimum_vote_amount,
            "payout_maximum_vote_amount": delegate.payout_maximum_vote_amount,
            "user_id": delegate.user_id,
            "total_nodes_count": delegate.total_nodes_count,
            "backup_nodes_count": delegate.backup_nodes_count,
            "contributions_count": delegate.contributions_count,
            "approval": None,
            "rank": None,
            "rank_changed": None,
            "forged": None,
            "voters": None,
            "voting_power": None,
            "voters_zero_balance": None,
            "voters_not_zero_balance": None,
        }

        history = delegate.histories.order_by("-created").first()
        if history:
            data["approval"] = history.approval
            data["rank"] = history.rank
            data["rank_changed"] = history.rank_changed
            data["forged"] = history.forged
            data["voters"] = history.voters
            data["voting_power"] = history.voting_power
            data["voters_zero_balance"] = history.payload.get("voters_zero_balance")
            data["voters_not_zero_balance"] = history.payload.get("voters_not_zero_balance")

        return DelegateInfo(data)
コード例 #23
0
ファイル: serializers.py プロジェクト: leonellima/test_api
class TaskSerializer(serpy.Serializer):
    id = serpy.IntField()
    description = serpy.Field()
    created_at = serpy.Field()
    finished_at = serpy.Field()
    is_finished = serpy.BoolField()
コード例 #24
0
class EmailProviderSerializer(BaseSerializer):
    name = serpy.StrField()
    activated = serpy.BoolField()
    default_from_address = serpy.StrField()
    credentials = DictField()
コード例 #25
0
class EmailTemplateSerializer(BaseSerializer):
    name = serpy.StrField()
    activated = serpy.BoolField()
    body = serpy.StrField(required=False)
    subject = serpy.StrField(required=False)
コード例 #26
0
ファイル: serializers.py プロジェクト: Antrony/ReportGen
class ProductSerializer(serpy.Serializer):
    id = serpy.IntField()
    product_name = serpy.Field()
    product_created_by = UserSerializer()
    product_created_date = serpy.Field()
    is_active = serpy.BoolField()
コード例 #27
0
class PAGSerializer(serpy.Serializer):
    id = serpy.StrField()
    published_name = serpy.StrField()
    published_version = serpy.IntField()
    published_date = serpy.MethodField('serialize_published_date')
    artifacts = serpy.MethodField('serialize_tagged_artifacts')

    #accessions = PAGAccessionSerializer(attr='accessions.all', many=True, call=True)
    accessions = serpy.MethodField('serialize_accessions')
    qc_reports = QCGroupSerializer(attr='quality_groups.all',
                                   many=True,
                                   call=True)

    owner = serpy.StrField(attr='owner.username')
    owner_org_code = serpy.StrField(attr='owner.profile.institute.code')
    owner_org_name = serpy.StrField(attr='owner.profile.institute.name')
    owner_org_gisaid_opted = serpy.BoolField(
        attr='owner.profile.institute.gisaid_opted')
    owner_org_gisaid_user = serpy.StrField(
        attr='owner.profile.institute.gisaid_user')
    owner_org_gisaid_mail = serpy.StrField(
        attr='owner.profile.institute.gisaid_mail')
    owner_org_gisaid_lab_name = serpy.MethodField(
        'serialize_owner_org_gisaid_lab_name')
    owner_org_gisaid_lab_addr = serpy.MethodField(
        'serialize_owner_org_gisaid_lab_addr')
    owner_org_gisaid_lab_list = serpy.MethodField(
        'serialize_owner_org_gisaid_lab_list')

    owner_org_ena_opted = serpy.BoolField(
        attr='owner.profile.institute.ena_opted')

    owner_org_lab_or_name = serpy.MethodField(
        'serialize_owner_org_lab_or_name')

    def serialize_owner_org_gisaid_lab_name(self, pag):
        a = pag.tagged_artifacts.values_list('id', flat=True)
        try:
            credit_code = models.MajoraMetaRecord.objects.get(
                artifact__id__in=a, meta_tag='majora',
                meta_name='credit').value
            name = models.InstituteCredit.objects.get(
                institute=pag.owner.profile.institute,
                credit_code=credit_code.upper()).lab_name
        except:
            name = pag.owner.profile.institute.gisaid_lab_name
        return name

    def serialize_owner_org_gisaid_lab_addr(self, pag):
        a = pag.tagged_artifacts.values_list('id', flat=True)
        try:
            credit_code = models.MajoraMetaRecord.objects.get(
                artifact__id__in=a, meta_tag='majora',
                meta_name='credit').value
            addr = models.InstituteCredit.objects.get(
                institute=pag.owner.profile.institute,
                credit_code=credit_code.upper()).lab_addr
        except:
            addr = pag.owner.profile.institute.gisaid_lab_addr
        return addr

    def serialize_owner_org_gisaid_lab_list(self, pag):
        a = pag.tagged_artifacts.values_list('id', flat=True)
        l = None
        try:
            credit_code = models.MajoraMetaRecord.objects.get(
                artifact__id__in=a, meta_tag='majora',
                meta_name='credit').value
            l = models.InstituteCredit.objects.get(
                institute=pag.owner.profile.institute,
                credit_code=credit_code.upper()).lab_list
        except:
            l = pag.owner.profile.institute.gisaid_list

        if l:
            return l.replace('\t',
                             ' ').replace('\r', '').replace('\n', ',').replace(
                                 ",,", ',').replace(' ,', ',')  # sigh
        return ""

    def serialize_owner_org_lab_or_name(self, pag):
        if pag.owner.profile.institute.gisaid_lab_name:
            return pag.owner.profile.institute.gisaid_lab_name
        else:
            return pag.owner.profile.institute.name

    def serialize_tagged_artifacts(self, pag):
        a = {}
        for artifact in pag.tagged_artifacts.all():
            if artifact.artifact_kind not in a:
                a[artifact.artifact_kind] = []
            s = artifact.get_serializer()
            a[artifact.artifact_kind].append(s(artifact).data)
        return a

    def serialize_accessions(self, pag):
        a = {}
        for accession in pag.accessions.all():
            a[accession.service] = PAGAccessionSerializer(accession).data
        return a

    def serialize_published_date(self, pag):
        return pag.published_date.isoformat()