Example #1
0
    def validate(self, data):

        # Validate uniqueness of (rack, position, face) since we omitted the automatically-created validator from Meta.
        if data.get('rack') and data.get('position') and data.get('face'):
            validator = UniqueTogetherValidator(queryset=Device.objects.all(), fields=('rack', 'position', 'face'))
            validator.set_context(self)
            validator(data)

        # Enforce model validation
        super(WritableDeviceSerializer, self).validate(data)

        return data
Example #2
0
    def validate(self, data):

        # Validate uniqueness of (site, facility_id) since we omitted the automatically-created validator from Meta.
        if data.get('facility_id', None):
            validator = UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('site', 'facility_id'))
            validator.set_context(self)
            validator(data)

        # Enforce model validation
        super(WritableRackSerializer, self).validate(data)

        return data
Example #3
0
    def validate(self, data):

        # Validate uniqueness of name if one has been provided.
        if data.get('name', None):
            validator = UniqueTogetherValidator(queryset=Secret.objects.all(), fields=('device', 'role', 'name'))
            validator.set_context(self)
            validator(data)

        # Enforce model validation
        super(WritableSecretSerializer, self).validate(data)

        return data
Example #4
0
    def validate(self, data):

        # Validate uniqueness of name and slug if a site has been assigned.
        if data.get('site', None):
            for field in ['name', 'slug']:
                validator = UniqueTogetherValidator(queryset=VLANGroup.objects.all(), fields=('site', field))
                validator.set_context(self)
                validator(data)

        # Enforce model validation
        super(WritableVLANGroupSerializer, self).validate(data)

        return data
Example #5
0
    def validate(self, data):

        # Validate uniqueness of vid and name if a group has been assigned.
        if data.get('group', None):
            for field in ['vid', 'name']:
                validator = UniqueTogetherValidator(queryset=VLAN.objects.all(), fields=('group', field))
                validator.set_context(self)
                validator(data)

        # Enforce model validation
        super(WritableVLANSerializer, self).validate(data)

        return data
    def test_filter_queryset_do_not_skip_existing_attribute(self):
        """
        filter_queryset should add value from existing instance attribute
        if it is not provided in attributes dict
        """
        class MockQueryset:
            def filter(self, **kwargs):
                self.called_with = kwargs

        data = {'race_name': 'bar'}
        queryset = MockQueryset()
        validator = UniqueTogetherValidator(queryset, fields=('race_name',
                                                              'position'))
        validator.instance = self.instance
        validator.filter_queryset(attrs=data, queryset=queryset)
        assert queryset.called_with == {'race_name': 'bar', 'position': 1}
Example #7
0
    def validate(self, data):

        # Encrypt plaintext data using the master key provided from the view context
        if data.get('plaintext'):
            s = Secret(plaintext=data['plaintext'])
            s.encrypt(self.context['master_key'])
            data['ciphertext'] = s.ciphertext
            data['hash'] = s.hash

        # Validate uniqueness of name if one has been provided.
        if data.get('name'):
            validator = UniqueTogetherValidator(queryset=Secret.objects.all(), fields=('device', 'role', 'name'))
            validator.set_context(self)
            validator(data)

        # Enforce model validation
        super().validate(data)

        return data
Example #8
0
 class Meta:
     model = User
     fields = ['mobile', 'email', 'nick_name', 'password']
     validators = [
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'mobile',
                                 ],
                                 message='此手机号已经被注册'),
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'email',
                                 ],
                                 message='此邮箱已经被注册'),
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'nick_name',
                                 ],
                                 message='此用户名已经被注册'),
     ]
Example #9
0
 class Meta:
     model = Registration
     fields = "__all__"
     validators = [
         UniqueTogetherValidator(
             queryset=Registration.objects.all(),
             fields=["student", "period"],
             message=
             "A student can be only registered in one course per period",
         )
     ]
Example #10
0
 class Meta:
     model = UserSearch
     fields = (
         'id',
         'user',
         'keyword',
     )
     validators = [
         UniqueTogetherValidator(queryset=UserSearch.objects.all(),
                                 fields=['user', 'keyword'])
     ]
Example #11
0
 class Meta:
     model = PinnedComment
     fields = ('id', 'repository_id', 'issue_id', 'comment_id', 'user')
     validators = [
         UniqueTogetherValidator(
             queryset=PinnedComment.objects.all(),
             message=_('This comment has already been pinned.'),
             fields=('ext_repository_id', 'ext_issue_id', 'ext_comment_id',
                     'user'),
         )
     ]
Example #12
0
class ManufacturerCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Manufacturer
        fields = ['name', 'type']

    validators = [
        UniqueTogetherValidator(
            queryset=Manufacturer.objects.all(),
            fields=['name'],
            message='Such manufacturer name already exists')
    ]
