class CommentSerializer(serializers.ModelSerializer):
    author = serializers.StringRelatedField()

    class Meta:
        model = Comment
        fields = ('id', 'url', 'content', 'author')
Ejemplo n.º 2
0
class GlobalUserSerializer(serializers.HyperlinkedModelSerializer):
    names = serializers.StringRelatedField(many=True)

    class Meta:
        model = GlobalUser
        fields = ['id', 'url', 'phone_number', 'spam', 'names']
Ejemplo n.º 3
0
class ProfileSerializer(serializers.ModelSerializer):
    name = serializers.ReadOnlyField(source="user.username")
    next_review_date = serializers.SerializerMethodField()
    unlocked_levels = serializers.StringRelatedField(many=True, read_only=True)
    reviews_within_hour_count = serializers.SerializerMethodField()
    reviews_within_day_count = serializers.SerializerMethodField()
    srs_counts = SrsCountSerializer(source="user", many=False, read_only=True)
    # upcoming_reviews = DetailedUpcomingReviewCountSerializer(source='user', many=False, read_only=True)
    upcoming_reviews = SimpleUpcomingReviewSerializer(
        source="user", many=False, read_only=True
    )
    join_date = serializers.SerializerMethodField()
    api_key_v2 = serializers.CharField(
        max_length=40,
        validators=[WanikaniApiKeyValidatorV2()],
        allow_null=True,
    )

    class Meta:
        model = Profile
        fields = (
            "id",
            "name",
            "api_key_v2",
            "api_valid",
            "level",
            "follow_me",
            "auto_advance_on_success",
            "unlocked_levels",
            "last_wanikani_sync_date",
            "auto_expand_answer_on_success",
            "auto_expand_answer_on_failure",
            "on_vacation",
            "vacation_date",
            "reviews_within_day_count",
            "reviews_within_hour_count",
            "srs_counts",
            "minimum_wk_srs_level_to_review",
            "maximum_wk_srs_level_to_review",
            "upcoming_reviews",
            "next_review_date",
            "join_date",
            "auto_advance_on_success_delay_milliseconds",
            "use_eijiro_pro_link",
            "show_kanji_svg_stroke_order",
            "show_kanji_svg_grid",
            "kanji_svg_draw_speed",
            "info_detail_level_on_success",
            "info_detail_level_on_failure",
            "order_reviews_by_level",
            "burn_reviews",
        )

        read_only_fields = (
            "id",
            "name",
            "api_valid",
            "level",
            "unlocked_levels",
            "vacation_date",
            "reviews_within_day_count",
            "reviews_within_hour_count",
            "srs_counts",
            "next_review_date",
            "last_wanikani_sync_date",
            "join_date"
        )

    def get_join_date(self, obj):
        """
        So this is a hack. By default the modelserializer expects a datefield, but a fewww users have datetimefields as their join_date,
        due to an old version of the model. Eventually we should fix those users but for now this methodfield does the trick.
        """
        return obj.join_date

    def save(self, **kwargs):
        return super().save(**kwargs)

    def get_next_review_date(self, obj):
        user = obj.user
        if self.get_reviews_count(obj) == 0:
            reviews = get_users_future_reviews(user)
            if reviews:
                next_review_date = reviews[0].next_review_date
                return next_review_date

    def get_reviews_count(self, obj):
        return get_users_current_reviews(obj.user).count()

    def get_reviews_within_hour_count(self, obj):
        return get_users_future_reviews(
            obj.user, time_limit=datetime.timedelta(hours=1)
        ).count()

    def get_reviews_within_day_count(self, obj):
        return get_users_future_reviews(
            obj.user, time_limit=datetime.timedelta(hours=24)
        ).count()
Ejemplo n.º 4
0
class NickSerializer(serializers.ModelSerializer):
	variants = serializers.StringRelatedField(many=True)

	class Meta:
		model = Nick
		fields = ['name', 'abbreviation', 'is_primary_nick', 'variants']
