Exemple #1
0
class DeclEnumType(SchemaType, TypeDecorator):
    """Declarative enumeration type."""

    def __init__(self, enum: Any) -> None:
        self.enum = enum
        self.impl = Enum(
            *enum.values(),
            name="ck{0}".format(re.sub('([A-Z])', lambda m: "_" + m.group(1).lower(), enum.__name__))
        )

    def _set_table(self, table: Column, column: Table) -> None:
        self.impl._set_table(table, column)

    def copy(self) -> DeclEnumType:
        """Get enumeration type of self."""
        return DeclEnumType(self.enum)

    def process_bind_param(self, value: EnumSymbol, dialect: SQLiteDialect_pysqlite) -> str:
        """Get process bind parameter."""
        if value is None:
            return None
        return value.value

    def process_result_value(self, value: str, dialect: SQLiteDialect_pysqlite) -> EnumSymbol:
        """Get process result value."""
        if value is None:
            return None
        return self.enum.from_string(value.strip())
Exemple #2
0
class DeclEnumType(SchemaType, TypeDecorator):
        def __init__(self, enum):
            self.enum = enum
            self.impl = Enum(
                *enum.values(),
                name="ck%s" % re.sub(
                    '([A-Z])',
                    lambda m: "_" + m.group(1).lower(),
                    enum.__name__)
            )

        def _set_table(self, table, column):
            self.impl._set_table(table, column)

        def copy(self):
            return DeclEnumType(self.enum)

        def process_bind_param(self, value, dialect):
            if value is None:
                return None
            return value.value

        def process_result_value(self, value, dialect):
            if value is None:
                return None
            return self.enum.from_string(value.strip())
Exemple #3
0
class DeclEnumType(SchemaType, TypeDecorator):
    def __init__(self, enum):
        self.enum = enum
        self.impl = Enum(*enum.values(),
                         name="ck%s" %
                         re.sub('([A-Z])', lambda m: "_" + m.group(1).lower(),
                                enum.__name__))

    def _set_table(self, table, column):
        self.impl._set_table(table, column)

    def copy(self):
        return DeclEnumType(self.enum)

    def process_bind_param(self, value, dialect):
        if value is None:
            return None
        return value.value

    def process_result_value(self, value, dialect):
        if value is None:
            return None
        return self.enum.from_string(value.strip())