class ProjectFilter(filters.FilterSet): create_date = DateFromToRangeFilter() update_date = DateFromToRangeFilter() class Meta: model = Project fields = [ 'pid', 'status', 'demand__name', 'action_user__username', 'create_date', 'update_date' ]
class BaseTransectFilterSet(OrFilterSetMixin, GeoFilterSet): id = BaseInFilter(method="id_lookup") site_id = BaseInFilter(method="id_lookup") site_name = BaseInFilter(method="char_lookup") site_within = GeometryFilter(field_name="location", lookup_expr='within') country_id = BaseInFilter(method='id_lookup') country_name = BaseInFilter(method="char_lookup") sample_date = DateFromToRangeFilter() tag_id = BaseInFilter(field_name='tags', method='json_id_lookup') tag_name = BaseInFilter(field_name='tags', method='json_name_lookup') management_id = BaseInFilter(method="id_lookup") management_name = BaseInFilter(method="full_management_name") management_est_year = DateFromToRangeFilter() management_size = RangeFilter() management_party = BaseInFilter(field_name="management_parties", method="char_lookup") management_compliance = BaseInFilter(method="char_lookup") management_rule = BaseInFilter(field_name="management_rules", method="char_lookup") current_name = BaseInFilter(method="char_lookup") tide_name = BaseInFilter(method="char_lookup") visibility_name = BaseInFilter(method="char_lookup") class Meta: fields = [ "site_id", "site_name", "site_within", "country_id", "country_name", "sample_date", "tag_id", "tag_name", "reef_type", "reef_zone", "reef_exposure", "management_id", "management_name", "management_est_year", "management_size", "management_party", "management_compliance", "management_rule", "current_name", "tide_name", "visibility_name", ] def full_management_name(self, queryset, name, value): fields = ["management_name", "management_name_secondary"] return self.str_or_lookup(queryset, fields, value, lookup_expr="icontains")
class ValuationFilter(django_filters.FilterSet): date = DateFromToRangeFilter(field_name='date_created') date_updated = DateFromToRangeFilter(field_name='last_update') def __init__(self, data=None, queryset=None, *, request=None, prefix=None): super(ValuationFilter, self).__init__(data=data, queryset=queryset, request=request, prefix=prefix) self.filters['client'].field.widget.attrs.update({'class': 'form-control'}) self.filters['status'].field.widget.attrs.update({'class': 'form-control'}) self.filters['message'].field.widget.attrs.update({'class': 'form-control'}) self.filters['cost'].field.widget.attrs.update({'class': 'form-control'}) class Meta: model = Valuation fields = ['client', 'status', 'message', 'cost']
class OpsProjectFilter(filters.FilterSet): create_date = DateFromToRangeFilter() update_date = DateFromToRangeFilter() status = CharFilter(method='status_custom_filter') def status_custom_filter(self, queryset, name, value): queryset_list = [] for s in value.split(','): queryset_list += queryset.filter(status=s) return queryset_list class Meta: model = OpsProject fields = ['pid', 'status', 'demand__id', 'create_date', 'update_date']
class InvoiceFilter(FilterSet): status = MultipleChoiceFilter( choices=INVOICE_STATUS, widget=CheckboxSelectMultiple(attrs={'class': 'list-unstyled'}), label=_('Status'), ) invoice_date = DateFromToRangeFilter(label=_('Invoice Date')) invoice_due_date = DateFromToRangeFilter(label=_('Due Date')) total_amount = RangeFilter(widget=NumericRangeWidget(), label=_('Total Amount')) taxpayer__business_name = CharFilter( lookup_expr='icontains', widget=TextInput(attrs={ 'class': 'form-control', "list": "taxpayers", }), label=_('Organization'), ) taxpayer__country = CharFilter( widget=Select(choices=[('AR', 'AR'), ('BR', 'BR'), ('US', 'US')], attrs={'class': 'custom-select'}), label=_('Country'), ) new_comment_from_ap = MultipleChoiceFilter( choices=INVOICE_SHOW_ONLY_NEW_MESSAGES, widget=CheckboxSelectMultiple(attrs={'class': 'list-unstyled'}), label=_('Messages'), ) new_comment_from_supplier = MultipleChoiceFilter( choices=INVOICE_SHOW_ONLY_NEW_MESSAGES, widget=CheckboxSelectMultiple(attrs={'class': 'list-unstyled'}), label=_('Messages'), ) class Meta: model = Invoice fields = ('new_comment_from_ap', 'new_comment_from_supplier', 'invoice_date', 'invoice_due_date', 'status', 'total_amount', 'taxpayer__business_name', 'taxpayer__country') def get_form_class(self): form = super(FilterSet, self).get_form_class() form.base_fields['invoice_date'].widget = DateRangeWidget() form.base_fields['invoice_due_date'].widget = DateRangeWidget() return form
class ProjectFilter(django_filters.FilterSet): date = DateFromToRangeFilter(field_name='date_created') date_updated = DateFromToRangeFilter(field_name='update_date') def __init__(self, data=None, queryset=None, *, request=None, prefix=None): super(ProjectFilter, self).__init__(data=data, queryset=queryset, request=request, prefix=prefix) self.filters['client'].field.widget.attrs.update({'class': 'form-control'}) self.filters['status'].field.widget.attrs.update({'class': 'form-control'}) self.filters['employees'].field.widget.attrs.update({'class': 'custom-select'}) self.filters['status_advance'].field.widget.attrs.update({'class': 'form-control'}) class Meta: model = Project fields = '__all__' exclude = ['description', 'date_created', 'update_date']
class SnippetFilter(FilterSet): created_at = DateFromToRangeFilter(widget=RangeWidget( attrs={'type': 'date'})) class Meta: model = Snippet fields = ['created_at']
class OrderFilter(SortedFilterSet): id = NumberFilter( label=pgettext_lazy('Order list filter label', 'ID')) name_or_email = CharFilter( label=pgettext_lazy( 'Order list filter label', 'Email'), method='filter_by_order_customer') created = DateFromToRangeFilter( label=pgettext_lazy('Order list filter label', 'Placed on'), name='created', widget=DateRangeWidget) status = ChoiceFilter( label=pgettext_lazy( 'Order list filter label', 'Order status'), choices=OrderStatus.CHOICES, empty_label=pgettext_lazy('Filter empty choice label', 'All'), widget=forms.Select) sort_by = OrderingFilter( label=pgettext_lazy('Order list filter label', 'Sort by'), fields=SORT_BY_FIELDS, field_labels=SORT_BY_FIELDS_LABELS) class Meta: model = Order fields = [] def filter_by_order_customer(self, queryset, name, value): return queryset.filter( Q(user__email__icontains=value))
class MealFilter(django_filters.FilterSet): meal_time = TimeRangeFilter('meal_time') meal_date = DateFromToRangeFilter('meal_date') class Meta: model = Meal fields = ['meal_time', 'meal_date']
class ItemRangeFilter(FilterSet): rate = RangeFilter() date = DateFromToRangeFilter() class Meta: model = Item fields = ['rate', 'no', 'user', 'date']
class AccountFilter(filters.FilterSet): transaction__create_at = DateFromToRangeFilter() class Meta: model = Account distinct = True fields = ['user__username', 'transaction__create_at']
class AllFiltersFilterSet(FilterSet): number_AllValuesFilter = AllValuesFilter(field_name='number', lookup_expr='exact') number_AllValuesMultipleFilter_OR = AllValuesMultipleFilter(field_name='number', lookup_expr='exact', conjoined=False) # OR number_AllValuesMultipleFilter_AND = AllValuesMultipleFilter(field_name='number', lookup_expr='exact', conjoined=True) # AND number_BaseCSVFilterNumber = BaseCSVFilterNumber(field_name='number', lookup_expr='in') number_BaseInFilterNumber = BaseInFilterNumber(field_name='number', lookup_expr='in') number_BaseRangeFilterNumber = BaseRangeFilterNumber(field_name='number', lookup_expr='range') is_true_BooleanFilter = BooleanFilter(field_name='is_true', lookup_expr='exact') text_CharFilter = CharFilter(field_name='text', lookup_expr='exact') number_ChoiceFilter = ChoiceFilter(field_name='number', lookup_expr='exact', choices=NUMBER_CHOICES) date_DateFilter = DateFilter(field_name='date', lookup_expr='exact') date_DateFromToRangeFilter = DateFromToRangeFilter(field_name='date', lookup_expr='range') date_DateRangeFilter = DateRangeFilter(field_name='date', lookup_expr='exact') date_time_DateTimeFilter = DateTimeFilter(field_name='date_time', lookup_expr='exact') date_time_DateTimeFromToRangeFilter = DateTimeFromToRangeFilter(field_name='date_time', lookup_expr='range') duration_DurationFilter = DurationFilter(field_name='duration', lookup_expr='exact') iso_date_time_IsoDateTimeFilter = IsoDateTimeFilter(field_name='iso_date_time', lookup_expr='lt') iso_date_time_IsoDateTimeFromToRangeFilter = IsoDateTimeFromToRangeFilter(field_name='iso_date_time', lookup_expr='range') number_MultipleChoiceFilter_OR = MultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=False, choices=NUMBER_CHOICES) number_MultipleChoiceFilter_AND = MultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=True, choices=NUMBER_CHOICES) number_NumberFilter = NumberFilter(field_name='number', lookup_expr='exact') number_OrderingFilter = OrderingFilter(fields=('number', 'number')) number_RangeFilter = RangeFilter(field_name='number', lookup_expr='range') time_TimeFilter = TimeFilter(field_name='time', lookup_expr='exact') time_TimeRangeFilter = TimeRangeFilter(field_name='time', lookup_expr='range') number_TypedChoiceFilter = TypedChoiceFilter(field_name='number', lookup_expr='exact', choices=NUMBER_CHOICES) text_TypedMultipleChoiceFilter_OR = TypedMultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=False, choices=NUMBER_CHOICES) text_TypedMultipleChoiceFilter_AND = TypedMultipleChoiceFilter(field_name='number', lookup_expr='exact', conjoined=True, choices=NUMBER_CHOICES) uuid_UUIDFilter = UUIDFilter(field_name='uuid', lookup_expr='exact') number_LookupChoiceFilter = LookupChoiceFilter(field_name='number') class Meta: model = BenchmarkModel exclude = ['number', 'text', 'is_true', 'date', 'date_time', 'duration']
class AnalysisInformationFilter(filters.FilterSet): """" https://django-filter.readthedocs.io/en/latest/guide/usage.html DateFromToRangeFiler() :it uses datetime format values instead of numerical values. It can be used with DateTimeField. """ analysis_run__last_updated = DateFromToRangeFilter( method='filter_analysis_run__last_updated') def filter_analysis_run__last_updated(self, queryset, name, value): if value.start: queryset = queryset.filter( analysis_run__last_updated__gte=value.start) if value.stop: queryset = queryset.filter( analysis_run__last_updated__lte=value.stop) return queryset # jira_tickets = ListFilter(name='analysis_jira_ticket') class Meta: model = DlpAnalysisInformation fields = [ 'id', 'aligner', 'montage_status', 'version', 'analysis_jira_ticket', 'analysis_submission_date', 'analysis_run__run_status', 'analysis_run__last_updated', 'library__pool_id', 'reference_genome' ]
class OrderFilter(SortedFilterSet): id = NumberFilter(label=pgettext_lazy('Order list filter label', 'ID')) name_or_email = CharFilter(label=pgettext_lazy('Order list filter label', 'Customer name or email'), method=filter_by_order_customer) created = DateFromToRangeFilter(label=pgettext_lazy( 'Order list filter label', 'Placed on'), name='created', widget=DateRangeWidget) status = ChoiceFilter(label=pgettext_lazy('Order list filter label', 'Order status'), choices=OrderStatus.CHOICES, empty_label=pgettext_lazy( 'Filter empty choice label', 'All'), widget=forms.Select) payment_status = ChoiceFilter( label=pgettext_lazy('Order list filter label', 'Payment status'), name='payments__status', choices=PaymentStatus.CHOICES, empty_label=pgettext_lazy('Filter empty choice label', 'All'), widget=forms.Select) total_net = RangeFilter(label=pgettext_lazy('Order list filter label', 'Total'), widget=PriceRangeWidget) sort_by = OrderingFilter(label=pgettext_lazy('Order list filter label', 'Sort by'), fields=SORT_BY_FIELDS, field_labels=SORT_BY_FIELDS_LABELS) class Meta: model = Order fields = []
class LogFilter(FilterSet): datetoday = datetime.datetime.today().strftime("%Y-%m-%d") starttime = DateFromToRangeFilter( widget=django_filters.widgets.RangeWidget(attrs={ 'placeholder': datetoday, 'class': 'form-control', }), label='Search Dates') class Meta(): model = LogEntry fields = { 'starttime': ['exact'], 'project': ['exact'], 'worker': ['exact'], 'loggedjob': ['contains'], } # if staff status render worker field ? @property def totaltimespent(self): qs = super().qs return qs.aggregate(Sum('jobtime'))['jobtime__sum'] @property def totalcost(self): qs = super().qs cost = qs.aggregate(Sum('cost'))['cost__sum'] if cost is not None: return format(round(cost, 2))
class ConsultationFilter(django_filters.FilterSet): CSS_CLASS_CHOICES = ( ('', _('')), ('event-success', _('Low')), ('event-warning', _('Medium')), ('event-important', _('High')), ) title = django_filters.CharFilter(name='title', lookup_expr='icontains') priority = django_filters.ChoiceFilter(name='css_class', choices=CSS_CLASS_CHOICES) start = DateFromToRangeFilter(widget=RangeWidget( attrs={'placeholder': 'DD/MM/YYYY'})) zID = django_filters.ModelChoiceFilter(queryset=student.objects.all()) class Meta: model = CalendarEvent fields = ['title'] dateTimeOptions = { 'daysOfWeekDisabled': [0, 6], 'format': 'dd/mm/yyyy HH:ii P', 'hoursDisabled': [0, 9], } widgets = { #Use localization and bootstrap 3 'start': DateTimeWidget(attrs={'id': "yourdatetimeid"}, usel10n=True, bootstrap_version=3, options=dateTimeOptions), }
class ComplaintFilter(SortedFilterSet): id = NumberFilter( label=pgettext_lazy('Order list filter label', 'ID')) name_or_email = CharFilter( label=pgettext_lazy( 'Order list filter label', 'Customer name'), method='filter_by_order_customer') created = DateFromToRangeFilter( label=pgettext_lazy('Order list filter label', 'Placed on'), name='created', widget=DateRangeWidget) class Meta: model = OrderComplaint fields = [] def filter_by_order_customer(self, queryset, name, value): return queryset.filter( Q(order__user__email__icontains=value) | Q(order__user__default_billing_address__first_name__icontains=value) | Q(order__user__default_billing_address__last_name__icontains=value)) def get_summary_message(self): counter = self.qs.count() return npgettext( 'Number of matching records in the dashboard orders list', 'Found %(counter)d matching order', 'Found %(counter)d matching orders', number=counter) % {'counter': counter}
class BaseSEFilterSet(AggregatedViewFilterSet): id = BaseInFilter(method="id_lookup") sample_event_id = BaseInFilter(method="id_lookup") sample_date = DateFromToRangeFilter() management_est_year = RangeFilter() management_size = RangeFilter() management_party = BaseInFilter( field_name="management_parties", method="char_lookup" ) management_compliance = BaseInFilter(method="char_lookup") management_rule = BaseInFilter(field_name="management_rules", method="char_lookup") current_name = BaseInFilter(method="char_lookup") tide_name = BaseInFilter(method="char_lookup") visibility_name = BaseInFilter(method="char_lookup") class Meta: fields = [ "sample_event_id", "sample_date", "management_est_year", "management_size", "management_party", "management_compliance", "management_rule", "current_name", "tide_name", "visibility_name", ]
class ProductRatingFilter(SortedFilterSet): updated_at = DateFromToRangeFilter( label=pgettext_lazy('Product rating list filter label', 'Updated At'), name='updated_at', widget=widgets.RangeWidget(attrs={'class': 'datepicker'})) value = RangeFilter(label=pgettext_lazy('Product rating list filter label', 'Average Ratings'), name='value') sort_by = OrderingFilter(label=pgettext_lazy( 'Product rating list filter label', 'Sort by'), fields=PRODUCT_RATING_SORT_BY_FIELDS.keys(), field_labels=PRODUCT_RATING_SORT_BY_FIELDS) class Meta: model = ProductRating fields = ['user_id'] def get_summary_message(self): counter = self.qs.count() return npgettext( 'Number of matching records in the dashboard product rating list', 'Found %(counter)d matching product rating', 'Found %(counter)d matching product rating', number=counter) % { 'counter': counter }
class CommentsDateFilter(FilterSet): date = DateFromToRangeFilter(required=True, lookup_expr='range', field_name='comments__created', error_messages={'required': 'Required date_after and date_before filters'}) class Meta: model = Movie fields = ['comments__created']
class AlarmeringFilter(FilterSet): datum = DateFromToRangeFilter() class Meta: model = Alarmering fields = ['regio', 'dienst', 'capcodes', 'prio1', 'brandinfo', 'plaats', 'datum']
class DateFromToRangeFilterSet(FilterSet): date_time = DateFromToRangeFilter(field_name='date_time', lookup_expr=lookup_xpr) class Meta: model = DateFromToRangeFilterModel fields = ['date_time']
class VoucherFilter(SortedFilterSet): name = CharFilter( label=pgettext_lazy('Voucher list name filter label', 'Name'), lookup_expr='icontains') type = ChoiceFilter( name='discount_value_type', label=pgettext_lazy( 'Sale list is sale type filter label', 'Discount type'), choices=DISCOUNT_TYPE_CHOICES, empty_label=pgettext_lazy('Filter empty choice label', 'All'), widget=forms.Select) discount_value = RangeFilter( label=pgettext_lazy('Sale list filter label', 'Discount_value')) date = DateFromToRangeFilter( label=pgettext_lazy( 'Order list sorting filter label', 'Period of validity'), name='created', widget=DateRangeWidget, method=filter_by_date_range) limit = RangeFilter( label=pgettext_lazy('Voucher list sorting filter', 'Limit'), name='limit') sort_by = OrderingFilter( label=pgettext_lazy('Voucher list sorting filter label', 'Sort by'), fields=SORT_BY_FIELDS_LABELS_VOUCHER.keys(), field_labels=SORT_BY_FIELDS_LABELS_VOUCHER) class Meta: model = Voucher fields = []
class BillRangeFilter(FilterSet): amount = RangeFilter() date = DateFromToRangeFilter() items_id = CharFilter(lookup_expr='icontains', distinct=True) class Meta: model = Bill fields = ['amount', 'user', 'items_id', 'date']
class UserFilterSet(FilterSet): date_joined_range = DateFromToRangeFilter(field_name='date_joined') date_joined = DateFilter() class Meta: model = get_user_model() fields = ['email', 'last_name', 'first_name', 'date_joined', 'date_joined_range']
class ExpenseFilter(FilterSet): date_range = DateFromToRangeFilter(field_name='pub_date', widget=RangeWidget()) class Meta: model = Expense fields = '__all__' exclude = ('user', 'pub_date')
class PropertyDateFromToRangeFilterSet(PropertyFilterSet): date = DateFromToRangeFilter(field_name='date', lookup_expr=lookup_xpr) prop_date = PropertyDateFromToRangeFilter(field_name='prop_date', lookup_expr=lookup_xpr) class Meta: model = DateFromToRangeFilterModel fields = ['prop_date']
class JogFilter(filters.FilterSet): """ Simple date range filter for jog entries. """ date = DateFromToRangeFilter() class Meta: model = Jog fields = ('date', )
class RecordFilter(FilterSet): date = DateFromToRangeFilter( label='対象期間', widget=RangeWidget(attrs={'placeholder': 'YYYY-MM-DD'})) time = TimeRangeFilter(label='対象時間', widget=RangeWidget(attrs={'placeholder': 'hh:mm'})) class Meta: model = Record fields = ['sns', 'date', 'time']
class AdvertisementFilter(filters.FilterSet): """Фильтры для объявлений.""" created_at = DateFromToRangeFilter() class Meta: model = Advertisement fields = [ 'status', 'created_at', ]