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', )
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()
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()
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
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
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 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"))
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)
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()
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()
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'
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)
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
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)
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}
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"))
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 ''
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()
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
class PhotoSuperSimpleSerializerWithAddedOn(serpy.Serializer): image_hash = serpy.StrField() favorited = serpy.BoolField() public = serpy.BoolField() hidden = serpy.BoolField() exif_timestamp = DateTimeField() added_on = DateTimeField()
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
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
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
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()
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()
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)
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")
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')
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()
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)