"""按管理员授权补齐采购跟单的采样确认编辑权限,不改个人覆盖或其他岗位。""" import argparse import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('--local', action='store_true') parser.add_argument('--apply', action='store_true') args = parser.parse_args() if args.local: from test_wsgi import app else: from app import app from routes import auth, spot from services.db import query position = 'procurement_follower' page = 'spot_confirmation' with app.test_request_context(): before = query('SELECT page,operation,permission FROM position_operation_permissions ' 'WHERE position_code=%s AND page=%s', (position, page)) print('before:', before) if args.apply and not any(p['operation'] == 'edit' and p['permission'] == 1 for p in before): auth._ensure_permission_baseline('position', position) query('INSERT INTO position_operation_permissions (position_code,page,operation,permission) ' 'VALUES (%s,%s,%s,1) ON DUPLICATE KEY UPDATE permission=1', (position, page, 'edit')) detail = '修复权限矩阵漏项:按管理员要求为采购跟单启用现货采样确认编辑详情权限' auth._create_permission_version('position', position, detail) auth._record_permission_change('position', position, 'repair_missing_edit', before=before, after={'page': page, 'operation': 'edit', 'permission': 1}, detail=detail) users = query('SELECT id,username,real_name,role,position FROM dashboard_users WHERE username=%s', ('范亚欢',)) assert len(users) == 1 and users[0]['position'] == position, users user = users[0] auth.session.update(user_id=user['id'], username=user['username'], real_name=user['real_name'], role=user['role']) allowed = auth.operation_required(page, 'edit') profile = auth.profile.__wrapped__().get_json()['data']['permissions'] print('effective edit:', allowed, 'frontend permissions:', profile.get(page)) if args.apply: assert allowed and profile[page]['edit'] == 1 # 空请求应通过权限判断,止于参数校验;不会读写业务记录。 with app.test_request_context('/api/spot/confirmation/save', method='POST', json={}): auth.session.update(user_id=user['id'], role=user['role']) response = spot.confirmation_save.__wrapped__() payload = response[0].get_json() assert payload['code'] == 400, payload print('save endpoint: permission accepted; invalid empty payload rejected without data writes')