class ICMRMedicalConditionSerializer(serializers.ModelSerializer): date_of_onset_of_symptoms = serializers.DateField() symptoms = serializers.ListSerializer(child=ChoiceField( choices=SYMPTOM_CHOICES)) hospitalization_date = serializers.DateField() hospital_phone_number = serializers.CharField( source="consultation.facility.phone_number") hospital_name = serializers.CharField(source="consultation.facility.name") medical_conditions = serializers.ListSerializer(child=ChoiceField( choices=DISEASE_CHOICES)) class Meta: model = PatientSampleICMR fields = ( # Section B.3 "date_of_onset_of_symptoms", "symptoms", "has_sari", "has_ari", # Section B.4 "medical_conditions", # Section B.5 "hospitalization_date", "diagnosis", "diff_diagnosis", "etiology_identified", "is_atypical_presentation", "is_unusual_course", "hospital_phone_number", "hospital_name", "doctor_name", )
class AnalyzeObjectSerializer(serializers.Serializer): serde_choices = SERDE_CHOICES stored_choices = STORED_CHOICES # Fields schema = serializers.CharField(required=True, max_length=100) data_location = serializers.CharField(required=True, max_length=128) serde = serializers.ChoiceField(serde_choices) serde_properties = serializers.ListSerializer(child=serializers.CharField(), required=False) # serde_properties = serializers.DictField(child=serializers.CharField()) stored = serializers.ChoiceField(stored_choices) table_properties = serializers.ListSerializer(child=serializers.CharField(), required=False) # table_properties = serializers.DictField(child=serializers.CharField()) csv_file = serializers.CharField(allow_blank=True, required=True) def update(self, instance, validated_data): instance.schema = validated_data.get('schema', instance.schema) instance.table = validated_data.get('table', instance.table) instance.data_location = validated_data.get('data_location', instance.data_location) instance.serde = validated_data.get('serde', instance.serde) instance.serde_properties = validated_data.get('serde_properties', instance.serde_properties) instance.stored = validated_data.get('stored', instance.stored) instance.table_properties = validated_data.get('table_properties', instance.table_properties) instance.csv_file = validated_data.get('csv_file', instance.csv_file) instance.create_table = validated_data.get('create_table', instance.create_table) return instance def create(self, validated_data): return AnalyzerObject(**validated_data)
class VnfInstanceSubscriptionFilterSerializer(serializers.Serializer): vnfdIds = serializers.ListSerializer( help_text="If present, match VNF instances that were created based" " on aVNFD identified by one of the vnfdId values listed" " in this attribute.", required=False, allow_null=True, many=True) vnfProductsFromProviders = serializers.ListSerializer( help_text="If present, match VNF instances that " "belong to VNF products from certain" " providers.", required=False, allow_null=True, many=True) vnfInstanceIds = serializers.ListSerializer( help_text="If present, match VNF instances with an instance " "identifier listed in this attribute.", required=False, allow_null=True, many=True) vnfInstanceNames = serializers.ListSerializer( help_text="If present, match VNF instances with a VNF " "Instance Name listed in this attribute.", required=False, allow_null=True, many=True)
class XAPIView(APIView): @extend_schema( request=serializers.ListSerializer(child=serializers.IntegerField()), responses=serializers.ListSerializer(child=serializers.IntegerField()), ) def post(self, request): pass # pragma: no cover
class TestSerializer(serializers.Serializer): integers = serializers.ListSerializer( child=serializers.ListSerializer( child=serializers.IntegerField())) booleans = serializers.ListSerializer( child=serializers.ListSerializer( child=serializers.BooleanField()))
class CourierRetrieveSerializer(serializers.ModelSerializer): courier_id = serializers.IntegerField(source="id") courier_type = serializers.PrimaryKeyRelatedField( queryset=CourierType.objects.all(), source="type") regions = serializers.ListSerializer(child=RegionField()) working_hours = serializers.ListSerializer(child=WorkingHoursField()) rating = serializers.FloatField() earnings = serializers.SerializerMethodField(method_name="get_earnings") def get_earnings(self, obj): sum = obj.orders.filter(is_delivered=True).aggregate( Sum("courier_price"))["courier_price__sum"] return sum if sum else 0 class Meta: model = Courier fields = ( "courier_id", "courier_type", "regions", "working_hours", "rating", "earnings", ) def to_representation(self, instance): representation = super().to_representation(instance) for field in self.fields: if representation[field] is None: representation.pop(field) return representation
class FullPostSerializer(serializers.ModelSerializer): tags = serializers.ListSerializer( child=serializers.CharField(max_length=20), allow_empty=True, validators=[MaxLengthValidator(10)]) default_image = ImageByIdSerializer() images = serializers.ListSerializer(child=UploadedImageSerializer(), validators=[MaxLengthValidator(10)], allow_empty=False) comments = serializers.ListSerializer(child=CommentSerializer(), validators=[MaxLengthValidator(10)], allow_empty=False) class Meta: model = Post fields = ( 'id', 'title', 'sub_title', 'default_image', 'images', 'tags', 'is_archived', 'review_status', 'date_created', 'date_published', 'date_modified', 'comments', ) def to_representation(self, instance): data = super(FullPostSerializer, self).to_representation(instance) data['tags'] = list(map(lambda x: x.name, instance.tags.all())) return data
class RecipeSerializer(serializers.ModelSerializer): ingredients = serializers.ListSerializer(child=IngredientSerializer()) steps = serializers.ListSerializer(child=StepSerializer()) class Meta: model = Recipe fields = ('id', 'name', 'user', 'ingredients', 'steps')
class JobSerializer(serializers.ModelSerializer): comments = GetCommentSerializer(many=True) bonuses = BonusSerializer(many=True) offers = serializers.ListSerializer(child=serializers.CharField()) location_tags = SerializerMethodField() skill_tags = SerializerMethodField() created_by = UserSerializer() desired_profile = serializers.ListSerializer(child=serializers.CharField()) class Meta: model = Job fields = ('id', 'title', 'description', 'short_description', 'status', 'desired_profile', 'offers', 'bonuses', 'offers', 'expires_at', 'created_by', 'comments', 'location_tags', 'skill_tags', 'created_by') def get_tag(self, type, obj): tags = obj.tags.filter(type=type).all() data = serializers.ListSerializer(instance=tags, child=serializers.CharField()) return data.data def get_location_tags(self, job): return self.get_tag('loc', job) def get_skill_tags(self, job): return self.get_tag('skill', job)
class CourierUpdateRequest(serializers.Serializer): courier_type = serializers.ChoiceField(label="Тип курьера", choices=COURIER_TYPE) regions = serializers.ListSerializer( label="Список идентификаторов районов", child=serializers.IntegerField() ) working_hours = serializers.ListSerializer( label="График работы курьера", child=serializers.CharField() )
class TestSerializer(serializers.Serializer): integers = serializers.ListSerializer( child=serializers.IntegerField()) booleans = serializers.ListSerializer( child=serializers.BooleanField()) def create(self, validated_data): return BasicObject(**validated_data)
class ExportItemsAndPublishSerializer(serializers.Serializer): model_folder = serializers.CharField() username = serializers.CharField() uuid = serializers.CharField() model_id = serializers.CharField() report_ids = serializers.ListSerializer( child=serializers.IntegerField(), default=[]) dashboard_ids = serializers.ListSerializer( child=serializers.IntegerField(), default=[])
class RoutesCompareSerializer(serializers.Serializer): only_left = serializers.ListSerializer(child=serializers.ListSerializer( child=serializers.ListSerializer(child=serializers.CharField()))) only_right = serializers.ListSerializer(child=serializers.ListSerializer( child=serializers.ListSerializer(child=serializers.CharField()))) both = serializers.ListSerializer(child=serializers.ListSerializer( child=serializers.ListSerializer(child=serializers.CharField())))
class CourierGetResponse(serializers.Serializer): courier_id = serializers.IntegerField(label="Уникальный идентификатор курьера") courier_type = serializers.ChoiceField(label="Тип курьера", choices=COURIER_TYPE) regions = serializers.ListSerializer( label="Список идентификаторов районов", child=serializers.IntegerField() ) working_hours = serializers.ListSerializer( label="График работы курьера", child=serializers.CharField() ) rating = serializers.FloatField(label="Рейтинг", required=False) earnings = serializers.IntegerField(label="Заработок")
class SubinitiativeSerializer(serializers.Serializer): pk = serializers.IntegerField() title = serializers.CharField(max_length=300) description = serializers.CharField(max_length=5000) date_time = serializers.DateTimeField() votes = serializers.IntegerField() author = serializers.CharField(source='initiative.user') tags = serializers.ListSerializer(child=serializers.CharField( source='tag.name')) comments = serializers.ListSerializer(child=CommentReadOnlySerializer( source='initiative.comment')) improvement_of = serializers.IntegerField(source='get_improvement_of_id')
class ClientSerializer(serializers.Serializer): registration_client_uri = serializers.HyperlinkedIdentityField( read_only=True, view_name='client-detail') client_id = serializers.CharField(read_only=True) client_id_issued_at = TimestampField(read_only=True) client_secret = serializers.CharField(read_only=True) client_secret_expires_at = serializers.IntegerField(read_only=True) client_name = serializers.CharField(required=False, allow_blank=True) client_uri = serializers.URLField(required=False, allow_blank=True) initiate_login_uri = serializers.URLField(required=False, allow_blank=True) logo_uri = serializers.URLField(required=False, allow_blank=True) tos_uri = serializers.URLField(required=False, allow_blank=True) policy_uri = serializers.URLField(required=False, allow_blank=True) contacts = serializers.ListSerializer(child=serializers.CharField(), required=False) redirect_uris = serializers.ListSerializer(child=serializers.URLField(), required=False) post_logout_redirect_uris = serializers.ListSerializer( child=serializers.URLField(), required=False) application_type = serializers.ChoiceField( choices=Client.OAUTH_APPLICATION_TYPES, default='web', required=False) token_endpoint_auth_method = serializers.ChoiceField( choices=Client.OAUTH_AUTH_METHODS, default='client_secret_basic', required=False) software_id = serializers.CharField(required=False, allow_blank=True) software_version = serializers.CharField(required=False, allow_blank=True) trusted_scope = serializers.ListSerializer(child=serializers.CharField(), required=False) owner = serializers.CharField(read_only=True) # DRF hack - because list fields aren't displayed in forms redirect_uri = serializers.URLField(write_only=True, required=False, allow_blank=True) post_logout_redirect_uri = serializers.URLField(write_only=True, required=False, allow_blank=True) def create(self, validated_data): owner = self.context['request'].user if not owner.is_authenticated: owner = None return Client.objects.create(**validated_data, owner=owner) def update(self, instance, validated_data): for attr, value in validated_data.items(): setattr(instance, attr, value) instance.save() return instance
class ProblemSerializer(serializers.Serializer): pk = serializers.IntegerField() title = serializers.CharField(max_length=300) description = serializers.CharField(max_length=5000) date_time = serializers.DateTimeField() votes = serializers.IntegerField() author = serializers.CharField(source='problem.user') tags = serializers.ListSerializer(child=serializers.CharField( source='tag.name')) comments = serializers.ListSerializer(child=CommentReadOnlySerializer( source='problem.comment')) solutions = serializers.ListSerializer(child=SolutionSerializer( source='problem.solution'))
class NotifyReqSerializer(serializers.Serializer): nfvoid = serializers.CharField( help_text="NFVO identification", max_length=255, required=True, allow_null=True) vnfmid = serializers.CharField( help_text="VNFM identification", max_length=255, required=True, allow_null=True) vimid = serializers.CharField( help_text="VIM identification", max_length=255, required=True, allow_null=True) timestamp = serializers.CharField( help_text="Time stamp", max_length=255, required=False, allow_blank=True) vnfinstanceid = serializers.CharField( help_text="VNF instance identification", max_length=255, required=False, allow_null=True) eventtype = serializers.CharField( help_text="Event type", max_length=255, required=False, allow_null=True) vmlist = NotifyVmlistSerializer( help_text='Virtual machine list', required=False, many=True) extension = serializers.DictField( help_text="Extension", child=serializers.DictField( allow_null=True), required=False, allow_null=True) affectedcp = serializers.ListSerializer( help_text='Affected connected points', child=serializers.DictField( allow_null=True), required=False) affectedvirtuallink = serializers.ListSerializer( help_text='Affected virtual links', child=serializers.DictField( allow_null=True), required=False)
class PatientDetailSerializer(PatientListSerializer): class MedicalHistorySerializer(serializers.Serializer): disease = ChoiceField(choices=DISEASE_CHOICES) details = serializers.CharField(required=False, allow_blank=True) class PatientTeleConsultationSerializer(serializers.ModelSerializer): class Meta: model = PatientTeleConsultation fields = "__all__" medical_history = serializers.ListSerializer( child=MedicalHistorySerializer(), required=False) tele_consultation_history = serializers.ListSerializer( child=PatientTeleConsultationSerializer(), read_only=True) last_consultation = serializers.SerializerMethodField(read_only=True) facility_object = FacilitySerializer(source="facility", read_only=True) def get_last_consultation(self, obj): last_consultation = PatientConsultation.objects.filter( patient=obj).last() if not last_consultation: return None return PatientConsultationSerializer(last_consultation).data class Meta: model = PatientRegistration exclude = ("created_by", "deleted") def create(self, validated_data): with transaction.atomic(): medical_history = validated_data.pop("medical_history", []) validated_data["created_by"] = self.context["request"].user patient = super().create(validated_data) diseases = [] for disease in medical_history: diseases.append(Disease(patient=patient, **disease)) if diseases: Disease.objects.bulk_create(diseases, ignore_conflicts=True) return patient def update(self, instance, validated_data): with transaction.atomic(): medical_history = validated_data.pop("medical_history", []) patient = super().update(instance, validated_data) Disease.objects.filter(patient=patient).update(deleted=True) diseases = [] for disease in medical_history: diseases.append(Disease(patient=patient, **disease)) if diseases: Disease.objects.bulk_create(diseases, ignore_conflicts=True) return patient
class PreviewEmailSerializer(serializers.ModelSerializer): to = serializers.ListSerializer(child=serializers.CharField()) cc = serializers.ListSerializer(child=serializers.CharField(), allow_empty=True) bcc = serializers.ListSerializer(child=serializers.CharField(), allow_empty=True) class Meta: model = Email fields = ( 'from_email', 'to', 'cc', 'bcc', 'subject', 'html_message', # TODO: attachments )
class InitiativeSerializer(serializers.Serializer): pk = serializers.IntegerField() title = serializers.CharField(max_length=300) description = serializers.CharField(max_length=5000) date_time = serializers.DateTimeField() votes = serializers.IntegerField() author = serializers.CharField(source='initiative.user') improvement_of = serializers.PrimaryKeyRelatedField( queryset=Initiative.objects.all()) tags = serializers.ListSerializer(child=serializers.CharField( source='tag.name')) comments = serializers.ListSerializer(child=CommentReadOnlySerializer( source='initiative.comment')) subinitiatives = serializers.ListSerializer( child=SubinitiativeSerializer(), source='get_subinitiatives')
class AbsoluteCoordinateSerializer(ChooseFieldsSerializerMixin, serializers.Serializer): """ Serializes a :class:`django_basin3d.synthesis.models.field.AbsoluteCoordinate` """ horizontal_position = serializers.ListSerializer( child=ReadOnlySynthesisModelField( serializer_class=HorizonatalCoordinateSerializer)) vertical_extent = serializers.ListSerializer( child=ReadOnlySynthesisModelField( serializer_class=VerticalCoordinateSerializer)) def __init__(self, *args, **kwargs): super(self.__class__, self).__init__(*args, **kwargs)
def get(self, request): """ Returns all hops that are approved in the system by default. """ serializer = rf_serializers.ListSerializer( models.Hop.objects.all(), child=serializers.SimpleHopSerializer()) return Response(serializer.data)
class UserProfileSerializer(serializers.ModelSerializer): reanimation_service_code = serializers.CharField(write_only=True) authorized_reanimation_services = serializers.ListSerializer( child=ReducedReanimationServiceSerializer()) class Meta: model = UserProfile fields = "__all__" read_only_fields = [ "user", "username", "authorized_reanimation_services" ] def update(self, instance, validated_data): reanimation_service_code = validated_data.pop( "reanimation_service_code", None) if reanimation_service_code is not None: rea = ReanimationService.objects.filter( access_code=reanimation_service_code).first() if not rea: raise serializers.ValidationError( "The code for reanimation service is wrong") reas = instance.authorized_reanimation_services reas.add(rea) validated_data["authorized_reanimation_services"] = reas.all() return super(UserProfileSerializer, self).update(instance, validated_data)
class OrdersSerializer(serializers.ModelSerializer): order_id = serializers.IntegerField(source="id", required=True) region = serializers.IntegerField(required=True) delivery_hours = serializers.ListSerializer(child=DeliveryHoursField()) class Meta: model = Order fields = ("order_id", "weight", "region", "delivery_hours") def validate(self, data): if hasattr(self, "initial_data"): unknown_keys = set(self.initial_data.keys()) - set(self.fields.keys()) if unknown_keys: raise ValidationError() return data def create(self, validated_data): delivery_hours_data = validated_data.pop("delivery_hours", []) with transaction.atomic(): order = self.Meta.model.objects.create(**validated_data) for each in delivery_hours_data: each.order = order each.save() return order
class ToppingSerializer(serializers.ModelSerializer): sub_toppings = serializers.ListSerializer(read_only=True, child=RecursiveField()) class Meta: model = Topping fields = ('name', 'cost', 'sub_toppings')
class ChildSerializer(serializers.ModelSerializer): children = serializers.ListSerializer(read_only=True, child=RecursiveField()) class Meta: model = Category fields = ('id', 'slug', 'name', 'parent', 'children', 'pricetype')
class UpdateForumSerializer(serializers.ModelSerializer): categories = serializers.ListSerializer(child=serializers.UUIDField()) id = serializers.UUIDField() class Meta: model = Forum fields = ['id', 'name', 'description', 'type', 'categories']
class StatusSerializer(serializers.ModelSerializer): sessions = serializers.ListSerializer( child=serializers.CharField(max_length=36), write_only=True) class Meta: fields_mini = ['id'] fields_write_only = [ 'sessions', ] fields_small = fields_mini + fields_write_only + [ 'cpu_load', 'memory_used', 'disk_used', 'session_online', 'date_created' ] fields_fk = ['terminal'] fields = fields_small + fields_fk extra_kwargs = { "cpu_load": { 'default': 0 }, "memory_used": { 'default': 0 }, "disk_used": { 'default': 0 }, } model = Status
class MessageSerializer(BaseSerializer): id = serializers.IntegerField() channel_id = serializers.IntegerField() guild_id = serializers.IntegerField(required=False) author = UserSerializer() member = MemberSerializer(required=False) content = serializers.CharField() timestamp = serializers.DateTimeField() edited_timestamp = serializers.DateTimeField(allow_null=True) tts = serializers.BooleanField() mention_everyone = serializers.BooleanField() mentions = UserSerializer(many=True) mention_roles = serializers.ListSerializer( child=serializers.IntegerField()) mention_channels = ChannelSerializer(many=True, required=False) attachments = AttachmentSerializer(many=True) embeds = EmbedSerializer(many=True) reactions = ReactionSerializer(many=True, required=False) nonce = serializers.CharField(required=False) pinned = serializers.BooleanField() webhook_id = serializers.IntegerField(required=False) type = serializers.IntegerField() activity = ActivitySerializer(required=False) application = ApplicationSerializer(required=False) message_reference = MessageReferenceSerializer(required=False) flags = serializers.IntegerField() stickers = StickerSerializer(many=True, required=False) referenced_message = serializers.SerializerMethodField(required=False, allow_null=True) @staticmethod def get_referenced_message(obj): return MessageSerializer( obj.referenced_message).data if obj.referenced_message else None