Ejemplo n.º 5
0
class AccountSerializer(serializers.ModelSerializer):
    direction = serializers.StringRelatedField(many=True)

    class Meta:
        model = Account
        fields = '__all__'
Ejemplo n.º 6
0
class WorkoutReadSerializer(WorkoutSerializer):
    author = serializers.StringRelatedField()
    favorites = serializers.StringRelatedField(many=True)
Ejemplo n.º 7
0
class UserSerializer(serializers.ModelSerializer):
    groups = serializers.StringRelatedField(many=True)
    class Meta:
        model = User
        fields = ('url', 'username', 'first_name','last_name','email', 'groups')
Ejemplo n.º 8
0
class ApplicationAdminSerializer(AuditModelSerializer):
    """
    Serializes RegistryApplication model fields for admin users
    """

    status_set = ApplicationStatusSerializer(many=True, read_only=True)
    current_status = ApplicationStatusSerializer(required=False)
    cert_authority = serializers.ReadOnlyField(
        source="primary_certificate.cert_auth.cert_auth_code")
    qualifications = serializers.StringRelatedField(
        source='subactivity.qualification_set', many=True, read_only=True)
    subactivity = SubactivitySerializer()

    class Meta:
        model = RegistriesApplication
        fields = ('create_user', 'create_date', 'update_user', 'update_date',
                  'application_guid', 'registration', 'file_no', 'over19_ind',
                  'cert_authority', 'registrar_notes', 'reason_denied',
                  'subactivity', 'qualifications', 'status_set',
                  'current_status')

    def to_internal_value(self, data):
        """
        Set fields to different serializers for create/update operations.
        This method is called on POST/PUT/PATCH requests
        """
        self.fields['subactivity'] = serializers.PrimaryKeyRelatedField(
            queryset=SubactivityCode.objects.all())
        return super(ApplicationAdminSerializer, self).to_internal_value(data)

    def create(self, validated_data):
        """
        Create an application as well as a default status record of "pending"
        """
        try:
            app = RegistriesApplication.objects.create(**validated_data)
        except TypeError:
            raise TypeError('A field may need to be made read only.')

        # make a status record to go with the new application
        # by default we set the ApplicationStatus to P(ending).
        pending = ApplicationStatusCode.objects.get(
            registries_application_status_code='P')
        RegistriesApplicationStatus.objects.create(application=app,
                                                   status=pending)

        return app

    @transaction.atomic
    def update(self, instance, validated_data):
        """
        The update is wrapped inside a transaction since we're changing a few
        records and creating one. We want to avoid a state where where a partial
        change occurs, especially if it leaves an application without a current
        status.
        """
        # We pop the current status, as the update method on the base
        # class cannot serialize nested fields.
        validated_status = validated_data.pop('current_status', None)

        if validated_status:
            # Validated_status is an OrderedDict at this point.
            validated_status_code = validated_status.get(
                'status').registries_application_status_code
            current_status = instance.current_status
            if current_status:
                current_status_code = current_status.status.registries_application_status_code
            else:
                logger.error(
                    'RegistryApplication {} does not have a current status'.
                    format(instance))
                current_status_code = None

            if validated_status_code != current_status_code:
                if current_status:
                    # Expire existing status.
                    current_status.expired_date = timezone.now()
                    current_status.save()
                new_status = ApplicationStatusCode.objects.get(
                    registries_application_status_code=validated_status_code)
                # Create a new status.
                RegistriesApplicationStatus.objects.create(
                    application=instance, status=new_status)

        return super().update(instance, validated_data)
