Пример #1
0
    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)
Пример #2
0
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)
Пример #3
0
 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)
Пример #4
0
 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)
Пример #5
0
    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)
Пример #6
0
    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
Пример #7
0
 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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
class StorefrontSerializer(serializers.Serializer):
    featured = listing_serializers.ListingSerializer(many=True)
    recent = listing_serializers.ListingSerializer(many=True)
    most_popular = listing_serializers.ListingSerializer(many=True)