import pytest from label_studio.tests.sdk.common import LABEL_CONFIG_AND_TASKS pytestmark = pytest.mark.django_db from label_studio_sdk import Client from label_studio_sdk.data_manager import Column, Filters, Operator, Type def test_create_view(django_live_url, business_client): ls = Client(url=django_live_url, api_key=business_client.api_key) p = ls.start_project(title='New Project', label_config=LABEL_CONFIG_AND_TASKS['label_config']) project = ls.get_project(p.id) filters = Filters.create( Filters.AND, [ Filters.item(Column.id, Operator.GREATER_OR_EQUAL, Type.Number, Filters.value(1)), Filters.item(Column.id, Operator.LESS_OR_EQUAL, Type.Number, Filters.value(100)), ], ) view = project.create_view(title='Test View', filters=filters) assert view['data']['filters'] == { 'conjunction': 'and', 'items': [ {'filter': 'filter:tasks:id', 'operator': 'greater_or_equal', 'type': 'Number', 'value': 1}, {'filter': 'filter:tasks:id', 'operator': 'less_or_equal', 'type': 'Number', 'value': 100}, ], } def test_get_tasks_from_view(django_live_url, business_client): ls = Client(url=django_live_url, api_key=business_client.api_key) p = ls.start_project(title='New Project', label_config=LABEL_CONFIG_AND_TASKS['label_config']) project = ls.get_project(p.id) task_data = [{'data': {'my_text': 'Test task ' + str(i)}} for i in range(10)] p.import_tasks(task_data) tasks = p.get_tasks() filters = Filters.create( Filters.OR, [Filters.item(Column.id, Operator.EQUAL, Type.Number, Filters.value(t['id'])) for t in tasks[::2]], ) project.create_view(title='Test View', filters=filters, ordering=['-' + Column.id]) views = project.get_views() assert len(views) == 1 view = views[0] tasks_from_view = project.get_tasks(view_id=view['id']) assert len(tasks_from_view) == 5 assert tasks_from_view == sorted(tasks[::2], key=lambda t: t['id'], reverse=True)