Example #1
0
 def range(self, lower, upper):
     self._check_type(lower)
     self._check_type(upper)
     if self.field.type_ not in (
             int,
             float,
             datetime.date,
             datetime.time,
             datetime.datetime,
     ):
         raise TypeError("Range is only valid for number types")
     if self.field.type_ in (datetime.date, datetime.time,
                             datetime.datetime):
         lower = _handle_datetimes(lower)
         upper = _handle_datetimes(upper)
     if upper <= lower:
         raise InvalidDetaQuery("Lower must be less than upper")
     return DetaQuery(condition=f"{self.field.name}?r",
                      value=[lower, upper])
Example #2
0
 def contains(self, other: str):
     if not isinstance(other, str) or self.field.type_ in NON_STR_TYPES:
         raise InvalidDetaQuery(
             "Contains is only valid for strings or lists of strings")
     return DetaQuery(condition=f"{self.field.name}?contains", value=other)
Example #3
0
 def _query_expression(self, operator, data):
     if isinstance(data, BaseModel):
         data = ujson.loads(data.json())
     return DetaQuery(condition=f"{self.field.name}?{operator}", value=data)
Example #4
0
 def __eq__(self, other):
     self._check_type(other)
     return DetaQuery(condition=self.field.name,
                      value=_handle_datetimes(other))
Example #5
0
def query_four():
    return DetaQuery(condition="condition4", value="value4")
Example #6
0
def query_three():
    return DetaQuery(condition="condition3", value="value3")
Example #7
0
def query_two():
    return DetaQuery(condition="condition2", value="value2")
Example #8
0
def query_one():
    return DetaQuery(condition="condition1", value="value1")
Example #9
0
def test_init():
    item = DetaQuery(condition="condition", value="value")
    assert item.condition == "condition"
    assert item.value == "value"