Lists directories/datasets in a project :param session: :param project_id: :param exclude_archived: :param limit: :param return_kind: :param date_to: :param date_from: :param date_to_string: :param date_from_string:
(
session,
project_id,
member,
exclude_archived = True,
limit = None,
return_kind = "objects",
date_to = None, # datetime
date_from = None, # datetime
date_to_string: str = None,
date_from_string: str = None,
nickname: str = None,
nickname_match_type: str = "ilike", # substring and helps if case Aa is off
order_by_class_and_attribute = None,
order_by_direction = desc,
)
| 126 | |
| 127 | @staticmethod |
| 128 | def list( |
| 129 | session, |
| 130 | project_id, |
| 131 | member, |
| 132 | exclude_archived = True, |
| 133 | limit = None, |
| 134 | return_kind = "objects", |
| 135 | date_to = None, # datetime |
| 136 | date_from = None, # datetime |
| 137 | date_to_string: str = None, |
| 138 | date_from_string: str = None, |
| 139 | nickname: str = None, |
| 140 | nickname_match_type: str = "ilike", # substring and helps if case Aa is off |
| 141 | order_by_class_and_attribute = None, |
| 142 | order_by_direction = desc, |
| 143 | |
| 144 | ): |
| 145 | """ |
| 146 | Lists directories/datasets in a project |
| 147 | :param session: |
| 148 | :param project_id: |
| 149 | :param exclude_archived: |
| 150 | :param limit: |
| 151 | :param return_kind: |
| 152 | :param date_to: |
| 153 | :param date_from: |
| 154 | :param date_to_string: |
| 155 | :param date_from_string: |
| 156 | :param nickname: |
| 157 | :param nickname_match_type: |
| 158 | :param order_by_class_and_attribute: |
| 159 | :param order_by_direction: |
| 160 | :return: |
| 161 | """ |
| 162 | from shared.database.project import Project |
| 163 | project = Project.get_by_id(session = session, id = project_id) |
| 164 | query = session.query(WorkingDir).filter( |
| 165 | WorkingDir.project_id == project_id, |
| 166 | or_(WorkingDir.archived == False, WorkingDir.archived.is_(None)) |
| 167 | |
| 168 | ) |
| 169 | |
| 170 | from shared.database.permissions.roles import ValidObjectTypes |
| 171 | |
| 172 | # Permissions: get datasets that user can see |
| 173 | policy_engine = PolicyEngine(session = session, project = project) |
| 174 | perm_result = policy_engine.get_allowed_object_id_list( |
| 175 | member = member, |
| 176 | object_type = ValidObjectTypes.dataset, |
| 177 | perm = DatasetPermissions.dataset_view |
| 178 | ) |
| 179 | |
| 180 | if nickname: |
| 181 | if nickname_match_type == "ilike": |
| 182 | nickname_search = f"%{nickname}%" |
| 183 | query = query.filter(WorkingDir.nickname.ilike(nickname_search)) |
| 184 | else: |
| 185 | query = query.filter(WorkingDir.nickname == nickname) |
nothing calls this directly
no test coverage detected