Exemple #1
0
class UserFilter(django_filters.FilterSet):
    name_email = CharFilter(method='get_name_email')
    status = CharFilter(method='get_status')
    roles = CommaSeparatedListFilter(name='prp_roles__role')
    partners = CommaSeparatedListFilter(name='partner_id')
    clusters = CommaSeparatedListFilter(name='prp_roles__cluster_id')
    workspaces = CommaSeparatedListFilter(name='prp_roles__workspace_id')

    class Meta:
        model = User
        fields = []

    def get_name_email(self, queryset, name, value):
        queryset = queryset.annotate(
            name=Concat('first_name', Value(' '), 'last_name'))
        return queryset.filter(
            Q(name__icontains=value) | Q(email__icontains=value))

    def get_status(self, queryset, name, value):
        statuses = parse.unquote(value).split(',')
        status_to_q = {
            USER_STATUS_TYPES.active:
            Q(is_active__isnull=False,
              last_login__isnull=False,
              prp_roles__isnull=False),
            USER_STATUS_TYPES.invited:
            Q(is_active__isnull=False,
              last_login__isnull=True,
              prp_roles__isnull=False),
            USER_STATUS_TYPES.incomplete:
            Q(prp_roles__isnull=True)
        }
        return queryset.filter(
            reduce(operator.or_,
                   [status_to_q.get(status, Q()) for status in statuses]))
Exemple #2
0
class PartnerProjectFilter(filters.FilterSet):
    partner = CharFilter(method='get_partner')
    title = CharFilter(method='get_title')
    location = CharFilter(method='get_location')
    status = ChoiceFilter(choices=PARTNER_PROJECT_STATUS)
    start_date = DateFilter(method='get_start_date')
    end_date = DateFilter(method='get_end_date')
    cluster_id = CharFilter(method='get_cluster_id')

    class Meta:
        model = PartnerProject
        fields = ['title', 'location', 'status', 'start_date', 'end_date']

    def get_partner(self, queryset, name, value):
        return queryset.filter(partner_id=value)

    def get_title(self, queryset, name, value):
        return queryset.filter(title__icontains=value)

    def get_location(self, queryset, name, value):
        return queryset.filter(locations__id=value)

    def get_start_date(self, queryset, name, value):
        return queryset.filter(start_date__gte=value)

    def get_end_date(self, queryset, name, value):
        return queryset.filter(end_date__lte=value)

    def get_cluster_id(self, queryset, name, value):
        return queryset.filter(clusters__in=[value])
class ProgrammeDocumentIndicatorFilter(django_filters.FilterSet):

    pd_statuses = ChoiceFilter(choices=PD_STATUS, method='get_status')
    pds = CharFilter(method='get_programme_document')
    location = CharFilter(method='get_locations')
    blueprint__title = CharFilter(method='get_blueprint_title')
    incomplete = CharFilter(method='get_incomplete')

    class Meta:
        model = Reportable
        fields = (
            'id',
            'blueprint__title',
        )

    def get_status(self, queryset, name, value):
        return queryset.filter(
            lower_level_outputs__cp_output__programme_document__status=value)

    def get_programme_document(self, queryset, name, value):
        return queryset.filter(
            lower_level_outputs__cp_output__programme_document_id=value)

    def get_locations(self, queryset, name, value):
        return queryset.filter(locations=value)

    def get_blueprint_title(self, queryset, name, value):
        return queryset.filter(blueprint__title__contains=value)

    def get_incomplete(self, queryset, name, value):
        return queryset.filter(
            lower_level_outputs__cp_output__programme_document__progress_reports__indicator_reports__submission_date__isnull
            =True) if value == "1" else queryset