Ejemplo n.º 9
0
class ProductSerializer(serializers.ModelSerializer):
    """
    A serializer to get a single product instance
    """

    unit = serializers.SerializerMethodField()
    colors = ProductInstanceNameSerializer(read_only=True, many=True)
    styles = serializers.SerializerMethodField()
    applications = serializers.SerializerMethodField()
    materials = serializers.SerializerMethodField()
    sizes = serializers.SerializerMethodField()
    images = BaseHeaderImageSerializer(read_only=True, many=True)
    variants = serializers.SerializerMethodField()
    files = ProductFileSerializer(read_only=True, many=True)
    origin_country = serializers.StringRelatedField(
        source="supplier.origin_country", read_only=True
    )
    site_state = serializers.SerializerMethodField()

    class Meta:
        model = Product
        fields = (
            "id",
            "unit",
            "name",
            "slug",
            "short_description",
            "description",
            "available_in_special_sizes",
            "absorption",
            "sizes",
            "colors",
            "styles",
            "applications",
            "materials",
            "images",
            "variants",
            "files",
            "origin_country",
            "site_state",
        )
        read_only_fields = fields

    def get_unit(self, product):
        """
        Return display name of unit type
        """

        return product.get_unit_display()

    def get_sizes(self, product):
        """
        Order sizes based on width
        """

        sizes = (
            Size.objects.filter(product_options__product=product)
            .distinct()
            .order_by("width", "height", "depth", "circumference")
        )
        return SizeSerializer(sizes, read_only=True, many=True).data

    def get_site_state(self, product):
        site_state = ProductSiteState.on_site.get(product=product)

        return ProductSiteStateSerializer(site_state, read_only=True).data

    def get_styles(self, product):
        styles = product.get_styles_display()

        return ProductInstanceNameSerializer(styles, read_only=True, many=True).data

    def get_applications(self, product):
        applications = product.get_applications_display()

        return ProductInstanceNameSerializer(
            applications, read_only=True, many=True
        ).data

    def get_materials(self, product):
        materials = product.get_materials_display()

        return ProductInstanceNameSerializer(materials, read_only=True, many=True).data

    def get_variants(self, product):
        product_variants = get_related_unique_variants(product=product)

        return VariantSerializer(product_variants, read_only=True, many=True).data
Ejemplo n.º 10
0
class CarSerializer(serializers.ModelSerializer):
    company = serializers.StringRelatedField()

    class Meta:
        model = Car
        fields = ['id', 'name', 'company']
Ejemplo n.º 11
0
class ModelSerializer(serializers.ModelSerializer):
    car = serializers.StringRelatedField()

    class Meta:
        model = Model
        fields = ['id', 'name', 'car']
