Commit f8df32dd authored by Zaytsev Dmitriy's avatar Zaytsev Dmitriy

uuid filter implementation

parent 7fa26ab2
...@@ -339,6 +339,22 @@ class EnumFilterNotInList(FilterNotInList): ...@@ -339,6 +339,22 @@ class EnumFilterNotInList(FilterNotInList):
return values return values
class UuidFilterEqual(FilterEqual, filters.BaseUuidFilter):
pass
class UuidFilterNotEqual(FilterNotEqual, filters.BaseUuidFilter):
pass
class UuidFilterInList(filters.BaseUuidListFilter, FilterInList):
pass
class UuidFilterNotInList(filters.BaseUuidListFilter, FilterNotInList):
pass
# Base SQLA filter field converter # Base SQLA filter field converter
class FilterConverter(filters.BaseFilterConverter): class FilterConverter(filters.BaseFilterConverter):
strings = (FilterLike, FilterNotLike, FilterEqual, FilterNotEqual, strings = (FilterLike, FilterNotLike, FilterEqual, FilterNotEqual,
...@@ -362,6 +378,8 @@ class FilterConverter(filters.BaseFilterConverter): ...@@ -362,6 +378,8 @@ class FilterConverter(filters.BaseFilterConverter):
time_filters = (TimeEqualFilter, TimeNotEqualFilter, TimeGreaterFilter, time_filters = (TimeEqualFilter, TimeNotEqualFilter, TimeGreaterFilter,
TimeSmallerFilter, TimeBetweenFilter, TimeNotBetweenFilter, TimeSmallerFilter, TimeBetweenFilter, TimeNotBetweenFilter,
FilterEmpty) FilterEmpty)
uuid_filters = (UuidFilterEqual, UuidFilterNotEqual, FilterEmpty,
UuidFilterInList, UuidFilterNotInList)
def convert(self, type_name, column, name, **kwargs): def convert(self, type_name, column, name, **kwargs):
filter_name = type_name.lower() filter_name = type_name.lower()
...@@ -418,3 +436,7 @@ class FilterConverter(filters.BaseFilterConverter): ...@@ -418,3 +436,7 @@ class FilterConverter(filters.BaseFilterConverter):
kwargs['enum_class'] = column.type._enum_class kwargs['enum_class'] = column.type._enum_class
return [f(column, name, options, **kwargs) for f in self.enum] return [f(column, name, options, **kwargs) for f in self.enum]
@filters.convert('uuid')
def conv_uuid(self, column, name, **kwargs):
return [f(column, name, **kwargs) for f in self.uuid_filters]
import time import time
import datetime import datetime
import uuid
from flask_admin.babel import lazy_gettext from flask_admin.babel import lazy_gettext
...@@ -269,6 +270,29 @@ class BaseTimeBetweenFilter(BaseFilter): ...@@ -269,6 +270,29 @@ class BaseTimeBetweenFilter(BaseFilter):
return False return False
class BaseUuidFilter(BaseFilter):
"""
Base uuid filter
"""
def __init__(self, name, options=None, data_type=None):
super(BaseUuidFilter, self).__init__(name,
options,
data_type='uuid')
def clean(self, value):
value = uuid.UUID(value)
return str(value)
class BaseUuidListFilter(BaseFilter):
"""
Base uuid list filter
"""
def clean(self, value):
return [str(uuid.UUID(v.strip())) for v in value.split(',') if v.strip()]
def convert(*args): def convert(*args):
""" """
Decorator for field to filter conversion routine. Decorator for field to filter conversion routine.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment