Пример #1
0
    def apply_filters(self, request, applicable_filters):
        activity_list = super(ActivityResource, self).apply_filters(request, applicable_filters).prefetch_related('title_set').prefetch_related('description_set')
        query = request.GET.get('query', None)
        filter_year_param = request.GET.get('start_year_planned__in', None)

        if query:
            search_fields = comma_separated_parameter_to_list(request.GET.get('search_fields', None))
            activity_list = activity_list.search(query, search_fields)

        if filter_year_param:
            years = comma_separated_parameter_to_list(filter_year_param)
            activity_list = activity_list.filter_years(years)

        return activity_list.distinct_if_necessary(applicable_filters)
Пример #2
0
    def full_dehydrate(self, bundle, for_list=False):
        #If the select_fields param is found, run this overwritten method.
        #Otherwise run the default Tastypie method
        select_fields_param = bundle.request.GET.get('select_fields', None)
        if select_fields_param:
            select_fields = comma_separated_parameter_to_list(select_fields_param)
            for field_name, field_object in self.fields.items():
                #If the field_name is in the list of requested fields dehydrate it
                if (field_name) in select_fields:

                    # A touch leaky but it makes URI resolution work.
                    if getattr(field_object, 'dehydrated_type', None) == 'related':
                        field_object.api_name = self._meta.api_name
                        field_object.resource_name = self._meta.resource_name

                    bundle.data[field_name] = field_object.dehydrate(bundle, for_list=for_list)

                    # Check for an optional method to do further dehydration.
                    method = getattr(self, "dehydrate_%s" % field_name, None)

                    if method:
                        bundle.data[field_name] = method(bundle)

            bundle = self.dehydrate(bundle)
            return bundle
        else:
            return super(ActivityResource, self).full_dehydrate(bundle, for_list)
Пример #3
0
    def full_dehydrate(self, bundle, for_list=False):
        #If the select_fields param is found, run this overwritten method.
        #Otherwise run the default Tastypie method
        select_fields_param = bundle.request.GET.get('select_fields', None)
        if select_fields_param:
            select_fields = comma_separated_parameter_to_list(
                select_fields_param)
            for field_name, field_object in self.fields.items():
                #If the field_name is in the list of requested fields dehydrate it
                if (field_name) in select_fields:

                    # A touch leaky but it makes URI resolution work.
                    if getattr(field_object, 'dehydrated_type',
                               None) == 'related':
                        field_object.api_name = self._meta.api_name
                        field_object.resource_name = self._meta.resource_name

                    bundle.data[field_name] = field_object.dehydrate(
                        bundle, for_list=for_list)

                    # Check for an optional method to do further dehydration.
                    method = getattr(self, "dehydrate_%s" % field_name, None)

                    if method:
                        bundle.data[field_name] = method(bundle)

            bundle = self.dehydrate(bundle)
            return bundle
        else:
            return super(ActivityResource,
                         self).full_dehydrate(bundle, for_list)
Пример #4
0
    def apply_filters(self, request, applicable_filters):
        activity_list = super(ActivityResource, self).apply_filters(
            request, applicable_filters).prefetch_related(
                'title_set').prefetch_related('description_set')
        query = request.GET.get('query', None)
        filter_year_param = request.GET.get('start_year_planned__in', None)

        if query:
            search_fields = comma_separated_parameter_to_list(
                request.GET.get('search_fields', None))
            activity_list = activity_list.search(query, search_fields)

        if filter_year_param:
            years = comma_separated_parameter_to_list(filter_year_param)
            activity_list = activity_list.filter_years(years)

        return activity_list.distinct_if_necessary(applicable_filters)
Пример #5
0
 def alter_list_data_to_serialize(self, request, data):
     select_fields_param = request.GET.get('select_fields', None)
     if select_fields_param:
         select_fields = comma_separated_parameter_to_list(
             select_fields_param)
         data['meta']['selectable_fields'] = {
             f[0]
             for f in self.fields.items()
         } - {f
              for f in select_fields}
     return data
Пример #6
0
 def alter_list_data_to_serialize(self, request, data):
     select_fields_param = request.GET.get('select_fields', None)
     if select_fields_param:
         select_fields = comma_separated_parameter_to_list(select_fields_param)
         data['meta']['selectable_fields'] = {f[0] for f in self.fields.items()} - {f for f in select_fields}
     return data
Пример #7
0
def test_comma_separated_parameter_to_list(input, expected):
	assert comma_separated_parameter_to_list(input) == expected
Пример #8
0
def test_comma_separated_parameter_to_list(input, expected):
    assert comma_separated_parameter_to_list(input) == expected