|
4 | 4 |
|
5 | 5 | from fastapi import HTTPException |
6 | 6 | from sqlalchemy import and_, text, func |
7 | | - |
8 | 7 | from sqlmodel import select |
9 | 8 |
|
10 | | - |
| 9 | +from apps.datasource.crud.permission import get_column_permission_fields, get_row_permission_filters, is_normal_user |
11 | 10 | from apps.datasource.utils.utils import aes_decrypt |
12 | 11 | from apps.db.constant import DB |
13 | 12 | from apps.db.db import get_engine, get_tables, get_fields, exec_sql |
|
20 | 19 | from ..crud.table import delete_table_by_ds_id, update_table |
21 | 20 | from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, CoreField, ColumnSchema, TableObj, \ |
22 | 21 | DatasourceConf, TableAndFields |
23 | | -from apps.datasource.crud.permission import get_column_permission_fields, get_row_permission_filters, is_normal_user |
| 22 | + |
24 | 23 |
|
25 | 24 | def get_datasource_list(session: SessionDep, user: CurrentUser, oid: Optional[int] = None) -> List[CoreDatasource]: |
26 | 25 | current_oid = user.oid if user.oid is not None else 1 |
@@ -249,11 +248,13 @@ def preview(session: SessionDep, current_user: CurrentUser, id: int, data: Table |
249 | 248 | f_list = [f for f in data.fields if f.checked] |
250 | 249 | if is_normal_user(current_user): |
251 | 250 | # column is checked, and, column permission for data.fields |
252 | | - f_list = get_column_permission_fields(session=session, current_user=current_user, table=data.table, fields=f_list) or f_list |
| 251 | + f_list = get_column_permission_fields(session=session, current_user=current_user, table=data.table, |
| 252 | + fields=f_list) or f_list |
253 | 253 |
|
254 | 254 | # row permission tree |
255 | 255 | where_str = '' |
256 | | - filter_mapping = get_row_permission_filters(session=session, current_user=current_user, ds=ds, tables=None, single_table=data.table) |
| 256 | + filter_mapping = get_row_permission_filters(session=session, current_user=current_user, ds=ds, tables=None, |
| 257 | + single_table=data.table) |
257 | 258 | if filter_mapping: |
258 | 259 | mapping_dict = filter_mapping[0] |
259 | 260 | where_str = mapping_dict.get('filter') |
@@ -325,13 +326,12 @@ def get_table_obj_by_ds(session: SessionDep, current_user: CurrentUser, ds: Core |
325 | 326 | fields = session.query(CoreField).filter(and_(CoreField.table_id == table.id, CoreField.checked == True)).all() |
326 | 327 |
|
327 | 328 | # do column permissions, filter fields |
328 | | - fields = get_column_permission_fields(session=session, current_user=current_user, table=table, fields=fields) or fields |
| 329 | + fields = get_column_permission_fields(session=session, current_user=current_user, table=table, |
| 330 | + fields=fields) or fields |
329 | 331 | _list.append(TableAndFields(schema=schema, table=table, fields=fields)) |
330 | 332 | return _list |
331 | 333 |
|
332 | 334 |
|
333 | | - |
334 | | - |
335 | 335 | def get_table_schema(session: SessionDep, current_user: CurrentUser, ds: CoreDatasource) -> str: |
336 | 336 | schema_str = "" |
337 | 337 | table_objs = get_table_obj_by_ds(session=session, current_user=current_user, ds=ds) |
@@ -360,4 +360,5 @@ def get_table_schema(session: SessionDep, current_user: CurrentUser, ds: CoreDat |
360 | 360 | field_list.append(f"({field.field_name}:{field.field_type}, {field_comment})") |
361 | 361 | schema_str += ",\n".join(field_list) |
362 | 362 | schema_str += '\n]\n' |
| 363 | + # todo 外键 |
363 | 364 | return schema_str |
0 commit comments