Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions backend/src/baserow/core/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,69 @@ def ready(self):
from baserow.core.formula.registries import formula_runtime_function_registry
from baserow.core.formula.runtime_formula_types import (
RuntimeAdd,
RuntimeCapitalize,
RuntimeConcat,
RuntimeDateTimeFormat,
RuntimeDay,
RuntimeDivide,
RuntimeEqual,
RuntimeGenerateUUID,
RuntimeGet,
RuntimeGetProperty,
RuntimeGreaterThan,
RuntimeGreaterThanOrEqual,
RuntimeHour,
RuntimeIsEven,
RuntimeIsOdd,
RuntimeLessThan,
RuntimeLower,
RuntimeMinus,
RuntimeMinute,
RuntimeMonth,
RuntimeMultiply,
RuntimeNotEqual,
RuntimeNow,
RuntimeRandomBool,
RuntimeRandomFloat,
RuntimeRandomInt,
RuntimeRound,
RuntimeSecond,
RuntimeToday,
RuntimeUpper,
RuntimeYear,
)

formula_runtime_function_registry.register(RuntimeConcat())
formula_runtime_function_registry.register(RuntimeGet())
formula_runtime_function_registry.register(RuntimeAdd())
formula_runtime_function_registry.register(RuntimeMinus())
formula_runtime_function_registry.register(RuntimeMultiply())
formula_runtime_function_registry.register(RuntimeDivide())
formula_runtime_function_registry.register(RuntimeEqual())
formula_runtime_function_registry.register(RuntimeNotEqual())
formula_runtime_function_registry.register(RuntimeGreaterThan())
formula_runtime_function_registry.register(RuntimeLessThan())
formula_runtime_function_registry.register(RuntimeGreaterThanOrEqual())
formula_runtime_function_registry.register(RuntimeUpper())
formula_runtime_function_registry.register(RuntimeLower())
formula_runtime_function_registry.register(RuntimeCapitalize())
formula_runtime_function_registry.register(RuntimeRound())
formula_runtime_function_registry.register(RuntimeIsEven())
formula_runtime_function_registry.register(RuntimeIsOdd())
formula_runtime_function_registry.register(RuntimeDateTimeFormat())
formula_runtime_function_registry.register(RuntimeDay())
formula_runtime_function_registry.register(RuntimeMonth())
formula_runtime_function_registry.register(RuntimeYear())
formula_runtime_function_registry.register(RuntimeHour())
formula_runtime_function_registry.register(RuntimeMinute())
formula_runtime_function_registry.register(RuntimeSecond())
formula_runtime_function_registry.register(RuntimeNow())
formula_runtime_function_registry.register(RuntimeToday())
formula_runtime_function_registry.register(RuntimeGetProperty())
formula_runtime_function_registry.register(RuntimeRandomInt())
formula_runtime_function_registry.register(RuntimeRandomFloat())
formula_runtime_function_registry.register(RuntimeRandomBool())
formula_runtime_function_registry.register(RuntimeGenerateUUID())

from baserow.core.permission_manager import (
AllowIfTemplatePermissionManagerType,
Expand Down
62 changes: 56 additions & 6 deletions backend/src/baserow/core/formula/argument_types.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
from django.core.exceptions import ValidationError

from baserow.core.formula.validator import (
ensure_datetime,
ensure_numeric,
ensure_object,
ensure_string,
)


class BaserowRuntimeFormulaArgumentType:
def test(self, value):
return True
Expand All @@ -9,22 +19,62 @@ def parse(self, value):
class NumberBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
try:
float(value)
ensure_numeric(value)
return True
except ValueError:
except ValidationError:
return False

def parse(self, value):
return float(value)
return ensure_numeric(value)


class TextBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
try:
str(value)
ensure_string(value)
return True
except ValidationError:
return False

def parse(self, value):
return ensure_string(value)


class AddableBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
return hasattr(value, "__add__")

def parse(self, value):
return value


class SubtractableBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
return hasattr(value, "__sub__")

def parse(self, value):
return value


class DateTimeBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
try:
ensure_datetime(value)
return True
except ValidationError:
return False

def parse(self, value):
return ensure_datetime(value)


class DictBaserowRuntimeFormulaArgumentType(BaserowRuntimeFormulaArgumentType):
def test(self, value):
try:
ensure_object(value)
return True
except TypeError:
except ValidationError:
return False

def parse(self, value):
return str(value)
return ensure_object(value)
Loading
Loading