添加前后端筛选导出excel按钮权限
This commit is contained in:
@@ -318,3 +318,22 @@ class MasterExcelServiceTest(unittest.IsolatedAsyncioTestCase):
|
||||
exported = sheet_rows(empty)
|
||||
self.assertEqual([('菌种编码', '菌种名称', '状态', '备注')], [row[:4] for row in exported])
|
||||
self.assertEqual(1, len(exported))
|
||||
|
||||
async def test_export_passes_query_with_ids(self) -> None:
|
||||
rows = [
|
||||
StrainModel(strainId=1, strainCode='S001', strainName='香菇', status='0', remark='甲'),
|
||||
]
|
||||
query = StrainPageQueryModel(ids='1')
|
||||
list_strain = AsyncMock(return_value=rows)
|
||||
with patch.dict(_LISTERS, {'strain': list_strain}):
|
||||
binary = await MasterExcelService.export_resource(self.db, 'strain', query, self.scope)
|
||||
self.assertFalse(list_strain.await_args.kwargs['is_page'])
|
||||
self.assertEqual(query, list_strain.await_args.args[1])
|
||||
self.assertEqual('1', list_strain.await_args.args[1].ids)
|
||||
self.assertEqual(
|
||||
[
|
||||
('菌种编码', '菌种名称', '状态', '备注'),
|
||||
('S001', '香菇', '正常', '甲'),
|
||||
],
|
||||
[row[:4] for row in sheet_rows(binary)],
|
||||
)
|
||||
|
||||
@@ -737,6 +737,30 @@ class TestMasterDao(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertIs(page, result)
|
||||
self.assertIn(f"biz_strain.strain_code LIKE '%{strain_code}%'", compile_sql(statement))
|
||||
|
||||
async def test_list_master_resources_support_ids_filtering(self) -> None:
|
||||
page = PageModel(rows=[], pageNum=1, pageSize=10, total=0, hasNext=False)
|
||||
cases = (
|
||||
('strain', StrainPageQueryModel, 'biz_strain.strain_id IN (1, 2)'),
|
||||
('customer', CustomerPageQueryModel, 'biz_customer.customer_id IN (1, 2)'),
|
||||
('site', SitePageQueryModel, 'biz_customer_site.site_id IN (1, 2)'),
|
||||
('line', LinePageQueryModel, 'biz_production_line.line_id IN (1, 2)'),
|
||||
('warehouse', WarehousePageQueryModel, 'biz_warehouse.warehouse_id IN (1, 2)'),
|
||||
)
|
||||
for resource, model_cls, expected_sql in cases:
|
||||
with (
|
||||
self.subTest(resource=resource),
|
||||
patch.object(PageUtil, 'paginate', new=AsyncMock(return_value=page)) as paginate_mock,
|
||||
):
|
||||
await getattr(MasterDao, f'list_{resource}')(
|
||||
self.db,
|
||||
model_cls(ids='1,2,abc'),
|
||||
TestBatchScope.formal(),
|
||||
is_page=False,
|
||||
)
|
||||
statement = paginate_mock.await_args.args[1]
|
||||
sql = compile_sql(statement)
|
||||
self.assertIn(expected_sql, sql)
|
||||
|
||||
async def test_get_queries_use_expected_table_and_primary_key(self) -> None:
|
||||
cases = (
|
||||
('strain', 'biz_strain', 'strain_id'),
|
||||
|
||||
@@ -98,7 +98,7 @@ MASTER_MODEL_FIELDS = {
|
||||
'update_time',
|
||||
'remark',
|
||||
},
|
||||
StrainPageQueryModel: {'page_num', 'page_size', 'strain_code', 'strain_name', 'status'},
|
||||
StrainPageQueryModel: {'page_num', 'page_size', 'strain_code', 'strain_name', 'status', 'ids'},
|
||||
DeleteStrainModel: {'strain_ids'},
|
||||
CustomerModel: {
|
||||
'customer_id',
|
||||
@@ -111,7 +111,7 @@ MASTER_MODEL_FIELDS = {
|
||||
'update_time',
|
||||
'remark',
|
||||
},
|
||||
CustomerPageQueryModel: {'page_num', 'page_size', 'customer_code', 'customer_name', 'status'},
|
||||
CustomerPageQueryModel: {'page_num', 'page_size', 'customer_code', 'customer_name', 'status', 'ids'},
|
||||
DeleteCustomerModel: {'customer_ids'},
|
||||
SiteModel: {
|
||||
'site_id',
|
||||
@@ -126,7 +126,7 @@ MASTER_MODEL_FIELDS = {
|
||||
'update_time',
|
||||
'remark',
|
||||
},
|
||||
SitePageQueryModel: {'page_num', 'page_size', 'customer_id', 'site_code', 'site_name', 'status'},
|
||||
SitePageQueryModel: {'page_num', 'page_size', 'customer_id', 'site_code', 'site_name', 'status', 'ids'},
|
||||
DeleteSiteModel: {'site_ids'},
|
||||
LineModel: {
|
||||
'line_id',
|
||||
@@ -140,7 +140,7 @@ MASTER_MODEL_FIELDS = {
|
||||
'update_time',
|
||||
'remark',
|
||||
},
|
||||
LinePageQueryModel: {'page_num', 'page_size', 'site_id', 'line_code', 'line_name', 'status'},
|
||||
LinePageQueryModel: {'page_num', 'page_size', 'site_id', 'line_code', 'line_name', 'status', 'ids'},
|
||||
DeleteLineModel: {'line_ids'},
|
||||
WarehouseModel: {
|
||||
'warehouse_id',
|
||||
@@ -154,7 +154,7 @@ MASTER_MODEL_FIELDS = {
|
||||
'update_time',
|
||||
'remark',
|
||||
},
|
||||
WarehousePageQueryModel: {'page_num', 'page_size', 'warehouse_code', 'warehouse_name', 'status'},
|
||||
WarehousePageQueryModel: {'page_num', 'page_size', 'warehouse_code', 'warehouse_name', 'status', 'ids'},
|
||||
DeleteWarehouseModel: {'warehouse_ids'},
|
||||
PalletModel: {
|
||||
'pallet_id',
|
||||
@@ -170,7 +170,7 @@ MASTER_MODEL_FIELDS = {
|
||||
},
|
||||
PalletCreateModel: {'pallet_code', 'capacity_packages', 'remark'},
|
||||
PalletEditModel: {'pallet_id', 'capacity_packages', 'asset_status', 'remark'},
|
||||
PalletPageQueryModel: {'page_num', 'page_size', 'pallet_code', 'asset_status'},
|
||||
PalletPageQueryModel: {'page_num', 'page_size', 'pallet_code', 'asset_status', 'ids'},
|
||||
DeletePalletModel: {'pallet_ids'},
|
||||
UserAssignModel: {'user_ids'},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user