-
Notifications
You must be signed in to change notification settings - Fork 135
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
No-Issue Signed-off-by: James Tanner <tanner.jc@gmail.com>
- Loading branch information
Showing
12 changed files
with
1,067 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
from django_filters import filters | ||
from django_filters.rest_framework import filterset | ||
|
||
from galaxy_ng.app.api.v1.models import LegacyRoleSurveyRollup | ||
from galaxy_ng.app.api.v1.models import CollectionSurveyRollup | ||
|
||
|
||
class BaseSurveyRollupFilter(filterset.FilterSet): | ||
|
||
sort = filters.OrderingFilter( | ||
fields=( | ||
('created', 'created'), | ||
) | ||
) | ||
|
||
|
||
class LegacyRoleSurveyRollupFilter(BaseSurveyRollupFilter): | ||
|
||
role = filters.CharFilter(method='role_filter') | ||
namespace = filters.CharFilter(method='namespace_filter') | ||
name = filters.CharFilter(method='name_filter') | ||
|
||
class Meta: | ||
model = LegacyRoleSurveyRollup | ||
fields = ['created', 'role'] | ||
|
||
def role_filter(self, queryset, name, value): | ||
return queryset.filter(role__id=int(value)) | ||
|
||
def namespace_filter(self, queryset, name, value): | ||
return queryset.filter(role__namespace__name=value) | ||
|
||
def name_filter(self, queryset, name, value): | ||
return queryset.filter(role__name=value) | ||
|
||
|
||
class CollectionSurveyRollupFilter(BaseSurveyRollupFilter): | ||
|
||
collection = filters.CharFilter(method='collection_filter') | ||
namespace = filters.CharFilter(method='namespace_filter') | ||
name = filters.CharFilter(method='name_filter') | ||
|
||
class Meta: | ||
model = CollectionSurveyRollup | ||
fields = ['created', 'collection'] | ||
|
||
def collection_filter(self, queryset, name, value): | ||
return queryset.filter(collection__pulp_id=value) | ||
|
||
def namespace_filter(self, queryset, name, value): | ||
return queryset.filter(collection__namespace=value) | ||
|
||
def name_filter(self, queryset, name, value): | ||
return queryset.filter(collection__name=value) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
from django.db.models import Q | ||
from django_filters import filters | ||
from django_filters.rest_framework import filterset | ||
|
||
from galaxy_ng.app.api.v1.models import LegacyRoleSurvey | ||
from galaxy_ng.app.api.v1.models import CollectionSurvey | ||
|
||
|
||
class BaseSurveyFilter(filterset.FilterSet): | ||
|
||
user = filters.CharFilter(method='user_filter') | ||
|
||
sort = filters.OrderingFilter( | ||
fields=( | ||
('created', 'created'), | ||
) | ||
) | ||
|
||
def user_filter(self, queryset, name, value): | ||
|
||
# allow filtering on uid and username ... | ||
if value.isdigit(): | ||
queryset = queryset.filter( | ||
Q(user__id=int(value)) | Q(user__username=value) | ||
) | ||
else: | ||
queryset = queryset.filter(user__username=value) | ||
|
||
return queryset | ||
|
||
|
||
class LegacyRoleSurveyFilter(BaseSurveyFilter): | ||
|
||
role = filters.CharFilter(method='role_filter') | ||
|
||
class Meta: | ||
model = LegacyRoleSurvey | ||
fields = ['created', 'user', 'role'] | ||
|
||
def role_filter(self, queryset, name, value): | ||
return queryset.filter(role__id=int(value)) | ||
|
||
|
||
class CollectionSurveyFilter(BaseSurveyFilter): | ||
|
||
collection = filters.CharFilter(method='collection_filter') | ||
|
||
class Meta: | ||
model = CollectionSurvey | ||
fields = ['created', 'user', 'collection'] | ||
|
||
def collection_filter(self, queryset, name, value): | ||
return queryset.filter(collection__pulp_id=value) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
from rest_framework import serializers | ||
|
||
from galaxy_ng.app.api.v1.models import ( | ||
CollectionSurvey, | ||
CollectionSurveyRollup, | ||
LegacyRoleSurvey, | ||
LegacyRoleSurveyRollup, | ||
) | ||
|
||
from galaxy_ng.app.api.v1.utils_survey import SURVEY_FIELDS | ||
|
||
|
||
class CollectionSurveySerializer(serializers.ModelSerializer): | ||
|
||
responses = serializers.SerializerMethodField() | ||
user = serializers.SerializerMethodField() | ||
collection = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = CollectionSurvey | ||
fields = [ | ||
'id', | ||
'created', | ||
'modified', | ||
'collection', | ||
'user', | ||
'responses' | ||
] | ||
|
||
def get_user(self, obj): | ||
return { | ||
'id': obj.user.id, | ||
'username': obj.user.username | ||
} | ||
|
||
def get_collection(self, obj): | ||
return { | ||
'id': obj.collection.pulp_id, | ||
'namespace': obj.collection.namespace, | ||
'name': obj.collection.name | ||
} | ||
|
||
def get_responses(self, obj): | ||
return dict((k, getattr(obj, k)) for k in SURVEY_FIELDS) | ||
|
||
|
||
class CollectionSurveyRollupSerializer(serializers.ModelSerializer): | ||
|
||
namespace = serializers.SerializerMethodField() | ||
name = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = CollectionSurveyRollup | ||
fields = [ | ||
'id', | ||
'created', | ||
'modified', | ||
'collection', | ||
'namespace', | ||
'name', | ||
'score' | ||
] | ||
|
||
def get_namespace(self, obj): | ||
return obj.collection.namespace | ||
|
||
def get_name(self, obj): | ||
return obj.collection.name | ||
|
||
|
||
class LegacyRoleSurveySerializer(serializers.ModelSerializer): | ||
|
||
responses = serializers.SerializerMethodField() | ||
user = serializers.SerializerMethodField() | ||
role = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = LegacyRoleSurvey | ||
fields = [ | ||
'id', | ||
'created', | ||
'modified', | ||
'role', | ||
'user', | ||
'responses', | ||
] | ||
|
||
def get_user(self, obj): | ||
return { | ||
'id': obj.user.id, | ||
'username': obj.user.username | ||
} | ||
|
||
def get_role(self, obj): | ||
return { | ||
'id': obj.role.id, | ||
'namespace': obj.role.namespace.name, | ||
'name': obj.role.name | ||
} | ||
|
||
def get_responses(self, obj): | ||
return dict((k, getattr(obj, k)) for k in SURVEY_FIELDS) | ||
|
||
|
||
class LegacyRoleSurveyRollupSerializer(serializers.ModelSerializer): | ||
|
||
namespace = serializers.SerializerMethodField() | ||
name = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = LegacyRoleSurveyRollup | ||
fields = [ | ||
'id', | ||
'created', | ||
'modified', | ||
'role', | ||
'namespace', | ||
'name', | ||
'score' | ||
] | ||
|
||
def get_namespace(self, obj): | ||
return obj.role.namespace.name | ||
|
||
def get_name(self, obj): | ||
return obj.role.name |
Oops, something went wrong.