Example #13
0
 class Meta:
     model = Mix
     fields = [
         'id', 'mix_name', 'rating', 'strength', 'compound', 'bowl',
         'description'
     ]
     validators = [
         UniqueTogetherValidator(queryset=Mix.objects.all(),
                                 fields=['mix_name'],
                                 message='Such Mix name already exists')
     ]
Example #14
0
 class Meta:
     model = User
     exclude = ('deleted', )
     validators = [
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'mobile',
                                 ],
                                 message='该手机号已经存在'),
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'email',
                                 ],
                                 message='该邮箱已经存在'),
         UniqueTogetherValidator(queryset=User.objects.all(),
                                 fields=[
                                     'username',
                                 ],
                                 message='该登录名已经存在')
     ]
Example #15
0
 class Meta:
     model = CollectionAddon
     fields = ('addon', 'notes', 'collection')
     validators = [
         UniqueTogetherValidator(
             queryset=CollectionAddon.objects.all(),
             message=_(u'This add-on already belongs to the collection'),
             fields=('addon', 'collection')),
     ]
     writeable_fields = ('notes', )
     read_only_fields = tuple(set(fields) - set(writeable_fields))
Example #16
0
 class Meta:
     # validate实现唯一联合,一个演员只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserFavorActor.objects.all(),
             fields=('user', 'actorId'),
             # message的信息可以自定义
             message="已经收藏此演员"
         )
     ]
     model = UserFavorActor
     fields = ("user", "actorId", 'name', 'avatar', 'works')
Example #17
0
 class Meta:
     # validate实现唯一联合,一个电影只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserFavorMovie.objects.all(),
             fields=('user', 'doubanId'),
             # message的信息可以自定义
             message="已经收藏此电影"
         )
     ]
     model = UserFavorMovie
     fields = ("user", "doubanId", 'title', 'poster')
Example #18
0
    class Meta:
        model = UserFav
        # 对一个Model实例需要有删除功能,就需要将id返回
        fields = ('user', 'goods', 'id')

        # 设置联合唯一字段, 让'user', 'goods'成为联合唯一,这是对数据库的操作,设置完毕后一定需要migration
        unique_together = ('user', 'goods')

        # 也可以使用rest_framework中的联合唯一索引
        validators = [
            UniqueTogetherValidator(queryset=UserFav.objects.all(), fields=('user', 'goods'), message='已经收藏过')
        ]
Example #19
0
    class Meta:
        validators = [
            # Validate call_id and record_type, together they can't repeat
            UniqueTogetherValidator(
                queryset=CallRecord.objects.all(),
                fields=('call_id', 'record_type'),
                message='The record call_id + record_type already exists'),
        ]

        model = CallRecord
        fields = ('id', 'call_id', 'phone_source', 'phone_destination',
                  'record_type', 'record_timestamp')
Example #20
0
 class Meta:
     #validate实现唯一联合,一个提案只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserFav.objects.all(),
             fields=('user', 'proposal'),
             #message的信息可以自定义
             message="已经收藏")
     ]
     model = UserFav
     #收藏的时候需要返回提案的id,因为取消收藏的时候必须知道提案的id是多少
     fields = ("user", "proposal", 'id')
Example #21
0
 class Meta:
     model = UserFav
     # validate实现唯一连个,一个商品只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserFav.objects.all(),
             fields=('user', 'goods'),
             # message信息可以自定义
             message='已收藏')
     ]
     # 收藏的时候需要返回商品的id,因为取消收藏的时候必须知道商品的id
     fields = ('user', 'goods', 'id')
Example #22
0
 class Meta:
     model = UserProject
     validators = [
         UniqueTogetherValidator(queryset=UserProject.objects.all(),
                                 fields=('project_id', 'member_id'),
                                 message="已经参加")
     ]
     fields = (
         "take_time",
         "member_id",
         "project_id",
     )
Example #23
0
 class Meta:
     # validate实现唯一联合,一个商品只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserTask.objects.all(),
             fields=('user', 'tasks'),
             #  message的信息可以自定义
             message="已经创建过该项目")
     ]
     model = UserTask
     # 收藏的时候需要返回任务的id,因为取消收藏的时候必须知道任务的id是多少
     fields = ("user", 'id')
Example #24
0
 class Meta:
     model = SavingsGroupInvite
     fields = [
         'savings_group',
         'invitee'
     ]
     validators = [
         UniqueTogetherValidator(
             queryset=SavingsGroupInvite.objects.all(),
             fields=['savings_group', 'invitee']
         )
     ]
Example #25
0
 class Meta:
     model = UserFav
     validators = [
         UniqueTogetherValidator(queryset=UserFav.objects.all(),
                                 fields=('user', 'goods'),
                                 message="已经收藏")
     ]
     fields = (
         "user",
         "goods",
         "id",
     )
