Ejemplo n.º 1
0
    def update(self, request, *args, **kwargs):
        """
        Allow a version's features to be updated.
        """
        obj = self.get_object()

        # Update features if they are provided.
        if 'features' in request.DATA:

            # Raise an exception if any invalid features are passed.
            invalid = [f for f in request.DATA['features'] if f.upper() not in
                       APP_FEATURES.keys()]
            if any(invalid):
                raise ParseError('Invalid feature(s): %s' % ', '.join(invalid))

            # Update the value of each feature (note: a feature not present in
            # the form data is assumed to be False)
            data = {}
            for key, name in APP_FEATURES.items():
                field_name = 'has_' + key.lower()
                data[field_name] = key.lower() in request.DATA['features']
            obj.features.update(**data)

            del request.DATA['features']

        return super(VersionViewSet, self).update(request, *args, **kwargs)
Ejemplo n.º 2
0
    def update(self, request, *args, **kwargs):
        """
        Allow a version's features to be updated.
        """
        obj = self.get_object()

        # Deny access to users who are not owners of this app.
        is_owner = AllowAppOwner().has_object_permission(request, self, obj.addon)
        is_reviewer = AllowReviewerReadOnly().is_authorized(request)
        if not is_owner or not is_reviewer:
            self.permission_denied(request)

        # Update features if they are provided.
        if "features" in request.DATA:

            # Raise an exception if any invalid features are passed.
            invalid = [f for f in request.DATA["features"] if f.upper() not in APP_FEATURES.keys()]
            if any(invalid):
                raise ParseError("Invalid feature(s): %s" % ", ".join(invalid))

            # Update the value of each feature (note: a feature not present in
            # the form data is assumed to be False)
            data = {}
            for key, name in APP_FEATURES.items():
                field_name = "has_" + key.lower()
                data[field_name] = key.lower() in request.DATA["features"]
            obj.features.update(**data)

            del request.DATA["features"]

        return super(VersionViewSet, self).update(request, *args, **kwargs)
Ejemplo n.º 3
0
    def update(self, request, *args, **kwargs):
        """
        Allow a version's features to be updated.
        """
        obj = self.get_object()

        # Update features if they are provided.
        if 'features' in request.DATA:

            # Raise an exception if any invalid features are passed.
            invalid = [f for f in request.DATA['features'] if f.upper() not in
                       APP_FEATURES.keys()]
            if any(invalid):
                raise ParseError('Invalid feature(s): %s' % ', '.join(invalid))

            # Update the value of each feature (note: a feature not present in
            # the form data is assumed to be False)
            data = {}
            for key, name in APP_FEATURES.items():
                field_name = 'has_' + key.lower()
                data[field_name] = key.lower() in request.DATA['features']
            obj.features.update(**data)

            del request.DATA['features']

        return super(VersionViewSet, self).update(request, *args, **kwargs)
Ejemplo n.º 4
0
    def update(self, request, *args, **kwargs):
        """
        Allow a version's features to be updated.
        """
        obj = self.get_object()

        # Deny access to users who are not owners of this app.
        is_owner = AllowAppOwner().has_object_permission(request, self,
                                                         obj.addon)
        is_reviewer = AllowReviewerReadOnly().is_authorized(request)
        if not is_owner or not is_reviewer:
            self.permission_denied(request)

        # Update features if they are provided.
        if 'features' in request.DATA:

            # Raise an exception if any invalid features are passed.
            invalid = [f for f in request.DATA['features'] if f.upper() not in
                       APP_FEATURES.keys()]
            if any(invalid):
                raise ParseError('Invalid feature(s): %s' % ', '.join(invalid))

            # Update the value of each feature (note: a feature not present in
            # the form data is assumed to be False)
            data = {}
            for key, name in APP_FEATURES.items():
                field_name = 'has_' + key.lower()
                data[field_name] = key.lower() in request.DATA['features']
            obj.features.update(**data)

            del request.DATA['features']

        return super(VersionViewSet, self).update(request, *args, **kwargs)
Ejemplo n.º 5
0
 def _test_response(self, res):
     eq_(res.status_code, 200)
     data = json.loads(res.content)
     eq_(len(data), len(APP_FEATURES))
     self.assertSetEqual(data.keys(),
                         [f.lower() for f in APP_FEATURES.keys()])
     for i, feature in enumerate(APP_FEATURES.items()):
         name = feature[0].lower()
         eq_(i + 1, data[name]['position'])
Ejemplo n.º 6
0
 def _test_response(self, res):
     eq_(res.status_code, 200)
     data = json.loads(res.content)
     eq_(len(data), len(APP_FEATURES))
     self.assertSetEqual(data.keys(),
                         [f.lower() for f in APP_FEATURES.keys()])
     for i, feature in enumerate(APP_FEATURES.items()):
         name = feature[0].lower()
         eq_(i + 1, data[name]['position'])
Ejemplo n.º 7
0
 def get(self, request, *args, **kwargs):
     features = OrderedDict(
         self._feature(i, slug)
         for i, slug in enumerate(APP_FEATURES.keys()))
     return Response(features, status=status.HTTP_200_OK)