Exemple #4
0
class ProgrammeDocumentIndicatorFilter(django_filters.FilterSet):

    pd_statuses = CommaSeparatedListFilter(name='lower_level_outputs__cp_output__programme_document__status')
    pds = CommaSeparatedListFilter(name='lower_level_outputs__cp_output__programme_document_id')
    location = CharFilter(method='get_locations')
    blueprint__title = CharFilter(method='get_blueprint_title')
    incomplete = CharFilter(method='get_incomplete')
    report_partner_external = CommaSeparatedListFilter(
        name='indicator_reports__progress_report__programme_document__partner__external_id'
    )
    report_status = CommaSeparatedListFilter(
        name='indicator_reports__progress_report__status'
    )
    report_type = CommaSeparatedListFilter(
        name='indicator_reports__progress_report__report_type'
    )
    cp_output = CommaSeparatedListFilter(name='lower_level_outputs__cp_output__external_cp_output_id')
    report_section = CommaSeparatedListFilter(
        name='lower_level_outputs__cp_output__programme_document__sections__external_id')
    pd_ref_title = CharFilter(name='pd ref title', method='get_pd_ref_title',
                              label='PD/Ref # title')

    unicef_focal_points = CharFilter(method='get_unicef_focal_points')

    class Meta:
        model = Reportable
        fields = (
            'id', 'blueprint__title',
        )

    def get_locations(self, queryset, name, value):
        return queryset.filter(locations=value)

    def get_blueprint_title(self, queryset, name, value):
        return queryset.filter(blueprint__title__icontains=value)

    def get_incomplete(self, queryset, name, value):
        if value == Boolean.TRUE:
            return queryset.filter(
                lower_level_outputs__cp_output__programme_document__progress_reports__indicator_reports__submission_date__isnull=True  # noqa: E501
            )
        return queryset

    def get_activepdsonly(self, queryset, name, value):
        if value == Boolean.TRUE:
            return queryset.filter(lower_level_outputs__cp_output__programme_document__status=PD_STATUS.active)
        return queryset

    def get_pd_ref_title(self, queryset, name, value):
        return queryset.filter(
            Q(lower_level_outputs__cp_output__programme_document__reference_number__icontains=value) |
            Q(lower_level_outputs__cp_output__programme_document__title__icontains=value)
        )

    def get_unicef_focal_points(self, queryset, name, value):
        return queryset.filter(
            lower_level_outputs__cp_output__programme_document__unicef_focal_point__email__in=parse.unquote(
                value).split(',')  # noqa: E501
        ).distinct()
Exemple #5
0
        class F(FilterSet):
            username = CharFilter(label='Filter for users with username')
            exclude_username = CharFilter(field_name='username', lookup_expr='iexact', exclude=True)

            class Meta:
                model = User
                fields = {
                    'status': ['exact', 'lt', 'gt'],
                    'favorite_books__title': ['iexact', 'in'],
                    'manager_of__users__username': ['exact'],
                }
Exemple #6
0
class PartnerIDManagementFilter(django_filters.FilterSet):
    partner_type = CharFilter(field_name='partner_type')
    clusters = CommaSeparatedListFilter(field_name='clusters__id')
    title = CharFilter(method='get_title')

    class Meta:
        model = Partner
        fields = ['partner_type', 'clusters', 'title']

    def get_title(self, queryset, name, value):
        return queryset.filter(
            Q(title__icontains=value) | Q(short_title__icontains=value)
            | Q(alternate_title__icontains=value))
Exemple #7
0
class ClusterObjectiveFilter(django_filters.FilterSet):
    ref_title = CharFilter(method='get_reference_number_title')
    cluster_id = CharFilter(method='get_cluster_id')

    class Meta:
        model = ClusterObjective
        fields = ['ref_title', 'cluster_id']

    def get_reference_number_title(self, queryset, name, value):
        return queryset.filter(title__icontains=value)

    def get_cluster_id(self, queryset, name, value):
        return queryset.filter(cluster_id=value)
