示例#1
0
 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,
     })
示例#2
0
 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()
示例#3
0
 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()
示例#4
0
    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))
示例#5
0
    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)
示例#7
0
 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)
示例#8
0
    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()
示例#9
0
    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()
示例#10
0
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))
示例#11
0
    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))
示例#12
0
    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))
示例#13
0
 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)),
             }
         )
示例#14
0
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
            }),
    }
示例#15
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)
示例#16
0
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
        })),
    }
示例#17
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)),
             })
示例#18
0
文件: filters.py 项目: HyphaApp/hypha
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 = {}