def test_update(self): instance = BitFieldTestModel.objects.create(flags=0) self.assertFalse(instance.flags.FLAG_0) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitor(F("flags"), BitFieldTestModel.flags.FLAG_1)) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertTrue(instance.flags.FLAG_1) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitor(F("flags"), ((~BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_3)))) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertFalse(instance.flags.FLAG_0) self.assertTrue(instance.flags.FLAG_1) self.assertTrue(instance.flags.FLAG_3) self.assertFalse( BitFieldTestModel.objects.filter(flags=F("flags").bitor( BitFieldTestModel.flags.FLAG_0)).exists()) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitand(F("flags"), ~BitFieldTestModel.flags.FLAG_3)) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertFalse(instance.flags.FLAG_0) self.assertTrue(instance.flags.FLAG_1) self.assertFalse(instance.flags.FLAG_3)
def test_update(self): instance = BitFieldTestModel.objects.create(flags=0) self.assertFalse(instance.flags.FLAG_0) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitor(F('flags'), BitFieldTestModel.flags.FLAG_1) ) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertTrue(instance.flags.FLAG_1) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitor( F('flags'), ((~BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_3)) ) ) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertFalse(instance.flags.FLAG_0) self.assertTrue(instance.flags.FLAG_1) self.assertTrue(instance.flags.FLAG_3) self.assertFalse( BitFieldTestModel.objects.filter(flags=BitFieldTestModel.flags.FLAG_0).exists() ) BitFieldTestModel.objects.filter(pk=instance.pk).update( flags=bitand(F('flags'), ~BitFieldTestModel.flags.FLAG_3) ) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertFalse(instance.flags.FLAG_0) self.assertTrue(instance.flags.FLAG_1) self.assertFalse(instance.flags.FLAG_3)
def queryset(self, request, queryset): _filter = dict((p, bitor(F(p), v)) for p, v in six.iteritems(self.used_parameters)) try: return queryset.filter(**_filter) except ValidationError as e: raise IncorrectLookupParameters(e)
def test_update_with_handler(self): instance = BitFieldTestModel.objects.create(flags=0) self.assertFalse(instance.flags.FLAG_0) instance.flags.FLAG_1 = True BitFieldTestModel.objects.filter(pk=instance.pk).update(flags=bitor(F('flags'), instance.flags)) instance = BitFieldTestModel.objects.get(pk=instance.pk) self.assertTrue(instance.flags.FLAG_1)
def queryset(self, request, queryset): _filter = {p: bitor(F(p), v) for p, v in self.used_parameters.items()} try: return queryset.filter(**_filter) except ValidationError as e: raise IncorrectLookupParameters(e)
def queryset(self, request, queryset): filter = dict((p, bitor(F(p), v)) for p, v in six.iteritems(self.used_parameters)) try: return queryset.filter(**filter) except ValidationError as e: raise IncorrectLookupParameters(e)