def past_x_days(self, qs, name, days): self.start_date = _truncate(now() - timedelta(days=days)) self.end_date = _truncate(now() + timedelta(days=1)) return qs.filter(**{ '%s__gte' % name: self.start_date, '%s__lt' % name: self.end_date, })
def any(self, qs, name): findings = Finding.objects.all() if findings: first_date = findings.order_by("date")[:1][0].date start_date = local_tz.localize(datetime.combine(first_date, datetime.min.time())) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1)) return qs.all()
def any(self, qs, name): if get_earliest_finding() is not None: start_date = local_tz.localize(datetime.combine( get_earliest_finding().date, datetime.min.time()) ) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1)) return qs.all()
def __init__(self, *args, **kwargs): kwargs["choices"] = [(key, value[0]) for key, value in six.iteritems(self.options)] super(MetricsDateRangeFilter, self).__init__(*args, **kwargs) findings = Finding.objects.all() if findings: first_date = findings.order_by("date")[:1][0].date start_date = local_tz.localize(datetime.combine(first_date, datetime.min.time())) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1))
def __init__(self, *args, **kwargs): kwargs['choices'] = [(key, value[0]) for key, value in six.iteritems(self.options)] super(MetricsDateRangeFilter, self).__init__(*args, **kwargs) findings = Finding.objects.all() if findings: first_date = findings.order_by('date')[:1][0].date start_date = local_tz.localize( datetime.combine(first_date, datetime.min.time())) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1))
def filter(self, qs, value): if get_earliest_finding() is not None: start_date = local_tz.localize( datetime.combine(get_earliest_finding().date, datetime.min.time())) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1)) try: value = int(value) except (ValueError, TypeError): value = '' return self.options[value][1](self, qs, self.name)
def filter(self, qs, value): if get_earliest_finding() is not None: start_date = local_tz.localize(datetime.combine( get_earliest_finding().date, datetime.min.time()) ) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1)) try: value = int(value) except (ValueError, TypeError): value = '' return self.options[value][1](self, qs, self.name)
def any(self, qs, name): try: earliest_finding = Finding.objects.earliest('date') except Finding.DoesNotExist: earliest_finding = None if earliest_finding: start_date = local_tz.localize(datetime.combine( earliest_finding.date, datetime.min.time()) ) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1)) return qs.all()
def validate_date(date, filter_lookup): # Today if date == 1: filter_lookup['date__year'] = now().year filter_lookup['date__month'] = now().month filter_lookup['date__day'] = now().day # Past 7 Days elif date == 2: filter_lookup['date__gte'] = _truncate(now() - timedelta(days=7)) filter_lookup['date__lt'] = _truncate(now() + timedelta(days=1)) # Past 30 Days elif date == 3: filter_lookup['date__gte'] = _truncate(now() - timedelta(days=30)) filter_lookup['date__lt'] = _truncate(now() + timedelta(days=1)) # Past 90 Days elif date == 4: filter_lookup['date__gte'] = _truncate(now() - timedelta(days=90)) filter_lookup['date__lt'] = _truncate(now() + timedelta(days=1)) # Current Month elif date == 5: filter_lookup['date__year'] = now().year filter_lookup['date__month'] = now().month # Current Year elif date == 6: filter_lookup['date__year'] = now().year # Past Year elif date == 7: filter_lookup['date__gte'] = _truncate(now() - timedelta(days=365)) filter_lookup['date__lt'] = _truncate(now() + timedelta(days=1))
def __init__(self, *args, **kwargs): kwargs['choices'] = [(key, value[0]) for key, value in six.iteritems(self.options)] super(FindingStatusFilter, self).__init__(*args, **kwargs) try: earliest_finding = Finding.objects.earliest('date') except Finding.DoesNotExist: earliest_finding = None if earliest_finding: start_date = local_tz.localize( datetime.combine(earliest_finding.date, datetime.min.time())) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1))
def __init__(self, *args, **kwargs): kwargs['choices'] = [ (key, value[0]) for key, value in six.iteritems(self.options)] super(FindingStatusFilter, self).__init__(*args, **kwargs) try: earliest_finding = Finding.objects.earliest('date') except Finding.DoesNotExist: earliest_finding = None if earliest_finding: start_date = local_tz.localize(datetime.combine( earliest_finding.date, datetime.min.time()) ) self.start_date = _truncate(start_date - timedelta(days=1)) self.end_date = _truncate(now() + timedelta(days=1))
def filter(self, qs, value): try: value = int(value) except (ValueError, TypeError): value = 0 if value >= 0: return qs.filter( **{ "%s__gte" % self.name: _truncate(now() + timedelta(days=1)), "%s__lt" % self.name: _truncate(now() + timedelta(days=value)), } ) else: return qs.filter( **{ "%s__gte" % self.name: _truncate(now() - timedelta(days=-value)), "%s__lt" % self.name: _truncate(now() + timedelta(days=1)), } )
class ForwardDateRangeFilter(DateRangeFilter): choices = [ ('', _('Any date')), ('today', _('Today')), ('week', _('This week')), ('nextweek', _('Next week')), ('month', _('Next month')), ] filters = { '': lambda qs, name: qs.all(), 'today': lambda qs, name: qs.filter( **{ '%s__year' % name: now().year, '%s__month' % name: now().month, '%s__day' % name: now().day }), 'week': lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=now().weekday())), '%s__lt' % name: _truncate(now() + timedelta(days=7 - now().weekday())), }), 'nextweek': lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() + timedelta(days=7 - now().weekday())), '%s__lt' % name: _truncate(now() + timedelta(days=14 - now().weekday())), }), 'month': lambda qs, name: qs.filter( **{ '%s__year' % name: now().year + (1 if now().month == 11 else 0), '%s__month' % name: now().month + 1 if now().month < 11 else 0 }), }
class DateRangeFilter(ChoiceFilter): options = { '': (_('Any date'), lambda qs, name: qs.all()), 1: (_('Today'), lambda qs, name: qs.filter( **{ '%s__year' % name: now().year, '%s__month' % name: now().month, '%s__day' % name: now().day })), 2: (_('Past 7 days'), lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=7)), '%s__lt' % name: _truncate(now() + timedelta(days=1)), })), 3: (_('Past 30 days'), lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=30)), '%s__lt' % name: _truncate(now() + timedelta(days=1)), })), 4: (_('Past 90 days'), lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=90)), '%s__lt' % name: _truncate(now() + timedelta(days=1)), })), 5: (_('Current month'), lambda qs, name: qs.filter(**{ '%s__year' % name: now().year, '%s__month' % name: now().month })), 6: (_('Current year'), lambda qs, name: qs.filter(**{ '%s__year' % name: now().year, })), 7: (_('Past year'), lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=365)), '%s__lt' % name: _truncate(now() + timedelta(days=1)), })), } def __init__(self, *args, **kwargs): kwargs['choices'] = [(key, value[0]) for key, value in six.iteritems(self.options)] super(DateRangeFilter, self).__init__(*args, **kwargs) def filter(self, qs, value): try: value = int(value) except (ValueError, TypeError): value = '' return self.options[value][1](qs, self.name)
class ForwardDateRangeFilter(DateRangeFilter): options = { '': (_('Any date'), lambda qs, name: qs.all()), 1: (_('Today'), lambda qs, name: qs.filter(**{ '%s__year' % name: now().year, '%s__month' % name: now().month, '%s__day' % name: now().day })), 2: (_('This week'), lambda qs, name: qs.filter(**{ '%s__gte' % name: _truncate(now() - timedelta(days=now().weekday())), '%s__lt' % name: _truncate(now() + timedelta(days=7-now().weekday())), })), 3: (_('Next week'), lambda qs, name: qs.filter(**{ '%s__gte' % name: _truncate(now() + timedelta(days=7-now().weekday())), '%s__lt' % name: _truncate(now() + timedelta(days=14-now().weekday())), })), 4: (_('Next month'), lambda qs, name: qs.filter(**{ '%s__year' % name: now().year + (1 if now().month == 11 else 0), '%s__month' % name: now().month + 1 if now().month < 11 else 0 })), }
def filter(self, qs, value): try: value = int(value) except (ValueError, TypeError): value = 0 if value >= 0: return qs.filter( **{ '%s__gte' % self.field_name: _truncate(now() + timedelta(days=1)), '%s__lt' % self.field_name: _truncate(now() + timedelta(days=value)), }) else: return qs.filter( **{ '%s__gte' % self.field_name: _truncate(now() - timedelta(days=-value)), '%s__lt' % self.field_name: _truncate(now() + timedelta(days=1)), })
class NotificationFilter(django_filters.FilterSet): timestamp_choices = [('today', _('Today')), ('yesterday', _('Yesterday')), ('week', _('Past 7 days')), ('month', _('This month'))] timestamp_filters = { 'today': lambda qs, name: qs.filter( **{ '%s__year' % name: now().year, '%s__month' % name: now().month, '%s__day' % name: now().day }), 'yesterday': lambda qs, name: qs.filter( **{ '%s__year' % name: (now() - timedelta(days=1)).year, '%s__month' % name: (now() - timedelta(days=1)).month, '%s__day' % name: (now() - timedelta(days=1)).day, }), 'week': lambda qs, name: qs.filter( **{ '%s__gte' % name: _truncate(now() - timedelta(days=7)), '%s__lt' % name: _truncate(now() + timedelta(days=1)), }), 'month': lambda qs, name: qs.filter(**{ '%s__year' % name: now().year, '%s__month' % name: now().month }) } date = DateRangeFilter(field_name='timestamp', choices=timestamp_choices, filters=timestamp_filters) class Meta: model = Activity fields = {}