Example #26
0
 class Meta:
     model = Rack
     fields = [
         'id', 'name', 'facility_id', 'display_name', 'site', 'group', 'tenant', 'status', 'role', 'serial',
         'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit',
         'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', 'powerfeed_count',
     ]
     # Omit the UniqueTogetherValidator that would be automatically added to validate (group, facility_id). This
     # prevents facility_id from being interpreted as a required field.
     validators = [
         UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('group', 'name'))
     ]
Example #27
0
    class Meta:
        model = CrontabSchedule
        fields = ('id', 'minute', 'hour', 'day_of_week', 'day_of_month',
                  'month_of_year', 'timezone')

        validators = [
            UniqueTogetherValidator(queryset=CrontabSchedule.objects.all(),
                                    fields=('minute', 'hour', 'day_of_week',
                                            'day_of_month', 'month_of_year',
                                            'timezone'),
                                    message="已存在,无需重复新增")
        ]
Example #28
0
    class Meta:
        model = User
        fields = (
            'username',
            'email',
        )
        validators = [
            UniqueTogetherValidator(queryset=User.objects.all(),
                                    fields=['username', 'email'])
        ]

        extra_kwargs = {'ranking': {'write_only': True, 'required': False}}
Example #29
0
 class Meta:
     #validate实现唯一联合,一个提案只能提一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserSponsorProposals.objects.all(),
             fields=('user', 'proposal'),
             #message的信息可以自定义
             message="已经收藏")
     ]
     model = UserSponsorProposals
     #返回提案的id
     fields = ("user", "proposal", 'id')
Example #30
0
    def validate(self, data):
        # Validate uniqueness of (group, facility_id) since we omitted the automatically-created validator from Meta.
        if data.get("facility_id", None):
            validator = UniqueTogetherValidator(queryset=Rack.objects.all(),
                                                fields=("group",
                                                        "facility_id"))
            validator(data, self)

        # Enforce model validation
        super().validate(data)

        return data
Example #31
0
 class Meta:
     model=Role
     fields=['id','downstreamPlayer','upstreamPlayer','associatedGame','roleName','playedBy','ordered']
     read_only_fields=('id','downstreamPlayer','upstreamPlayer','associatedGame','roleName','ordered')
 
     validators = [
         UniqueTogetherValidator(
             queryset=Role.objects.all(),
             fields=['associatedGame', 'playedBy'],
             message=" Player can only register for 1 Role in Each Game"
         ),
     ]
Example #32
0
    class Meta:
        model = UserFav

        validators = [
            UniqueTogetherValidator(
                queryset=UserFav.objects.all(),
                fields=['user', 'goods'],
                message="Already Faved"
            )
        ]

        fields = ("user", "goods", "id")
Example #33
0
 class Meta:
     model = AccountMergeRequest
     validators = [
         UniqueTogetherValidator(queryset=AccountMergeRequest.objects.all(),
                                 fields=('master_account',
                                         'secondary_account'),
                                 message='Merge request already exists')
     ]
     fields = (
         'master_account',
         'secondary_account',
     )
Example #34
0
    class Meta:
        model = IntervalSchedule
        fields = ('id', 'every', 'period')

        validators = [
            UniqueTogetherValidator(queryset=IntervalSchedule.objects.all(),
                                    fields=(
                                        'every',
                                        'period',
                                    ),
                                    message="已存在,无需重复新增")
        ]
Example #35
0
    class Meta:
        model = UserAddress

        validators = [
            UniqueTogetherValidator(
                queryset=UserAddress.objects.all(),
                fields=['user', 'province', 'city', 'district', 'address'],
                message="Address already existed."
            )
        ]

        fields = ("user", "province", "city", "district", "address", "signer_name", "signer_mobile", "id", "add_time")
Example #36
0
 class Meta:
     #validate实现唯一联合,一个商品只能收藏一次
     validators = [
         UniqueTogetherValidator(
             queryset=UserFav.objects.all(),
             fields=('user', 'goods'),
             #message的信息可以自定义
             message="已经收藏")
     ]
     model = UserFav
     #收藏的时候需要返回商品的id,因为取消收藏的时候必须知道商品的id是多少
     fields = ("user", "goods", 'id')
Example #37
0
    class Meta:
        model = UserFav

        # 这个validate是写在meta信息中的,是因为它不是作用于某一个字段之上了。
        validators = [
            UniqueTogetherValidator(queryset=UserFav.objects.all(),
                                    fields=('user', 'goods'),
                                    message="已经收藏")
        ]

        # 删除时需要id字段
        fields = ('user', 'goods', 'id')