def txn(entity): entity = Get(entity.key()) try: entity[self.to_column_name] = entity[self.from_column_name] except KeyError: return Put(entity)
def txn(entity): entity = Get(entity.key()) try: del entity[column_name] except KeyError: return Put(entity)
def test_options(self): entity = FieldsWithOptionsModel() # Try to save the entity with non-nullable field time set to # None, should raise an exception. self.assertRaises(DatabaseError, entity.save) time = datetime.datetime.now().time() entity.time = time entity.save() # Check if primary_key=True is set correctly for the saved entity. self.assertEquals(entity.pk, u'*****@*****.**') gae_entity = Get( Key.from_path(FieldsWithOptionsModel._meta.db_table, entity.pk)) self.assertTrue(gae_entity is not None) self.assertEquals(gae_entity.key().name(), u'*****@*****.**') # Check if default values are set correctly on the db level, # primary_key field is not stored at the db level. for field in FieldsWithOptionsModel._meta.local_fields: if field.default and field.default != NOT_PROVIDED and \ not field.primary_key: self.assertEquals(gae_entity[field.column], field.default) elif field.column == 'time': self.assertEquals( gae_entity[field.column], datetime.datetime(1970, 1, 1, time.hour, time.minute, time.second, time.microsecond)) elif field.null and field.editable: self.assertEquals(gae_entity[field.column], None) # Check if default values are set correct on the model instance # level. entity = FieldsWithOptionsModel.objects.get() for field in FieldsWithOptionsModel._meta.local_fields: if field.default and field.default != NOT_PROVIDED: self.assertEquals(getattr(entity, field.column), field.default) elif field.column == 'time': self.assertEquals(getattr(entity, field.column), time) elif field.null and field.editable: self.assertEquals(getattr(entity, field.column), None) # Check if nullable field with default values can be set to # None. entity.slug = None entity.positive_small_integer = None try: entity.save() except: self.fail() # Check if slug and positive_small_integer will be retrieved # with values set to None (on db level and model instance # level). gae_entity = Get(Key.from_path( FieldsWithOptionsModel._meta.db_table, entity.pk)) opts = FieldsWithOptionsModel._meta self.assertEquals( gae_entity[opts.get_field_by_name('slug')[0].column], None) self.assertEquals( gae_entity[opts.get_field_by_name( 'positive_small_integer')[0].column], None) # On the model instance level. entity = FieldsWithOptionsModel.objects.get() self.assertEquals( getattr(entity, opts.get_field_by_name('slug')[0].column), None) self.assertEquals( getattr(entity, opts.get_field_by_name( 'positive_small_integer')[0].column), None)
def test_options(self): entity = FieldsWithOptionsModel() # try to save the entity with non-nullable field time set to None, should # raise an exception self.assertRaises(DatabaseError, entity.save) time = datetime.datetime.now().time() entity.time = time entity.save() # check if primary_key=True is set correctly for the saved entity self.assertEquals(entity.pk, u'*****@*****.**') gae_entity = Get(Key.from_path(FieldsWithOptionsModel._meta.db_table, entity.pk)) self.assertTrue(gae_entity is not None) self.assertEquals(gae_entity.key().name(), u'*****@*****.**') # check if default values are set correctly on the db level, # primary_key field is not stored at the db level for field in FieldsWithOptionsModel._meta.local_fields: if field.default and field.default != NOT_PROVIDED and not \ field.primary_key: self.assertEquals(gae_entity[field.column], field.default) elif field.column == 'time': self.assertEquals(gae_entity[field.column], datetime.datetime( 1970, 1, 1, time.hour, time.minute, time.second, time.microsecond)) elif field.null and field.editable: self.assertEquals(gae_entity[field.column], None) # check if default values are set correct on the model instance level entity = FieldsWithOptionsModel.objects.get() for field in FieldsWithOptionsModel._meta.local_fields: if field.default and field.default != NOT_PROVIDED: self.assertEquals(getattr(entity, field.column), field.default) elif field.column == 'time': self.assertEquals(getattr(entity, field.column), time) elif field.null and field.editable: self.assertEquals(getattr(entity, field.column), None) # check if nullable field with default values can be set to None entity.slug = None entity.positiv_small_integer = None try: entity.save() except: self.fail() # check if slug and positiv_small_integer will be retrieved with values # set to None (on db level and model instance level) gae_entity = Get(Key.from_path(FieldsWithOptionsModel._meta.db_table, entity.pk)) self.assertEquals(gae_entity[FieldsWithOptionsModel._meta.get_field_by_name( 'slug')[0].column], None) self.assertEquals(gae_entity[FieldsWithOptionsModel._meta.get_field_by_name( 'positiv_small_integer')[0].column], None) # on the model instance level entity = FieldsWithOptionsModel.objects.get() self.assertEquals(getattr(entity, FieldsWithOptionsModel._meta.get_field_by_name( 'slug')[0].column), None) self.assertEquals(getattr(entity, FieldsWithOptionsModel._meta.get_field_by_name( 'positiv_small_integer')[0].column), None)
def txn(entity): entity = Get(entity.key()) entity[column_name] = value Put(entity)