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)
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)
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)
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'])