Skip to content
This repository has been archived by the owner on Oct 28, 2020. It is now read-only.

Commit

Permalink
[Fix bug 1144190] Enable filtering on ReMo public API
Browse files Browse the repository at this point in the history
* Add configuration to enable filtering on rest-framework
* Add filter_class in events API viewset
* Enable filtering on /activities API.
* Enable filtering on /users API.
* Enable filtering on /events API.
  • Loading branch information
johngian committed Apr 21, 2015
1 parent 54b5b20 commit 6664782
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 1 deletion.
12 changes: 12 additions & 0 deletions remo/events/api/views.py
Expand Up @@ -19,11 +19,23 @@
KPI_WEEKS = 12


class EventsFilter(django_filters.FilterSet):
owner = django_filters.CharFilter(name='owner__userprofile')
categories = django_filters.CharFilter(name='categories__name')
initiative = django_filters.CharFilter(name='campaign__name')

class Meta:
model = Event
fields = ('name', 'description', 'start', 'end', 'city', 'region',
'country', 'lat', 'lon')


class EventsViewSet(ReadOnlyModelViewSet):
"""Return a list of events."""
serializer_class = EventSerializer
model = Event
queryset = Event.objects.all()
filter_class = EventsFilter

def retrieve(self, request, pk):
event = get_object_or_404(self.queryset, pk=pk)
Expand Down
24 changes: 24 additions & 0 deletions remo/profiles/api/views.py
Expand Up @@ -29,11 +29,35 @@
INACTIVE = 0


class UserProfileFilter(django_filters.FilterSet):
groups = django_filters.CharFilter(name='groups__name')
functional_areas = django_filters.CharFilter(
name='userprofile__functional_areas__name')
mentor = django_filters.CharFilter(name='userprofile__mentor')
city = django_filters.CharFilter(name='userprofile__city')
region = django_filters.CharFilter(name='userprofile__region')
country = django_filters.CharFilter(name='userprofile__country')
twitter = django_filters.CharFilter(name='userprofile__twitter_account')
jabber = django_filters.CharFilter(name='userprofile__jabber_id')
irc_name = django_filters.CharFilter(name='userprofile__irc_name')
wiki_profile = django_filters.CharFilter(
name='userprofile__wiki_profile_url')
irc_channels = django_filters.CharFilter(name='userprofile__irc_channels')
linkedin = django_filters.CharFilter(name='userprofile__linkedin_url')
facebook = django_filters.CharFilter(name='userprofile__facebook_url')
diaspora = django_filters.CharFilter(name='userprofile__diaspora_url')

class Meta:
model = User
fields = ('first_name', 'last_name')


class UserProfileViewSet(ReadOnlyModelViewSet):
"""Returns a list of Reps profiles."""
serializer_class = UserSerializer
model = User
queryset = User.objects.all()
filter_class = UserProfileFilter

def get_queryset(self):
queryset = self.queryset.filter(
Expand Down
15 changes: 15 additions & 0 deletions remo/reports/api/views.py
Expand Up @@ -19,11 +19,26 @@
KPI_WEEKS = 12


class ActivitiesFilter(django_filters.FilterSet):
user = django_filters.CharFilter(name='user__userprofile')
activity = django_filters.CharFilter(name='activity__name')
initiative = django_filters.CharFilter(name='campaign__name')
mentor = django_filters.CharFilter(name='mentor__userprofile')
category = django_filters.CharFilter(name='functional_areas__name')

class Meta:
model = NGReport
fields = ('is_passive', 'event', 'activity_description', 'report_date',
'location', 'longitude', 'latitude', 'link',
'link_description')


class ActivitiesViewSet(ReadOnlyModelViewSet):
"""Return a list of activities."""
serializer_class = ActivitiesSerializer
model = NGReport
queryset = NGReport.objects.all()
filter_class = ActivitiesFilter

def retrieve(self, request, pk):
report = get_object_or_404(self.get_queryset(), pk=pk)
Expand Down
6 changes: 5 additions & 1 deletion remo/settings/base.py
Expand Up @@ -174,5 +174,9 @@ def _request_args():
'PAGINATE_BY': 20,
'MAX_PAGINATE_BY': 100,
'DEFAULT_MODEL_SERIALIZER_CLASS':
'rest_framework.serializers.HyperlinkedModelSerializer'
'rest_framework.serializers.HyperlinkedModelSerializer',
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.DjangoFilterBackend',
'rest_framework.filters.OrderingFilter',
),
}

0 comments on commit 6664782

Please sign in to comment.