Ejemplo n.º 12
0
class QuestionSerializer(serializers.ModelSerializer):
    asker = UserProfileSerializer(many=False)
    categories = serializers.StringRelatedField(many=True, required=False)
    answers = AnswerSerializer(many=True, read_only=True)
    link = serializers.CharField(source='related_link', required=False)
    replyTo = serializers.PrimaryKeyRelatedField(
        queryset=Question.objects.all(), required=False)

    class Meta:
        model = Question
        fields = ('id', 'text', 'questionType', 'date', 'asker', 'categories',
                  'option1', 'option2', 'option3', 'option4', 'option5',
                  'answers', 'link', 'replyTo')
        read_only_fields = ('id', 'date')

    def validate(self, data):
        options = []
        options.append(data['option1'].lower())
        options.append(data['option2'].lower())
        options.append(data['option3'].lower())
        options.append(data['option4'].lower())
        options.append(data['option5'].lower())

        other = []

        has_duplicates = False
        for i in options:
            if has_duplicates:
                break
            elif i is None or i == "":
                pass
            elif i in other:
                has_duplicates = True
            else:
                other.append(i)

        if has_duplicates:
            print("This question has duplicates: " + str(has_duplicates))
            raise serializers.ValidationError("Options must be unique")
        return data

    def to_representation(self, obj):
        rep = super(serializers.ModelSerializer, self).to_representation(obj)
        rep['options'] = to_array(rep)

        answers = rep['answers']
        request = self.context.get('request', None)
        if request and request.user.is_authenticated():
            rep['isUser'] = True
            answer = Answer.objects.filter(question=rep['id'],
                                           user=request.user.profile)
            if answer is not None and answer.count() > 0:
                serializer = AnswerSerializer(answer[0]).data
                rep['usersAnswer'] = serializer

            # for answer in answers:
            # 	print("Answer user id: " + str(answer['user']))
            # 	print("Request user id: " + str(request.user.profile.id))
            # 	if answer['user'] == request.user.profile.id:
            # 		rep['isAnswered'] = True
            # 		rep['usersAnswer'] = answer
            # 		break
            # 	else:
            # 		rep['isAnswered'] = False
        else:
            rep['isUser'] = False

        answers = Answer.objects.filter(question=rep['id'])
        if rep['questionType'] == 'RG':
            rep['quick'] = answers.values('answer').aggregate(
                Avg('answer')).get('answer__avg')
        else:
            rep['quick'] = {
                'option1': answers.filter(answer=0).count(),
                'option2': answers.filter(answer=1).count(),
                'option3': answers.filter(answer=2).count(),
                'option4': answers.filter(answer=3).count(),
                'option5': answers.filter(answer=4).count()
            }
        return rep

    def to_internal_value(self, data):
        asker_id = data.get('asker', None)
        if asker_id != None:
            asker = UserProfile.objects.get(pk=asker_id)
            data['asker'] = UserProfileSerializer(asker).data
        data = to_columns(data)
        categories = data.pop('categories', None)
        data = super(serializers.ModelSerializer, self).to_internal_value(data)
        if categories:
            data['categories'] = categories
        return data

    def create(self, validated_data):
        categories = validated_data.pop('categories', None)
        asker = validated_data.pop('asker', None)
        if asker != None:
            asker = UserProfile.objects.get(pk=asker.pop('id'))
        question = Question.objects.create(asker=asker, **validated_data)
        question.save()

        if categories:
            for category in categories:
                print("Creating category " + category)
                catModel = Category.objects.create(category=category)
                catModel.save()
                print("Saving category")
                catModel.question.add(question)
                print("Added to the question")
        return question

    def update(self, instance, validated_data):
        categories = validated_data.pop('categories', None)

        instance.text = validated_data.get('text', instance.text)
        instance.questionType = validated_data.get('questionType',
                                                   instance.questionType)
        instance.option1 = validated_data.get('option1', instance.option1)
        instance.option2 = validated_data.get('option2', instance.option2)
        instance.option3 = validated_data.get('option3', instance.option3)
        instance.option4 = validated_data.get('option4', instance.option4)
        instance.option5 = validated_data.get('option5', instance.option5)
        instance.save()

        # for category in categories:
        # 	catModel = Category.objects.create(category=category)
        # 	catModel.save()
        # 	catModel.question.add(instance)

        return instance
Ejemplo n.º 13
0
class ItemSerializer(serializers.ModelSerializer):
    keyword = serializers.StringRelatedField(many=True)

    class Meta:
        model = Item
        fields = ('__all__')
class PostSerializer(serializers.ModelSerializer):
    author = serializers.StringRelatedField()

    class Meta:
        model = Post
        fields = ('id', 'url', 'title', 'content', 'author')
Ejemplo n.º 15
0
 def setUp(self):
     self.instance = MockObject(pk=1, name='foo')
     self.field = serializers.StringRelatedField(many=True)
     self.field.field_name = 'foo'
Ejemplo n.º 16
0
class UserSerializer(serializers.ModelSerializer):
    staff_of = serializers.StringRelatedField()

    class Meta:
        model = User
        fields = ['url', 'username', 'email']
Ejemplo n.º 17
0
class StockSerializer(serializers.HyperlinkedModelSerializer):
    vendor = serializers.StringRelatedField(read_only=True)

    class Meta:
        model = Stock
        fields = ('id', 'vendor', 'gastype', 'image', 'price')
Ejemplo n.º 18
0
class KeyDocSerializer(serializers.ModelSerializer):
    creator = serializers.StringRelatedField()

    class Meta:
        model = KeyDoc
        fields = ['creator', 'date_created', 'members_when_created']