Exemple #8
0
class EventSearchFilter(django_filters.FilterSet):
	ownership = MultipleChoiceFilter(choices=[('admin','Created'), ('joined',' Joined')], widget=forms.CheckboxSelectMultiple )
	location = ChoiceFilter(name='location',choices=[('Venue','Venue'), ('Online','Online')], widget=forms.Select(attrs={'class': 'selects'}))
	city = CharFilter(name="city", lookup_expr="icontains", widget=forms.TextInput(attrs={'placeholder': 'City'}))
	state = CharFilter(name="state", lookup_expr="icontains", widget=forms.TextInput(attrs={'placeholder': 'State'}))
	country = CharFilter(name="india", lookup_expr="icontains", widget=forms.TextInput(attrs={'placeholder': 'India'}))
	category = ChoiceFilter(name="category",choices=[('Adventure','Adventure'), ('Business & Tech','Business & Tech'), ('Entertainment','Entertainment'), ('Social','Social'), ('Sports','Sports'), ('Talks','Talks')], widget=forms.Select(attrs={'class': 'selects'}))
	gender = ChoiceFilter(name='gender',choices=[('Male','Male'), ('Female','Female'), ('Others','Others'), ('Any', 'Any')], widget=forms.Select(attrs={'class': 'selects'}))
	age_group = ChoiceFilter(name='age',choices=[('Under 18','Under 18'), ('18-30','18-30'), ('30-50','30-50'), ('Above 50','Above 50')], widget=forms.Select(), lookup_expr="icontains", label='Age Group')
	year = NumberFilter(label='Start Date', name='start_date',lookup_expr='year', widget=forms.NumberInput(attrs={'class': 'form_inps', 'placeholder': 'Year'}) )
	month = NumberFilter(label='Start Date', name='start_date',lookup_expr='month', widget=forms.NumberInput(attrs={'class': 'form_inps', 'placeholder': 'Month'}) )
	day = NumberFilter(label='Start Date', name='start_date',lookup_expr='day', widget=forms.NumberInput(attrs={'class': 'form_inps', 'placeholder': 'Day'}) )
	class Meta:
		model = Event
		fields = ['ownership']
