def list(self, request, profile_pk=None): """ Retrieves all listings for a specific profile that they own """ current_request_username = request.user.username queryset = self.get_queryset(current_request_username, profile_pk) # Used to anonymize usernames anonymize_identifiable_data = system_anonymize_identifiable_data(current_request_username) if anonymize_identifiable_data: return Response([]) if queryset: page = self.paginate_queryset(queryset) if page is not None: serializer = listing_serializers.ListingSerializer(page, context={'request': request}, many=True) response = self.get_paginated_response(serializer.data) return response serializer = listing_serializers.ListingSerializer(queryset, context={'request': request}, many=True) return Response(serializer.data) else: return Response({'detail': 'Not Found'}, status=status.HTTP_404_NOT_FOUND)
def ApplicationView(request, id='0'): """ Single application """ if not hal.validate_version(request.META.get('HTTP_ACCEPT')): return Response('Invalid version requested', status=status.HTTP_406_NOT_ACCEPTABLE) listing_root_url = hal.get_abs_url_for_iwc( request ) # flake8: noqa TODO: Is Necessary? - Variable not being used in method profile = model_access.get_profile(request.user.username) # TODO: only include the fields that are necessary for IWC. This will also # allow us to sever ties with ozpcenter.api.listing.serializers # This minimal definition of what a Listing object must have should be # advertised so that others can use IWC with their own systems queryset = listing_model_access.get_listing_by_id(profile.user.username, id) if not queryset: return Response(status=status.HTTP_404_NOT_FOUND) serializer = listing_serializers.ListingSerializer( queryset, context={'request': request}) data = serializer.data data = hal.add_hal_structure( data, request, hal.generate_content_type(request.accepted_media_type)) return Response(data)
def retrieve(self, request, pk=None): """ Get a Listing by id """ queryset = self.get_queryset().get(pk=pk) serializer = serializers.ListingSerializer(queryset, context={'request': request}) return Response(serializer.data)
def retrieve(self, request, pk=None): """ Get a Listing by id """ queryset = self.get_queryset().get(pk=pk) serializer = serializers.ListingSerializer( queryset, context={'request': request}) # TODO: Refactor in future to use django ordering (mlee) temp = serializer.data.get('screenshots') temp.sort(key=operator.itemgetter('order')) return Response(serializer.data)
def list(self, request, listing_pk=None): queryset = self.filter_queryset(self.get_queryset(listing_pk)) serializer = serializers.ListingSerializer( queryset, context={'request': request}, many=True) similar_listings = pipeline.Pipeline( recommend_utils.ListIterator(serializer.data), [ pipes.ListingDictPostSecurityMarkingCheckPipe( self.request.user.username), pipes.LimitPipe(10) ]).to_list() return Response(similar_listings)
def list(self, request): queryset = self.filter_queryset(self.get_queryset()) counts_data = model_access.put_counts_in_listings_endpoint(queryset) # it appears that because we override the queryset here, we must # manually invoke the pagination methods page = self.paginate_queryset(queryset) if page is not None: serializer = serializers.ListingSerializer( page, context={'request': request}, many=True) r = self.get_paginated_response(serializer.data) # add counts to response r.data['counts'] = counts_data return r serializer = serializers.ListingSerializer( queryset, context={'request': request}, many=True) r = Response(serializer.data) # add counts to response counts = {'counts': counts_data} r.data.append(counts) return r
def retrieve(self, request, pk, profile_pk=None): """ Retrieves a specific listing for a specific profile that they own """ current_request_username = request.user.username queryset = self.get_queryset(current_request_username, profile_pk, pk) if queryset: serializer = listing_serializers.ListingSerializer(queryset, context={'request': request}) return Response(serializer.data) else: return Response({'detail': 'Not Found'}, status=status.HTTP_404_NOT_FOUND)
def list(self, request, profile_pk=None): """ Retrieves all listings for a specific profile that they own """ current_request_username = request.user.username # Used to anonymize usernames anonymize_identifiable_data = system_anonymize_identifiable_data(current_request_username) if anonymize_identifiable_data: return Response([]) queryset = self.get_queryset(profile_pk) page = self.paginate_queryset(queryset) if page is not None: serializer = listing_serializers.ListingSerializer(page, context={'request': request}, many=True) response = self.get_paginated_response(serializer.data) return response serializer = listing_serializers.ListingSerializer(queryset, context={'request': request}, many=True) return Response(serializer.data)
def retrieve(self, request, pk, profile_pk=None): """ Retrieves a specific listing for a specific profile that they own """ current_request_username = request.user.username # Used to anonymize usernames anonymize_identifiable_data = system_anonymize_identifiable_data(current_request_username) if anonymize_identifiable_data: return Response({'detail': 'Permission Denied'}, status=status.HTTP_403_FORBIDDEN) queryset = self.get_queryset(profile_pk, pk) serializer = listing_serializers.ListingSerializer(queryset, context={'request': request}) return Response(serializer.data)
def update(self, request, pk=None): """ Update a Listing Sample payload: { "id":45, "title":"My Test App", "description":"This is the full description of my app", "descriptionShort":"short app description", "contacts":[ { "securePhone":"555-555-5555", "unsecurePhone":"111-222-3454", "email":"*****@*****.**", "organization":"ABC Inc", "name":"Tech Support Contact", "type":"Technical Support" } ], "totalReviews":0, "avgRate":0, "totalRate1":0, "totalRate2":0, "totalRate3":0, "totalRate4":0, "height":null, "width":null, "totalRate5":0, "totalVotes":0, "tags":[ "tag2", "tag1" ], "type":"Web Application", "uuid":"e378c427-bba6-470c-b2f3-e550b9129504", "usage_requirements":"None", "system_requirements":"None", "iframe_compatible":false, "versionName":"1.0.0", "launchUrl":"http://www.google.com/myApp", "whatIsNew":"Nothing is new", "owners":[ { "displayName":"kevink", "username":"******", "id":5 } ], "agency":"Test Organization", "agencyShort":"TO", "currentRejection":null, "isEnabled":true, "categories":[ "Media and Video", "Entertainment" ], "editedDate":"2015-08-12T10:53:47.036+0000", "intents":[ "application/json/edit", "application/json/view" ], "docUrls":[ { "url":"http://www.wikipedia.com/myApp", "name":"wiki" } ], "approvalStatus":"IN_PROGRESS", "isFeatured":false, "smallIconId":"b0b54993-0668-4419-98e8-787e4c3a2dc2", "largeIconId":"e94128ab-d32d-4241-8820-bd2c69a64a87", "bannerIconId":"ecf79771-79a0-4884-a36d-5820c79c6d72", "featuredBannerIconId":"c3e6a369-4773-485e-b369-5cebaa331b69", "changeLogs":[ ], "screenshots":[ { "largeImageId":"80957d25-f34b-48bc-b860-b353cfd9e101", "smallImageId":"0b8db892-b669-4e86-af23-d899cb4d4d91" } ] } """ # logger.debug('inside ListingViewSet.update', extra={'request': request}) instance = self.get_queryset().get(pk=pk) serializer = serializers.ListingSerializer( instance, data=request.data, context={'request': request}, partial=True) # logger.debug('created ListingSerializer', extra={'request': request}) if not serializer.is_valid(): logger.error('{0!s}'.format(serializer.errors), extra={'request': request}) raise errors.ValidationException('{0}'.format(serializer.errors)) serializer.save() return Response(serializer.data, status=status.HTTP_200_OK)
def create(self, request): """ Save a new Listing - only title is required Sample Payload: { "title":"My Test App", "description":"This is the full description of my app", "descriptionShort":"short app description", "contacts":[ { "type":"Technical Support", "name":"Tech Support Contact", "organization":"ABC Inc", "email":"*****@*****.**", "securePhone":"555-555-5555", "unsecurePhone":"111-222-3454" } ], "tags":[ "tag1", "tag2" ], "type":"Web Application", "usage_requirements":"None", "system_requirements":"None", "versionName":"1.0.0", "launchUrl":"http://www.google.com/myApp", "whatIsNew":"Nothing is new", "owners":[ { "username":"******" } ], "agency":"Test Organization", "categories":[ "Entertainment", "Media and Video" ], "intents":[ "application/json/edit", "application/json/view" ], "docUrls":[ { "name":"wiki", "url":"http://www.wikipedia.com/myApp" } ], "smallIconId":"b0b54993-0668-4419-98e8-787e4c3a2dc2", "largeIconId":"e94128ab-d32d-4241-8820-bd2c69a64a87", "bannerIconId":"ecf79771-79a0-4884-a36d-5820c79c6d72", "featuredBannerIconId":"c3e6a369-4773-485e-b369-5cebaa331b69", "changeLogs":[ ], "screenshots":[ { "smallImageId":"0b8db892-b669-4e86-af23-d899cb4d4d91", "largeImageId":"80957d25-f34b-48bc-b860-b353cfd9e101" } ] } --- parameters: - name: body required: true paramType: body parameters_strategy: form: replace query: replace omit_serializer: true """ # logger.debug('inside ListingViewSet.create', extra={'request': request}) serializer = serializers.ListingSerializer( data=request.data, context={'request': request}, partial=True) if not serializer.is_valid(): logger.error('{0!s}'.format(serializer.errors), extra={'request': request}) raise errors.ValidationException('{0}'.format(serializer.errors)) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED)
class StorefrontSerializer(serializers.Serializer): featured = listing_serializers.ListingSerializer(many=True) recent = listing_serializers.ListingSerializer(many=True) most_popular = listing_serializers.ListingSerializer(many=True)