Ejemplo n.º 19
0
class InstitutionDetailSerializer(serializers.ModelSerializer):
    eter = serializers.StringRelatedField()
    identifiers = InstitutionIdentifierSerializer(
        many=True, read_only=True, source='institutionidentifier_set')
    names = InstitutionNameSerializer(many=True,
                                      read_only=True,
                                      source='institutionname_set')
    countries = InstitutionCountryDetailSerializer(
        many=True, read_only=True, source='institutioncountry_set')
    # nqf_levels = serializers.StringRelatedField(many=True, read_only=True, source='institutionnqflevel_set')
    qf_ehea_levels = InstitutionQFEHEALevelSerializer(
        many=True, read_only=True, source='institutionqfehealevel_set')
    historical_relationships = serializers.SerializerMethodField()
    hierarchical_relationships = serializers.SerializerMethodField()
    historical_data = InstitutionHistoricalDataSerializer(
        many=True, read_only=True, source='institutionhistoricaldata_set')

    def get_hierarchical_relationships(self, obj):
        includes = []
        part_of = []

        for relation in obj.relationship_parent.all():
            includes.append(
                InstitutionListSerializer(relation.institution_child,
                                          context=self.context).data)

        for relation in obj.relationship_child.all():
            part_of.append(
                InstitutionListSerializer(relation.institution_parent,
                                          context=self.context).data)

        return {'includes': includes, 'part_of': part_of}

    def get_historical_relationships(self, obj):
        relationships = []

        for relation in obj.relationship_source.all():
            relationships.append({
                'institution':
                InstitutionListSerializer(relation.institution_target,
                                          context=self.context).data,
                'relationship_type':
                relation.relationship_type.type_to,
                'relationship_date':
                relation.relationship_date
            })

        for relation in obj.relationship_target.all():
            relationships.append({
                'institution':
                InstitutionListSerializer(relation.institution_source,
                                          context=self.context).data,
                'relationship_type':
                relation.relationship_type.type_from,
                'relationship_date':
                relation.relationship_date
            })
        return relationships

    class Meta:
        ref_name = 'Institution v1'
        model = Institution
        fields = ('id', 'eter', 'identifiers', 'website_link', 'names',
                  'countries', 'founding_date', 'closure_date',
                  'historical_relationships', 'hierarchical_relationships',
                  'qf_ehea_levels', 'historical_data')
Ejemplo n.º 20
0
class ProjectSerializer(FlexFieldsModelSerializer):

    homepage = serializers.SerializerMethodField()
    language = LanguageSerializer()
    programming_language = ProgrammingLanguageSerializer()
    repository = RepositorySerializer(source='*')
    urls = ProjectURLsSerializer(source='*')
    subproject_of = serializers.SerializerMethodField()
    translation_of = serializers.SerializerMethodField()
    default_branch = serializers.CharField(source='get_default_branch')
    tags = serializers.StringRelatedField(many=True)
    users = UserSerializer(many=True)

    _links = ProjectLinksSerializer(source='*')

    # TODO: adapt these fields with the proper names in the db and then remove
    # them from here
    created = serializers.DateTimeField(source='pub_date')
    modified = serializers.DateTimeField(source='modified_date')

    class Meta:
        model = Project
        fields = [
            'id',
            'name',
            'slug',
            'created',
            'modified',
            'language',
            'programming_language',
            'homepage',
            'repository',
            'default_version',
            'default_branch',
            'subproject_of',
            'translation_of',
            'users',
            'urls',
            'tags',

            # NOTE: ``expandable_fields`` must not be included here. Otherwise,
            # they will be tried to be rendered and fail
            # 'users',
            # 'active_versions',
            '_links',
        ]

        expandable_fields = {
            'active_versions': (
                VersionSerializer,
                {
                    # NOTE: this has to be a Model method, can't be a
                    # ``SerializerMethodField`` as far as I know
                    'source': 'active_versions',
                    'many': True,
                })
        }

    def get_homepage(self, obj):
        # Overridden only to return ``None`` when the project_url is ``''``
        return obj.project_url or None

    def get_translation_of(self, obj):
        if obj.main_language_project:
            return self.__class__(obj.main_language_project).data

    def get_subproject_of(self, obj):
        try:
            return self.__class__(obj.superprojects.first().parent).data
        except Exception:
            return None
