def filter_kwargs(self, qs, now=datetime.now): # Support Count() as m2m__count field_name = self.annotated_field_name field_name = '__'.join([field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if self.field_value.startswith('now-'): field_value = self.field_value.replace('now-', '') field_value = now() - djangotimedelta.parse(field_value) elif self.field_value.startswith('now+'): field_value = self.field_value.replace('now+', '') field_value = now() + djangotimedelta.parse(field_value) elif self.field_value.startswith('today-'): field_value = self.field_value.replace('today-', '') field_value = now().date() - djangotimedelta.parse(field_value) elif self.field_value.startswith('today+'): field_value = self.field_value.replace('today+', '') field_value = now().date() + djangotimedelta.parse(field_value) # F expressions if self.field_value.startswith('F_'): field_value = self.field_value.replace('F_', '') field_value = models.F(field_value) # set booleans if self.field_value == 'True': field_value = True if self.field_value == 'False': field_value = False kwargs = {field_name: field_value} return kwargs
def apply(self, qs, now=datetime.now): field_name = '__'.join([self.field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if field_value.startswith('now-'): field_value = self.field_value.replace('now-', '') delta = djangotimedelta.parse(field_value) field_value = now() - delta elif field_value.startswith('now+'): field_value = self.field_value.replace('now+', '') delta = djangotimedelta.parse(field_value) field_value = now() + delta # set booleans if field_value == 'True': field_value = True if field_value == 'False': field_value = False kwargs = {field_name: field_value} if self.method_type == 'filter': return qs.filter(**kwargs) elif self.method_type == 'exclude': return qs.exclude(**kwargs) # catch as default return qs.filter(**kwargs)
def apply(self, qs, now=datetime.now): if self.annotate != 'none': field_name = "%s__annotate%s" % (self.field_name, self.id) if self.annotate == 'sum': _kwargs = { field_name: Sum(self.field_name) } elif self.annotate == 'count': _kwargs = { field_name: Count(self.field_name) } elif self.annotate == 'min': _kwargs = { field_name: Min(self.field_name) } elif self.annotate == 'max': _kwargs = { field_name: Max(self.field_name) } elif self.annotate == 'avg': _kwargs = { field_name: Avg(self.field_name) } qs = qs.annotate(**_kwargs) else: field_name = self.field_name field_name = '__'.join([field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if field_value.startswith('now-'): field_value = self.field_value.replace('now-', '') delta = djangotimedelta.parse(field_value) field_value = now() - delta elif field_value.startswith('now+'): field_value = self.field_value.replace('now+', '') delta = djangotimedelta.parse(field_value) field_value = now() + delta # set booleans if field_value == 'True': field_value = True if field_value == 'False': field_value = False kwargs = {field_name: field_value} if self.method_type == 'filter': return qs.filter(**kwargs) elif self.method_type == 'exclude': return qs.exclude(**kwargs) # catch as default return qs.filter(**kwargs)
def apply(self, qs, now=datetime.now): if self.annotate != 'none': field_name = "%s__annotate%s" % (self.field_name, self.id) if self.annotate == 'sum': _kwargs = {field_name: Sum(self.field_name)} elif self.annotate == 'count': _kwargs = {field_name: Count(self.field_name)} elif self.annotate == 'min': _kwargs = {field_name: Min(self.field_name)} elif self.annotate == 'max': _kwargs = {field_name: Max(self.field_name)} elif self.annotate == 'avg': _kwargs = {field_name: Avg(self.field_name)} qs = qs.annotate(**_kwargs) else: field_name = self.field_name field_name = '__'.join([field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if field_value.startswith('now-'): field_value = self.field_value.replace('now-', '') delta = djangotimedelta.parse(field_value) field_value = now() - delta elif field_value.startswith('now+'): field_value = self.field_value.replace('now+', '') delta = djangotimedelta.parse(field_value) field_value = now() + delta # set booleans if field_value == 'True': field_value = True if field_value == 'False': field_value = False kwargs = {field_name: field_value} if self.method_type == 'filter': return qs.filter(**kwargs) elif self.method_type == 'exclude': return qs.exclude(**kwargs) # catch as default return qs.filter(**kwargs)
def apply(self, qs, now=datetime.now): # Support Count() as m2m__count field_name = self.field_name if field_name.endswith('__count'): agg, _, _ = self.field_name.rpartition('__') field_name = 'num_%s' % agg qs = qs.annotate(**{field_name: models.Count(agg)}) field_name = '__'.join([field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if field_value.startswith('now-'): field_value = self.field_value.replace('now-', '') delta = djangotimedelta.parse(field_value) field_value = now() - delta elif field_value.startswith('now+'): field_value = self.field_value.replace('now+', '') delta = djangotimedelta.parse(field_value) field_value = now() + delta # set booleans if field_value == 'True': field_value = True if field_value == 'False': field_value = False kwargs = {field_name: field_value} if self.method_type == 'filter': return qs.filter(**kwargs) elif self.method_type == 'exclude': return qs.exclude(**kwargs) # catch as default return qs.filter(**kwargs)
def apply(self, qs, now=datetime.now): # Support Count() as m2m__count field_name = self.field_name if field_name.endswith("__count"): agg, _, _ = self.field_name.rpartition("__") field_name = "num_%s" % agg qs = qs.annotate(**{field_name: models.Count(agg)}) field_name = "__".join([field_name, self.lookup_type]) field_value = self.field_value # set time deltas and dates if field_value.startswith("now-"): field_value = self.field_value.replace("now-", "") delta = djangotimedelta.parse(field_value) field_value = now() - delta elif field_value.startswith("now+"): field_value = self.field_value.replace("now+", "") delta = djangotimedelta.parse(field_value) field_value = now() + delta # set booleans if field_value == "True": field_value = True if field_value == "False": field_value = False kwargs = {field_name: field_value} if self.method_type == "filter": return qs.filter(**kwargs) elif self.method_type == "exclude": return qs.exclude(**kwargs) # catch as default return qs.filter(**kwargs)