def __delitem__(self, name): field = self.schema[name] field.interface = None del self.schema._InterfaceClass__attrs[name] sch = getUtility(ISchemaType, self.__context__.oid) for column in storage.mapFieldToColumns(field): getattr(sch.Type.__table__.c, column.name).drop() self.updateSchema()
def __setitem__(self, name, field): field.__name__ = name if self.schema._InterfaceClass__attrs.has_key(name): raise KeyError('Field already exists %s'%name) self.schema._InterfaceClass__attrs[name] = field sch = getUtility(ISchemaType, self.__context__.oid) for column in storage.mapFieldToColumns(field): column.create(sch.Type.__table__, populate_default=True) self.updateSchema()