Ejemplo n.º 21
0
class UserRequestSerializer(serializers.ModelSerializer):
    requests = RequestSerializer(many=True)
    submitter = serializers.StringRelatedField(
        default=serializers.CurrentUserDefault())

    class Meta:
        model = UserRequest
        fields = '__all__'
        read_only_fields = ('id', 'submitter', 'created', 'state', 'modified')
        extra_kwargs = {
            'proposal': {
                'error_messages': {
                    'null': 'Please provide a proposal.'
                }
            },
            'group_id': {
                'error_messages': {
                    'blank': 'Please provide a title.'
                }
            }
        }

    @transaction.atomic
    def create(self, validated_data):
        request_data = validated_data.pop('requests')

        user_request = UserRequest.objects.create(**validated_data)

        for r in request_data:
            target_data = r.pop('target')
            constraints_data = r.pop('constraints')
            window_data = r.pop('windows')
            molecule_data = r.pop('molecules')
            location_data = r.pop('location')

            request = Request.objects.create(user_request=user_request, **r)
            Location.objects.create(request=request, **location_data)
            Target.objects.create(request=request, **target_data)
            Constraints.objects.create(request=request, **constraints_data)

            for data in window_data:
                Window.objects.create(request=request, **data)
            for data in molecule_data:
                Molecule.objects.create(request=request, **data)

        debit_ipp_time(user_request)

        logger.info('UserRequest created',
                    extra={
                        'tags': {
                            'user': user_request.submitter.username,
                            'tracking_num': user_request.id,
                            'group_id': user_request.group_id
                        }
                    })

        return user_request

    def validate(self, data):
        # check that the user belongs to the supplied proposal
        if data['proposal'] not in data['submitter'].proposal_set.all():
            raise serializers.ValidationError(
                _('You do not belong to the proposal you are trying to submit')
            )

        # validation on the operator matching the number of requests
        if data['operator'] == 'SINGLE':
            if len(data['requests']) > 1:
                raise serializers.ValidationError(
                    _("'Single' type user requests must have exactly one child request."
                      ))
        elif len(data['requests']) == 1:
            raise serializers.ValidationError(
                _("'{}' type user requests must have more than one child request."
                  .format(data['operator'].title())))

        try:
            total_duration_dict = get_total_duration_dict(data)
            for tak, duration in total_duration_dict.items():
                time_allocation = TimeAllocation.objects.get(
                    semester=tak.semester,
                    telescope_class=tak.telescope_class,
                    proposal=data['proposal'],
                )
                time_available = 0
                if data['observation_type'] == UserRequest.NORMAL:
                    time_available = time_allocation.std_allocation - time_allocation.std_time_used
                elif data['observation_type'] == UserRequest.TOO:
                    time_available = time_allocation.too_allocation - time_allocation.too_time_used

                if time_available <= 0.0:
                    raise serializers.ValidationError(
                        _("Proposal {} does not have any time left allocated in semester {} on {} telescopes"
                          ).format(data['proposal'], tak.semester,
                                   tak.telescope_class))
                elif time_available * OVERHEAD_ALLOWANCE < (duration / 3600.0):
                    raise serializers.ValidationError(
                        _("Proposal {} does not have enough time allocated in semester {} on {} telescopes"
                          ).format(data['proposal'], tak.semester,
                                   tak.telescope_class))
            # validate the ipp debitting that will take place later
            validate_ipp(data, total_duration_dict)
        except ObjectDoesNotExist:
            raise serializers.ValidationError(
                _("You do not have sufficient time allocated on the resource you're requesting for this proposal."
                  ))
        except TimeAllocationError as e:
            raise serializers.ValidationError(repr(e))

        return data

    def validate_requests(self, value):
        if not value:
            raise serializers.ValidationError(
                _('You must specify at least 1 request'))
        return value