Exemple #9
0
class CandidateFilter(FilterSet):
    name = CharFilter(method='name_filter')
    status = ChoiceFilter(choices=Candidate.CANDIDATE_STATUS, help_text="")

    def __init__(self, *args, **kwargs):
        super(CandidateFilter, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_method = 'get'

        layout = Div(Div(Field('name'), css_class='col-xs-12 col-md-6'),
                     Div(Field('status'), css_class='col-xs-12 col-md-6'))

        self.helper.layout = Layout(*layout)

        self.helper.add_input(Submit('submit', 'Filter', css_class='btn-info'))

    class Meta:
        model = Candidate
        fields = ['name', 'status']

    def name_filter(self, queryset, name, value):
        if value:
            return queryset.filter(
                reduce(or_, (Q(first_name__icontains=name)
                             | Q(last_name__icontains=name)
                             for name in value.split())))
        else:
            return queryset
        class F(FilterSet):
            account = CharFilter(name='username')

            class Meta:
                model = User
                fields = ['account', 'status']
                order_by = True
Exemple #11
0
        class F(FilterSet):
            username = CharFilter()

            class Meta:
                model = Book
                fields = ('username', 'title', 'price')
                exclude = ('title', )
        class F(FilterSet):
            username = CharFilter(label='Account')

            class Meta:
                model = User
                fields = ['username', 'status']
                order_by = True
Exemple #13
0
class UsersFilter(FilterSet):
    """Filter for users"""

    attributes = CharFilter(
        field_name="attributes",
        lookup_expr="",
        label="Attributes",
        method="filter_attributes",
    )

    is_superuser = BooleanFilter(field_name="ak_groups",
                                 lookup_expr="is_superuser")

    # pylint: disable=unused-argument
    def filter_attributes(self, queryset, name, value):
        """Filter attributes by query args"""
        try:
            value = loads(value)
        except ValueError:
            raise ValidationError(detail="filter: failed to parse JSON")
        if not isinstance(value, dict):
            raise ValidationError(
                detail="filter: value must be key:value mapping")
        qs = {}
        for key, _value in value.items():
            qs[f"attributes__{key}"] = _value
        return queryset.filter(**qs)

    class Meta:
        model = User
        fields = [
            "username", "name", "is_active", "is_superuser", "attributes"
        ]
Exemple #14
0
class QuestionStatementFilter(FilterSet):
    version = CharFilter(label="version", method="get_version")

    class Meta:
        model = QuestionStatement
        fields = {
            "statement": ["exact"],
            "question": ["exact"],
            "is_active": ["exact"],
            "question_group": ["exact"],
        }

    def get_version(self, queryset, name, value):
        if value == "latest":
            draft_question_statements = queryset.filter(version="draft")
            draft_statements = draft_question_statements.values_list(
                "statement", flat=True)
            queryset_id = list(
                draft_question_statements.values_list("id", flat=True))
            queryset_id.extend(
                list(
                    queryset.filter(is_active=True).exclude(
                        statement__in=draft_statements).values_list(
                            "id", flat=True)))
            return queryset.filter(id__in=queryset_id)
        return queryset.filter(version=value)
        class F(FilterSet):
            username = CharFilter(action=lambda qs, value: (qs.filter(
                **{'username__startswith': value})))

            class Meta:
                model = User
                fields = ['username']
Exemple #16
0
    class F(FilterSet):
        invalid = CharFilter(method=lambda *args: None)

        class Meta:
            model = User
            fields = ['username', 'invalid']
            logic_fields = ['invalid']
Exemple #17
0
class WorkerFilter(filters.FilterSet):
    health = CharFilter(method="filter_health")
    state = CharFilter(method="filter_state")

    def filter_health(self, queryset, name, value):
        try:
            value = Worker.HEALTH_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*Worker.HEALTH_CHOICES))[1])
            )
        return queryset.filter(health=value)

    def filter_state(self, queryset, name, value):
        try:
            value = Worker.STATE_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*Worker.STATE_CHOICES))[1])
            )
        return queryset.filter(state=value)

    class Meta:
        model = Worker
        fields = {
            "hostname": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "last_ping": ["exact", "lt", "gt"],
            "state": ["exact"],
            "health": ["exact"],
        }
Exemple #18
0
    class BaseFilter(django_filters.FilterSet):
        name = CharFilter(lookup_expr='contains')
        status = ChoiceFilter(choices=Base.STATUS)

        class Meta:
            exclude = [
                'id', 'tags', 'description', 'pin', 'documentation', 'comment'
            ]
Exemple #19
0
    class Meta:
        last_name = CharFilter()

        model = Teacher
        fields = {
            'last_name': ['icontains'],
            'subject_taught': ['icontains'],
        }
Exemple #20
0
        class F(FilterSet):
            username = CharFilter()

            class Meta:
                model = Book
                fields = {'id': ['exact'],
                          'username': ['exact'],
                          }
class TersangkaDateFilter(FilterSet):
    created = DateFromTo()
    nama_tersangka = CharFilter(lookup_expr='startswith')

    class Meta:
        model = Tersangka
        fields = [
            'no_penangkapan_id__id'
        ]
class ClusterActivityFilter(django_filters.FilterSet):

    title = CharFilter(method='get_title')
    cluster_id = CharFilter(method='get_cluster_id')
    cluster_objective_id = CharFilter(method='get_cluster_objective_id')

    class Meta:
        model = ClusterActivity
        fields = ['title', 'cluster_id', 'cluster_objective_id']

    def get_title(self, queryset, name, value):
        return queryset.filter(title__icontains=value)

    def get_cluster_id(self, queryset, name, value):
        return queryset.filter(cluster_objective__cluster_id=value)

    def get_cluster_objective_id(self, queryset, name, value):
        return queryset.filter(cluster_objective=value)
