def patch(self, tag_id): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id name = request.args.get('name', type=str, default=None) color = request.args.get('color', type=str, default=None) previous_tag = TagRepository.get_with(tag_id, organization_id) tag_list = TagRepository.list_all( organization_id=organization_id ) if name in (tag.name for tag in tag_list) and name != previous_tag.name: return [{'code': 'EXISTING_NAME', 'message': 'Existing tag with that name'}], 400 TagRepository.update( tag_id=tag_id, name=name, color=color, organization_id=organization_id) return {"message": "Tag updated"}, 200
def delete(self): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id body = json.loads(request.data) parsed_result = AppKeysSchema().load(body).data app_keys = parsed_result.get('keys') if app_keys is None: raise Error.BadRequest( f"AppKeysAPI POST request body must contain a non-empty list of keys with at most {MAX_PER_ORGANIZATION} keys" ) app_keys = [key.upper() for key in app_keys] total = len(app_keys) app_keys = list(set(app_keys)) not_duplicated = len(app_keys) validate_keys(app_keys) deleted = AppKeysRepository.delete(keys_list=app_keys, organization_id=organization_id) return { "message": f"{deleted} app keys deleted, {total-not_duplicated} were duplicated and {not_duplicated-deleted} were not present in user's organization" }, 200
def get(self, tag_id): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id tag = TagRepository.get_with( tag_id=tag_id, organization_id=organization_id ) return {"id": tag.id, "name": tag.name, "color": tag.color}, 200
def delete(self, tag_id): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id TagRepository.delete( tag_id=tag_id, organization_id=organization_id ) return {"message": "Tag deleted"}, 200
def get(self): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id tag_list = TagRepository.list_all( organization_id=organization_id ) return [{ "id" : tag.id, "name" : tag.name, "color": tag.color } for tag in tag_list], 200
def get(self): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id app_keys = AppKeysRepository.get_with(organization_id=organization_id) return { "limit": MAX_PER_ORGANIZATION, "count": len(app_keys), "keys": [{ "id": app_key.id, "key": app_key.key, "organization_id": app_key.organization_id } for app_key in app_keys] }, 200
def delete(self, tag_id): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): return abort(403, error='forbidden access') organization_id = user.organization_id asset_list = TagAssetsAPI.parser.parse_args()["asset_list"] for asset in asset_list: asset = json.loads(asset.replace("\'", "\"")) TagRepository.untag_asset( tag_id=tag_id, asset_id=int(asset["asset_id"]), asset_type=asset["asset_type"], organization_id=organization_id, commit=False ) db.session.commit() return {"message": "Asset untagged"}, 200
def post(self): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id name = request.args.get('name', type=str) color = request.args.get('color', type=str) tag_list = TagRepository.list_all( organization_id=organization_id ) if name in (tag.name for tag in tag_list): return [{'code': 'EXISTING_NAME', 'message': 'Existing tag with that name'}], 400 tag = TagRepository.create( name=name, color=color, organization_id=organization_id ) return {"id": tag.id, "name": tag.name, "color": tag.color}, 200
def post(self): user = User.find_by_username(get_jwt_identity()) if not user or is_system(user.id): raise Error.Forbidden("User not allowed") organization_id = user.organization_id args = self.parser.parse_args() asset_list = args["asset_list"] importance = args["importance"] if importance not in ['LOW', 'MEDIUM', 'HIGH']: raise Exception(f'"{importance}" is not a valid importance value') for asset_id in asset_list: asset_id = json.loads(asset_id.replace("\'", "\"")) asset = AssetRepository.get_with(asset_id=int( asset_id["asset_id"]), asset_type=asset_id["asset_type"], organization_id=organization_id) asset.importance = importance db.session.commit() return {"message": "Assets importance set"}, 200