class AlbumSerializerWithStringRelatedField(serializers.ModelSerializer):
    tracks = serializers.StringRelatedField(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')
Ejemplo n.º 23
0
class OrderItemSerializer(serializers.ModelSerializer):
    drink = serializers.StringRelatedField()

    class Meta:
        model = models.OrderItem
        fields = '__all__'
Ejemplo n.º 24
0
class AllFieldsSerializer(serializers.ModelSerializer):
    field_decimal_uncoerced = serializers.DecimalField(
        source='field_decimal',
        max_digits=6,
        decimal_places=3,
        coerce_to_string=False
    )
    field_method_float = serializers.SerializerMethodField()

    def get_field_method_float(self, obj) -> float:
        return 1.3456

    field_method_object = serializers.SerializerMethodField()

    def get_field_method_object(self, obj) -> dict:
        return {'key': 'value'}

    field_regex = serializers.RegexField(r'^[a-zA-z0-9]{10}\-[a-z]')

    # composite fields
    field_list = serializers.ListField(
        child=serializers.FloatField(), min_length=3, max_length=100,
    )
    field_list_serializer = serializers.ListField(
        child=AuxSerializer(),
        source='field_list_object',
    )

    # extra related fields
    field_related_slug = serializers.SlugRelatedField(
        read_only=True, source='field_foreign', slug_field='id'
    )
    field_related_string = serializers.StringRelatedField(
        source='field_foreign'
    )
    field_related_hyperlink = serializers.HyperlinkedRelatedField(
        read_only=True, source='field_foreign', view_name='aux-detail'
    )
    field_identity_hyperlink = serializers.HyperlinkedIdentityField(
        read_only=True, view_name='allfields-detail'
    )

    # read only - model traversal
    field_read_only_nav_uuid = serializers.ReadOnlyField(source='field_foreign.id')
    field_read_only_nav_uuid_3steps = serializers.ReadOnlyField(
        source='field_foreign.field_foreign.field_foreign.id',
        allow_null=True,  # force field output even if traversal fails
    )
    field_read_only_model_function_basic = serializers.ReadOnlyField(source='model_function_basic')
    field_read_only_model_function_model = serializers.ReadOnlyField(source='model_function_model.id')

    # override default writable bool field with readonly
    field_bool_override = serializers.ReadOnlyField()

    field_model_property_float = serializers.ReadOnlyField()

    field_model_cached_property_float = serializers.ReadOnlyField()

    field_dict_int = serializers.DictField(
        child=serializers.IntegerField(),
        source='field_json',
    )

    # there is a JSON model field for django>=3.1 that would be placed automatically. for <=3.1 we
    # need to set the field explicitly. defined here for both cases to have consistent ordering.
    field_json = serializers.JSONField()

    class Meta:
        fields = '__all__'
        model = AllFields
Ejemplo n.º 25
0
class User_puntuationSerializer(serializers.ModelSerializer):
    AccountSerializer = serializers.StringRelatedField(many=True)

    class Meta:
        model = User_puntuation
        fields = '__all__'
Ejemplo n.º 26
0
class ExportOrderItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = OrderItem
        fields = ('product', 'quantity', 'cost')

    product = serializers.StringRelatedField()
class VisitGetSerializer(serializers.ModelSerializer):
    patient = serializers.StringRelatedField()

    class Meta:
        model = Visit
        fields = '__all__'
Ejemplo n.º 28
0
class ProductParameterPriceSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductParameter
        fields = ('parameter', 'value')

    parameter = serializers.StringRelatedField()
Ejemplo n.º 29
0
class ProjectSerializer(serializers.ModelSerializer):
    members = serializers.StringRelatedField(many=True)

    class Meta:
        model = Project
        fields = '__all__'
class ProfilDurumSerializer(serializers.ModelSerializer):
    user_profil = serializers.StringRelatedField(read_only=True)

    class Meta:
        model = ProfilDurum
        fields = '__all__'