Exemple #23
0
class OrderFilter(django_filters.FilterSet):
    start_date = DateFilter(field_name="date_created", lookup_expr='gte')
    end_date = DateFilter(field_name="date_created", lookup_expr='lte')
    note = CharFilter(field_name='note', lookup_expr='icontains')

    class Meta:
        model = Order
        fields = '__all__'
        exclude = ['customer', 'date_created']
Exemple #24
0
class LocationFilter(django_filters.FilterSet):
    loc_type = NumberFilter(method='get_loc_type')
    cluster_objectives = CharFilter(method='get_cluster_objectives')
    title = CharFilter(method='get_title')

    class Meta:
        model = Location
        fields = ['loc_type', 'cluster_objectives', 'title']

    def get_loc_type(self, queryset, name, value):
        return queryset.filter(gateway__admin_level=value)

    def get_cluster_objectives(self, queryset, name, value):
        return queryset.filter(
            gateway__country__workspaces__response_plans__clusters__cluster_objectives__in=value.split(','))

    def get_title(self, queryset, name, value):
        return queryset.filter(title__icontains=value)
class PenangkapanDateFilter(FilterSet):
    created = DateFromTo()
    no_penangkapan = CharFilter(lookup_expr='startswith')

    class Meta:
        model = Penangkapan
        fields = [
            'id', 'no_penangkapan', 'no_lkn__LKN', 'no_lkn', 'created'
        ]
class LknDateFilter(FilterSet):
    tgl_dibuat = DateFromTo()
    LKN = CharFilter(lookup_expr='startswith')

    class Meta:
        model = BerkasLKN
        fields = {
            'LKN'
        }
Exemple #27
0
class PartnerActivityFilter(django_filters.FilterSet):

    partner = CharFilter(method='get_partner')
    project = CharFilter(method='get_project')
    cluster_id = CharFilter(method='get_cluster_id')
    activity = CharFilter(method='get_activity')
    custom = TypedChoiceFilter(
        field_name='custom',
        choices=Boolean.CHOICES,
        coerce=strtobool,
        method='get_custom',
        label='Show only custom activities',
    )
    status = ChoiceFilter(choices=PARTNER_PROJECT_STATUS)
    location = CharFilter(method='get_location')

    class Meta:
        model = PartnerActivity
        fields = [
            'partner', 'project', 'cluster_id', 'activity', 'custom', 'status',
            'location'
        ]

    def get_partner(self, queryset, name, value):
        return queryset.filter(partner=value)

    def get_project(self, queryset, name, value):
        return queryset.filter(projects=value)

    def get_cluster_id(self, queryset, name, value):
        return queryset.filter(
            Q(cluster_activity__cluster_objective__cluster__id=value)
            | Q(cluster_objective__cluster__id=value))

    def get_activity(self, queryset, name, value):
        return queryset.filter(title__icontains=value)

    def get_custom(self, queryset, name, value):
        if value:
            return queryset.filter(cluster_activity=None)
        return queryset

    def get_location(self, queryset, name, value):
        return queryset.filter(locations__id=value)
Exemple #28
0
        class F(FilterSet):
            f = CharFilter(method='filter_f')

            class Meta:
                model = User
                fields = []

            def filter_f(inner_self, qs, name, value):
                self.assertIsInstance(inner_self, F)
                self.assertIs(inner_self.request, request)
Exemple #29
0
class TestFilterSet(FilterSet):
    custom__filter = CharFilter()

    class Meta:
        model = TestModel
        fields = {
            'id': ['exact'],
            'name': ['exact', 'iexact', 'contains', 'icontains', 'startswith'],
            'is_active': ['exact']
        }
class BBDateFilter(FilterSet):
    created = DateFromTo()
    sp_sita = CharFilter(lookup_expr='startswith')

    class Meta:
        model = BarangBukti
        fields = [
            'milik_tersangka_id__no_penangkapan_id__id',
            'sp_sita'
        ]